Wie kann die Größe des AIX-JFS2-Snapshots kleiner sein als die Datengröße im FS?

Wie kann die Größe des AIX-JFS2-Snapshots kleiner sein als die Datengröße im FS?

Auf jedem Betriebssystem erstelle ich Snapshots, die größer sind als der belegte FS-Speicherplatz. Beispiel: Wenn ich ein FS mit dem Namen /try mit 250 GB habe, der belegte Speicherplatz aber 100 GB beträgt, erstelle ich einen Snapshot mit 100 GB oder etwas mehr. Unter AIX erstelle ich einen Snapshot mit einer Größe unterhalb des belegten FS-Speicherplatzes ... und es funktioniert. Auf einem logischen Volume mit 2 GB erstelle ich eine Datei mit 590 MB

dd if=/dev/zero of=hello bs=1m count=590
590+0 records in
590+0 records out

dann erstelle ich den Snapshot von 256mb statt 590MB oder mehr

snapshot -o snapfrom=/try -o size=256m 
Snapshot for file system /try created on /dev/fslv00

df melde die korrekte Größe des FS "try"

df -hT /try
/dev/try     jfs2    2,0G  591M    1,5G  29% /try

Ich kann den Snapshot mounten

mount -o snapshot /dev/fslv00 /mnt/

DF-Berichtsgröße von 256 MB für den Snapshot, aber mit 1,5 MB Nutzung!

df -hT /mnt
/dev/fslv00    jfs2  256M  1,5M    255M   1% /mnt

Für den letzten Versuch habe ich eine MD5-Summenprüfung einer Datei durchgeführt … und das funktioniert sowohl für Snapshots als auch für echte Dateisysteme.

b7fb2207c641085a9cf02064edf1742e  /mnt/hello
b7fb2207c641085a9cf02064edf1742e  /try/hello

Die Fragen sind einfach: Wie kann die Snapshot-Größe kleiner sein als die Größe des realen Dateisystems? Warum ist der Speicherplatz auf dem Snapshot (1,5 MB) kleiner als der belegte Speicherplatz (591 MB) des realen Dateisystems?

Antwort1

Lösung gefunden. Es ist „möglich“, einen Snapshot mit einer Größe unterhalb der verwendeten FS-Größe des realen FS zu erstellen, aber es ist völlig nutzlos. Wenn ich die Originaldatei /try/hello lösche, wird die Snapshot-Größe groß (aufgrund der Übertragung der Dateiblöcke), aber weil ich sie unterhalb der Größe des realen FS erstellt habe, wird das FS voll und die Datei „hello“ wird beschädigt und gibt einen E/A-Fehler zurück.

df -hT /mnt
/dev/fslv00    jfs2    256M  256M     0 100% /mnt

md5sum /mnt/hello 
md5sum_64: /mnt/hello: There is an input or output error.

verwandte Informationen