Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:zfs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:zfs [2022/02/01 14:22] – +Special Device + TRIM ckolblinux:zfs [2022/06/03 08:28] (aktuell) – [kleine Blöcke auf Special Device auslagern] Tippfehler beseitigt ckolb
Zeile 40: Zeile 40:
 Auf dem Special-Device werden die Metadaten gespeichert. Dadurch ggf. enormer Performance-gewinn. Das Redundanzlevel sollte dem des Pools entsprechen, da beim Ausfall der komplette Pool verloren ist. Auf dem Special-Device werden die Metadaten gespeichert. Dadurch ggf. enormer Performance-gewinn. Das Redundanzlevel sollte dem des Pools entsprechen, da beim Ausfall der komplette Pool verloren ist.
 Die nötige Kapazität der SSD hängt vom Datenbestand ab. Falls die SSD voll ist, werden weitere Metadaten auf den Haupt-Pool geschrieben. Die nötige Kapazität der SSD hängt vom Datenbestand ab. Falls die SSD voll ist, werden weitere Metadaten auf den Haupt-Pool geschrieben.
 +==== kleine Blöcke auf Special Device auslagern ====
 +Um die Performance beim schreiben/lesen von (sehr) kleinen Dateien zu verbessern, können kleine Datenblöcke auf dem Special Device, statt auf den normalen Datasets gespeichert werden.
 +Dazu gibt man die maximale Größe von Blöcken an, die auf dem Special Device gespeichert werden sollen. Blöcke, die größer als die angegebene Größe sind, werden auf den regulären Datasets gespeichert. Datenblöcke mit max. der angegebenen Größe werden auf dem Special Device gespeichert.
 +<code bash>zfs set special_small_blocks=16K pool</code>
 +Ab jetzt werden Blöcke bis 16kB auf dem Special Device gespeichert.
 +Es ist möglich, diese Option für jedes Dataset separat und unabhängig einzustellen.
  
 +**ACHTUNG:** Die angegebene Blockgröße ''special_small_blocks'' solte immer kleiner sein, als die Blockgröße des Pools (standard: 128K)!
 +Wenn ''special_small_blocks'' gleich der Blockgröße des Pools gesetzt wird, wird ALLES ins Special Device geschrieben!
 ===== TRIM für SSDs ===== ===== TRIM für SSDs =====
-<code bash>zpool set autotrim=on pool</code> 
 Wenn man einen SSD-Pool hat, kann es sinnvoll sein, TRIM zu aktivieren. Dies kann die Schreibperformance verbessern. Wenn man einen SSD-Pool hat, kann es sinnvoll sein, TRIM zu aktivieren. Dies kann die Schreibperformance verbessern.
 +''autotrim'' meldet der SSD nach einem Löschvorgang automatisch nicht mehr benötigte Blöcke. Dies ist ein schneller Vorgang, weil nur Blöcke gemeldet werden, die gerade gelöscht wurden.
 +<code bash>zpool set autotrim=on pool</code>
 Einstellung kann überprüft werden mit: Einstellung kann überprüft werden mit:
 <code bash>zpool get autotrim</code> <code bash>zpool get autotrim</code>
 +
 +Auf Debian gibt es noch die Option ''periodic-trim''. Dies kann aktiviert werden mit
 +<code bash>zfs set org.debian:periodic-trim=enable pool</code>
 +Wenn man diese Option aktiviert, wird der Pool am ersten Sonntag im Monat vollständig getrimmt.
 +
 +Die beiden Optionen ''autotrim'' und ''periodic-trim'' dürfen beide zusammen aktiviert werden. Dann werden die SSDs nach jedem löschen schnell getrimmt, und jeden Monat noch mal vollständig.
 +
 +Es ist auch möglich einen Pool manuell zu trimmen. Dazu führt man folgendes Kommando aus.
 +<code bash>zpool trim pool</code>
 ===== Datasets erstellen ===== ===== Datasets erstellen =====
 Es ist empfehlenswert direkt in den Pools keine Daten zu speichern, da sonst einige tolle Funktionen von ZFS nicht sinnvoll genutzt werden können. Daher sollte man sogenannte Datasets anlegen. Diese stellen quasi Unterdateisysteme dar. Es kann z.B. auch sinnvoll sein für jeden Benutzer ein eigenes Dataset unter ''/home'' zu erstellen. Dadurch ist es auch sehr einfach möglich, für jeden Benutzer ein individuelles Quota einzurichten. Es ist empfehlenswert direkt in den Pools keine Daten zu speichern, da sonst einige tolle Funktionen von ZFS nicht sinnvoll genutzt werden können. Daher sollte man sogenannte Datasets anlegen. Diese stellen quasi Unterdateisysteme dar. Es kann z.B. auch sinnvoll sein für jeden Benutzer ein eigenes Dataset unter ''/home'' zu erstellen. Dadurch ist es auch sehr einfach möglich, für jeden Benutzer ein individuelles Quota einzurichten.
Zeile 76: Zeile 94:
 ==== ZVOL erstellen ==== ==== ZVOL erstellen ====
 Ein ZVOL mit einer Kapazität von 10GB auf dem Pool "pool" erstellen: Ein ZVOL mit einer Kapazität von 10GB auf dem Pool "pool" erstellen:
-<code bash>zfs create -V 10G pool/vm_1</code>+<code bash>zfs create -V 10G pool/zvol_1</code>
 Die Abbilder finden sich unter /dev/zvol/"poolname"/"ZVOLname". Die Abbilder finden sich unter /dev/zvol/"poolname"/"ZVOLname".
 Also z.B. "/dev/zvol/pool/vm_1". Also z.B. "/dev/zvol/pool/vm_1".
 +
 +==== ZVOL für VMs ====
 +Gängige Dateisysteme verwenden eine Blockgröße von 4 kiB (4096 Bytes). Die standardblockgröße von ZVOLs ist aber 8kiB (8192 Bytes).
 +Um optimale performannce zu erreichen, sollten ZVOLs für VMs mit einer Blockgröße von 4kiB erzeugt werden.
 +Die Blockgröße eines ZVOL kann nachträglich nicht mehr geändert werden.
 +<code bash>zfs create -b 4K -V 10G pool/vm_1</code>
 ==== ZVOL vergrößern ==== ==== ZVOL vergrößern ====
 Das ZVOL "vm_1" auf "pool" auf 20GB vergrößern: Das ZVOL "vm_1" auf "pool" auf 20GB vergrößern:
linux/zfs.1643725322.txt.gz · Zuletzt geändert: 2022/02/01 14:22 von ckolb

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki