Performance von LVM Snapshots

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:

  1. Erzeugen eines Test-Volumes: lvcreate –name perftest -L10G /dev/smet01
  2. Dateisystem: mkfs.ext3 /dev/smet01/perftest
  3. Mountpoint erstellen: mkdir /tmp/perftest
  4. Gemessen wird mit: time (mount /dev/$HOSTNAME/perftest; dd if=/dev/zero of=/tmp/perftest/100M bs=1M count=250;umount /tmp/perftest)
  5. Snapshot erzeugen mit lvcreate –snapshot –name snap-perftest-1 -L1G /dev/smet01/perftest
  6. 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.

2 Gedanken zu „Performance von LVM Snapshots

  1. Stephan

    Das ist sicherlich verfälscht.
    0m0.425s für 100MB ist unrealistisch.
    Deaktivier den Schreibcache mal mit den mount optionen sync, dirsync

    Antworten
  2. self Artikelautor

    Danke für die Mount-Optionen .. aber sooo falsch scheint das Ergebnis nicht zu sein ?

    # mount -l |grep perftest
    /dev/mapper/smet01-perftest on /tmp/perftest type ext3 (rw,sync,dirsync)
    smet01:/tmp# time dd if=/dev/zero of=/tmp/perftest/testfile1g bs=100M count=1
    1+0 records in
    1+0 records out
    104857600 bytes (105 MB) copied, 0.364391 seconds, 288 MB/s

    real 0m0.391s
    user 0m0.000s
    sys 0m0.248s

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.