Dateisystem der Zukunft?

Neun Argumente für ZFS

02.11.2012
Von Heiko Wüst

Copy-On-Write statt batteriegepufferter Speicher (NVRAM)

Eng mit dem vorangegangenen Thema der Datenintegrität hängt auch das Thema zusammen, wie Informationen geschrieben werden. Herkömmliche Storage-Systeme nutzen das Read-Write-Modify-Verfahren. Das heißt, originale Blöcke werden während einer Schreiboperation mit neuen Daten überschrieben. Ein klassisches "RAID-5 Write Hole" entsteht, wenn das System zwischen der Änderung von Daten und der Neuberechnung der Paritätsdaten ausfällt. Die Folge sind falsche Paritätsdaten. Wenn jemals die Originaldaten mit diesen falschen Daten wiederhergestellt werden sollen, kommen komplett unbrauchbare Daten heraus. Fehler werden immer erst erkannt, wenn die Daten bereits verloren sind. Dagegen helfen soll in herkömmlichen Systemen ein batteriegepufferter Speicher (NVRAM). Er hilft gegen Stromausfälle, aber nicht gegen Systemausfälle aus anderen Gründen.

ZFS vermeidet dieses Problem von vornherein, indem es nie die ursprünglichen mit den neuen Daten überschreibt. Dieses Verfahren nennt sich Copy-On-Write. Stattdessen werden die geänderten Daten neu allokiert und der gesamte Prüfsummenbaum neu berechnet. Auf diese Weise sind Daten in ZFS stets konsistent und es wird kein NVRAM in der Hardware benötigt, das die Speichermedien teurer macht.

Für schnelleres Schreiben kommt bei ZFS das "Copy-On-Write Transactional I/O Model" zu Hilfe. Wenn aktive durch neue Daten ersetzt werden sollen, wird ein neuer Block zugewiesen. Die Metadaten als Referenz des Originals ändern sich, um auf den neuen Block zu verweisen. Als Resultat sind die meisten I/Os in ZFS sequentiell und deshalb schneller zu finden. Außerdem nutzt ZFS ein Log, in dem alle Schreiboperationen gelistet sind. Im Falle eines Fehlers wird dieses Log genutzt, um die befallenen Blöcke ohne manuelle Eingriffe wiederherzustellen.