Re: Fehlermeldung beim Mounten von Memory-Disk

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 12 Sep 2006 18:30:00 +0200 (CEST)

Nicola wrote:
> > > Vielleicht ist es auch nicht so schlau einen Snapshot
> > > in eine MD zu mounten
> > Doch, das sollte eigentlich problemlos klappen.
>
> Mir ist jetzt bei dieser Prozedur einmal die Kiste sang und klanglos
> hängengeblieben. Nix ging mehr ausser Reset Knopf. Nun frage ich mich ob das
> verbaute Kingston Memory "einen Hau" hat oder ob es vielleicht doch Probleme
> geben kann.

Ein »Freeze« (ohne Panic) ist tatsächlich häufig ein Zei-
chen für ein Hardware-Problem. Insofern ist der Verdacht
auf defektes RAM nicht unberechtigt.

> Allerdings auf einer anderen Maschien läuft diese Anordnung
> Problemlos:
>
> - Snapshot machen
> - Snapshot in Memory Disk mounten
> - Von Snapshot Daten auf eine andere Platte duplizieren (spiegeln)

Das ist eine ganz übliche Prozedur und sollte funktionie-
ren. Welche FreeBSD-Version hast Du eigentlich genau?
In 6-stable (RELENG_6) gab es vor einigen Wochen (oder
Monaten) ein paar Bugfixes, die Snapshots betrafen.

> "Eigentlich" kann der Snapshot ja nie sehr groß sein, weil er ja nur die
> Differenz zur Veränderungen zwischen Erstellung und Zeitpunkt der
> Duplizierung enthält.

Das kommt darauf an, was Du mit »Größe des Snapshots«
meinst. Der physikalisch belegte Platz entspricht dem
Umfang der Daten, die seit dem Zeitpunkt des Erstellens
des Snapshots gelöscht oder verändert wurden (plus einige
Verwaltungsdaten). Wobei allerdings solche Daten auch
mehreren Snapshots zugleich gehören können (fals Du mehrere
hast), insofern ist es schwierig, einem Snapshot eine be-
stimmte physikalische Größe zuzuordnen. Das ist so ähn-
lich wie mit der Größe von Prozessen, die ja meistens auch
gemeinsame Pages im RAM belegen.

Wenn Du dagegen die »virtuelle« Größe meinst (d.h. die
Größe des Images, das der Snapshot darstellt), dann ist
ein Snapshot grundsätzlich exakt genauso groß wie das
Dateisystem, von dem er erzeugt wurde. Wenn Du mit
mdconfig(8) aus dem Snapshot ein Device erzeugst, dann
hat dieses Device die Größe des ursprünglichen Datei-
systems.

Mal ein Beispiel. Angenommen, Du hast ein Dateisystem,
das 80 GB groß ist, von dem die Hälfte (40 GB) belegt
sind. Nun erzeugst Du einen Snapshot. Danach löschst
Du 10 GB aus dem Dateisystem, und außerdem modifizierst
Du weitere 10 GB. Das Dateisystem enthält jetzt nur noch
zu 30 GB. Der Snapshot belegt 20 GB (physikalisch) auf
der Festplatte, nämlich die gelöschten 10 GB plus die
Originalinhalte der modifizierten 10 GB.

Nun benutzt Du mdconfig(8). Es erzeugt ein virtuelles
Device (z.B. /dev/md0), das den Snapshot repräsentiert.
Dieses Device verhält sich genauso wie ein richtiges
Dateisystem (d.h. eine Partition einer Festplatte).
Wenn man auf Blöcke dieses Devices zugeift, werden diese
entsprechend übersetzt (sozusagen umgeleitet): Blöcke,
die nicht verändert wurden, werden eins-zu-eins aus dem
normalen Dateisystem geliefert, die restlichen werden
auf die Blöcke »umgebogen«, die dem Snapshot gehören.
Du kannst das Device z.B. mit dd(1)

Wenn Du das Device mountest, siehst Du, dass es exakt
genauso gross ist wie das Original-Dateisystem (80 GB).

Anstatt es zu mounten, kannst das das Device auch z.B.
mit dd(1) auf eine andere Platte kopieren, oder in eine
Datei (die dann 80 GB groß sein würde).

Nochmal zu mdconfig, da es da ein Verständnisproblem
zu geben scheint: Der Zweck von »mdconfig -t vnode« ist,
aus einer normalen Datei einen Device-Node (/dev/md*) zu
erzeugen. Diese normale Datei kann ein beliebiges Image
sein, z.B. ein ISO9660-Image, ein Foppy-Image, oder ein
Image einer UFS-Partition. Auch ein Snapshot verhält sich
genauso wie ein Image einer UFS-Partition. Man kann aber
eine Datei nicht direkt mounten; das geht nur mit einem
Device. Daher braucht man mdconfig(8), um ein solches
Device zu erzeugen, das man dann mounten kann.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
$ dd if=/dev/urandom of=test.pl count=1
$ file test.pl
test.pl: perl script text executable
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 12 Sep 2006 - 18:32:21 CEST

search this site