LVM Snapshots sind eine Möglichkeit ein Dateisystem zu einem bestimmten Zeitpunkt „kostengünstig“ einzufrieren. Das bedeutet, dass der Snapshot an sich ersteinmal garkeinen Platz verbraucht (ganz im Gegenteil zur der Vorgehensweise einfach alle Dateien einmal zu kopieren) – allerdings der vom Snapshot beanspruchte Platz zunimmt, je mehr man an den ursprünglichen Daten ändert. Beim anlegen des Snapshots muss man somit eine Grenze an geben – z.B. 1 GB. Werden mehr Daten als diese Grenze verändert, ist das Abbild unbrauchbar.
Nützlich kann das ganze dafür sein, Benutzern zu ermöglichen alte Dateien aus diesen Abbildern wieder herzustellen, falls Sie diese versehentlich überschrieben hatten.
Das ganze hatte ich so eingerichtet und während dem testen sind so einige Test-Snapshots entstanden. Beim Kopieren des Ubuntu-DVD-Images ist dann aber leider aufgefallen, dass dies ca. 5 Minuten auf einem ansonsten eigentlich relativ hochperformanten System dauert.
Also habe ich mal eine Testreihe gestartet. Die Idee ist, in einem Dateisystem jeweils eine 100MB große Testdatei zu erzeugen und die Zeit zu messen die dies benötigt – in Abhängigkeit der jeweils existierenden Snapshot-Versionen von diesem Dateisystem. Es ist zu beachten, dass man das Dateisystem nach dem Schreiben der Datei schließen (unmounten) sollte, um die Daten wirklich aus dem Speicher auf die Festplatte zu schreiben.
Testablauf:
- Erzeugen eines Test-Volumes: lvcreate –name perftest -L10G /dev/smet01
- Dateisystem: mkfs.ext3 /dev/smet01/perftest
- Mountpoint erstellen: mkdir /tmp/perftest
- Gemessen wird mit: time (mount /dev/$HOSTNAME/perftest; dd if=/dev/zero of=/tmp/perftest/100M bs=1M count=250;umount /tmp/perftest)
- Snapshot erzeugen mit lvcreate –snapshot –name snap-perftest-1 -L1G /dev/smet01/perftest
- neu messen, ggf 4. und 5. sinngemäß wiederholen
Ergebnisse:100 MB Datei erzeugen
- kein Snapshot: Dauer 0m0.425s
- 1 Snapshot: Dauer 0m4.483s
- 2 Snapshot: real 0m13.129s
- 3 Snapshot: real 0m13.909s
- 4 Snapshot: real 0m19.292s
Die Performanceeinbußen haben vermutlich die Ursache, dass alle für Snapshots die alten Daten gespeichert werden müssen. Man sollte das also im Hinterkopf behalten, wenn man diese verwendet. Falls sich von relativ großen Datenmengen üblicherweise nur wenige Ändern, sollte das aber nicht ins Gewicht fallen.
Die genaue Funktionsweise von Snapshots und ein Indiz für die Performanceverschlechterung ist hier erklärt: Anatomy of LVM
Kennt jemand Performancetests für die Windows 2003 Schattenkopien?
Anmerkung: Es ist evtl. möglich das die obigen Testergebnisse durch Speicher-Caches doch irgendwie verfälscht wurden.
LVM Snapshots sind eine Möglichkeit ein Dateisystem zu einem bestimmten Zeitpunkt „kostengünstig“ einzufrieren. Das bedeutet, dass der Snapshot an sich ersteinmal garkeinen Platz verbraucht (ganz im Gegenteil zur der Vorgehensweise...