Benutzer-Werkzeuge

Webseiten-Werkzeuge


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
zfs [2022-11-21 12:06:49] – [ein per Passwort verschlüsseltes Dataset erstellen (ZFS:Linux)] manfredzfs [2025-12-10 17:26:41] (aktuell) – [ZFS-Snapshot erstellen] manfred
Zeile 6: Zeile 6:
     * ... Doch auch andere Betriebssysteme setzen nicht auf das Original-ZFS, sondern auf verschiedene Implementierungen. So nutzt beispielsweise FreeBSD die von dem [[https://www.pro-linux.de/news/1/16000/illumos-projekt-startet.html|Illumos-Projekt]] vorangetriebene Implementierung des Dateisystems, die allerdings OpenZFS hinterherhinkt. Die FreeBSD-Entwickler haben deshalb letztes Jahr [[https://lists.freebsd.org/pipermail/freebsd-current/2018-December/072422.html|beschlossen]], dass die ZFS-Unterstützung von FreeBSD auf OpenZFS - und damit auch >>ZFS On Linux<< - migriert werden soll. Dieser Schritt soll letztendlich auch eine bessere Unterstützung und Funktionalität erzielen und das Open-Source-ZFS-Ökosystem vereinheitlichen. Allan Jude präsentierte auf der EuroBSDCon 2019 die [[https://2019.eurobsdcon.org/slides/The%20Future%20of%20OpenZFS%20and%20FreeBSD%20-%20Allan%20Jude.pdf|Kombination aus OpenZFS + FreeBSD]] und stellte eine Aufnahme der Änderungen in OpenZFS in Aussicht. Die Resultate der Arbeit sind nun letzte Woche in das offizielle Repositorium von OpenZFS eingeflossen und sollen nun als eine gemeinsame Codebasis zwischen Illumos, FreeBSD und Linux dienen. Weitere Systeme wie MacOS und Windows können zu einem späteren Zeitpunkt folgen.     * ... Doch auch andere Betriebssysteme setzen nicht auf das Original-ZFS, sondern auf verschiedene Implementierungen. So nutzt beispielsweise FreeBSD die von dem [[https://www.pro-linux.de/news/1/16000/illumos-projekt-startet.html|Illumos-Projekt]] vorangetriebene Implementierung des Dateisystems, die allerdings OpenZFS hinterherhinkt. Die FreeBSD-Entwickler haben deshalb letztes Jahr [[https://lists.freebsd.org/pipermail/freebsd-current/2018-December/072422.html|beschlossen]], dass die ZFS-Unterstützung von FreeBSD auf OpenZFS - und damit auch >>ZFS On Linux<< - migriert werden soll. Dieser Schritt soll letztendlich auch eine bessere Unterstützung und Funktionalität erzielen und das Open-Source-ZFS-Ökosystem vereinheitlichen. Allan Jude präsentierte auf der EuroBSDCon 2019 die [[https://2019.eurobsdcon.org/slides/The%20Future%20of%20OpenZFS%20and%20FreeBSD%20-%20Allan%20Jude.pdf|Kombination aus OpenZFS + FreeBSD]] und stellte eine Aufnahme der Änderungen in OpenZFS in Aussicht. Die Resultate der Arbeit sind nun letzte Woche in das offizielle Repositorium von OpenZFS eingeflossen und sollen nun als eine gemeinsame Codebasis zwischen Illumos, FreeBSD und Linux dienen. Weitere Systeme wie MacOS und Windows können zu einem späteren Zeitpunkt folgen.
   * [[https://community.oracle.com/docs/DOC-914874|Part 10 - Monitoring and Tuning ZFS Performance]]   * [[https://community.oracle.com/docs/DOC-914874|Part 10 - Monitoring and Tuning ZFS Performance]]
 +
 +
 +===== Installation =====
 +
 +Linux:
 +  > apt install zfsutils-linux zfsnap
 +
 +FreeBSD //(Die ZFS-Tools sind bereits im FreeBSD-Basis-System enthalten)//:
 +  > pkg install sysutils/zfsnap
 +
 +
 +===== Allgemeines =====
 +
 +  > zfs list -s used
 +  > zfs list -S used
  
  
Zeile 26: Zeile 41:
 ==== ZFS mit Verschlüsselung ==== ==== ZFS mit Verschlüsselung ====
  
-ZFS-Pool anlegen:+ZFS-Pool anlegen (ohne Mount-Point):
   > zpool create -m none HDD1000 /dev/sda   > zpool create -m none HDD1000 /dev/sda
   > zpool list HDD1000   > zpool list HDD1000
Zeile 36: Zeile 51:
   HDD1000  encryption   off             default   HDD1000  encryption   off             default
  
-ZFS-Volumen mit Verschlüsselung anlegen:+ZFS-Volumen mit Verschlüsselung anlegen (mit Mount-Point):
   > zfs get 2>&1 | grep -Fi encryption   > zfs get 2>&1 | grep -Fi encryption
           encryption       NO      YES   on | off | aes-128-ccm | aes-192-ccm | aes-256-ccm | aes-128-gcm | aes-192-gcm | aes-256-gcm           encryption       NO      YES   on | off | aes-128-ccm | aes-192-ccm | aes-256-ccm | aes-128-gcm | aes-192-gcm | aes-256-gcm
Zeile 44: Zeile 59:
 Infos über das ZFS-Volumen anzeigen: Infos über das ZFS-Volumen anzeigen:
   > zfs list HDD1000/test   > zfs list HDD1000/test
-  NAME          USED  AVAIL     REFER  MOUNTPOINT +  NAME           USED  AVAIL     REFER  MOUNTPOINT 
-  HDD1000/test  98K   899G       98K  /HDD1000/test+  HDD1000/test   98K   899G       98K  /HDD1000/test
      
   > zfs get mountpoint,compression,encryption HDD1000/test   > zfs get mountpoint,compression,encryption HDD1000/test
-  NAME          PROPERTY     VALUE           SOURCE +  NAME           PROPERTY     VALUE           SOURCE 
-  HDD1000/test  mountpoint   /HDD1000/test   local +  HDD1000/test   mountpoint   /HDD1000/test   local 
-  HDD1000/test  compression  off             default +  HDD1000/test   compression  off             default 
-  HDD1000/test  encryption   aes-256-gcm     -+  HDD1000/test   encryption   aes-256-gcm     -
      
   > zfs list   > zfs list
-  NAME          USED  AVAIL     REFER  MOUNTPOINT +  NAME           USED  AVAIL     REFER  MOUNTPOINT 
-  HDD1000       274K   899G       24K  none +  HDD1000        274K   899G       24K  none 
-  HDD1000/test   98K   899G       98K  /HDD1000/test+  HDD1000/test    98K   899G       98K  /HDD1000/test
  
 ZFS-Volumen wieder löschen: ZFS-Volumen wieder löschen:
Zeile 65: Zeile 80:
  
  
-==== ZFS resize ====+==== ZFS-Snapshot erstellen ==== 
 + 
 +<file bash /root/bin/zfs-snapshot.sh> 
 +#!/bin/bash 
 + 
 +#------------------------------------------------------------------------------# 
 +# Dieses Skript macht von dem ZFS-Pool "mysql_datadir" einen SnapShot. 
 +
 +# Es kann maximal EINER pro Stunde angelegt werden, 
 +# sollte für diesen Zeitraum bereits einer existieren, 
 +# dann wird er vorher gelöscht. 
 +#------------------------------------------------------------------------------# 
 +# zfs snapshot mysql_datadir@4-16 
 +# zfs list -t snapshot mysql_datadir 
 +# mount -t zfs mysql_datadir@7-16 /mnt 
 +# zfs destroy mysql_datadir@4-16 
 +#------------------------------------------------------------------------------# 
 +# Bedeutung von "mysql_datadir@4-16" 
 +# mysql_datadir - ZFS-Pool (Tank) 
 +# 4             - 4. Wochentag -> am Donnerstag aufgenommen 
 +# 16            - zwischen 16:00 und 16:59 Uhr aufgenommen 
 +#------------------------------------------------------------------------------# 
 + 
 +SNAP_ZEIT="$(date +'%u-%H')" 
 +zfs list -Hp | awk '/mysql_datadir/{print $1}' | while read SNAP 
 +do 
 + echo "################################################################################" 
 + echo "snapshot ${SNAP}@${SNAP_ZEIT} erneuern" 
 + zfs destroy ${SNAP}@${SNAP_ZEIT} 
 + zfs snapshot ${SNAP}@${SNAP_ZEIT} 
 +done 
 +echo 
 +  
 +# alle SnapShots anzeigen 
 +zfs list -t snapshot 
 +</file> 
 + 
 + 
 +==== ZFS-Snapshot mounten ==== 
 + 
 +<code bash> 
 +root@mysqlhost01:~# zfs list -t snapshot 
 +NAME                 USED  AVAIL  REFER  MOUNTPOINT 
 +mysql_datadir@3-17     0B      -  10.1M  - 
 + 
 +root@mysqlhost01:~# mount -t zfs mysql_datadir@3-17 /mnt/ 
 + 
 +root@mysqlhost01:~# df -h /mnt/ 
 +Filesystem          Size  Used Avail Use% Mounted on 
 +mysql_datadir@3-17  145G   11M  145G   1% /mnt 
 + 
 +root@mysqlhost01:~# ls -lha /mnt/ 
 +total 13K 
 +drwxr-xr-x  3 mysql mysql    3 Dec  9 17:19 . 
 +drwxr-xr-x 23 root  root  4.0K Dec  9 15:39 .. 
 +drwxr-xr-x  7 mysql mysql   53 Dec 10 16:21 data 
 + 
 +root@mysqlhost01:~# umount /mnt/ 
 + 
 +root@mysqlhost01:~# df -h /mnt/ 
 +Filesystem      Size  Used Avail Use% Mounted on 
 +/dev/sda2        48G   13G   33G  28% / 
 + 
 +root@mysqlhost01:~# ls -lha /mnt/ 
 +total 8.0K 
 +drwxr-xr-x  2 root root 4.0K Aug  5 16:54 . 
 +drwxr-xr-x 23 root root 4.0K Dec  9 15:39 .. 
 +</code> 
 + 
 + 
 +==== ZFS-Snapshot löschen ==== 
 + 
 +<code bash> 
 +root@mysqlhost01:~# zfs list -t snapshot 
 +NAME                 USED  AVAIL  REFER  MOUNTPOINT 
 +mysql_datadir@3-17     0B      -  10.1M  - 
 + 
 +root@mysqlhost01:~# zfs destroy mysql_datadir@3-17 
 + 
 +root@mysqlhost01:~# zfs list -t snapshot 
 +no datasets available 
 +</code> 
 + 
 + 
 +==== ZFS-Pool resize ====
  
 [[https://docs.freebsd.org/en/books/handbook/disks/]] [[https://docs.freebsd.org/en/books/handbook/disks/]]
  
-the resize is triggered by running the online subcommand with -e: +the resize is triggered by running the online subcommand with ''-e''
-  # zpool online -e zroot /dev/ada0p2+<code bash resize> 
 +root@mysqlhost01:~# zpool list 
 + 
 +root@mysqlhost01:~# zpool online -e mysql_datadir /dev/sdb 
 + 
 +root@mysqlhost01:~# zpool list 
 +</code>
  
  
Zeile 175: Zeile 280:
                                                                                        
   Current status: 1 update [-1].   Current status: 1 update [-1].
 +
 +
 +===== Beispiel =====
 +
 +[[https://docs.freebsd.org/de/books/handbook/zfs/]]
 +
 +den Daten-Pool "speicher" anlegen:
 +  > zpool create speicher mirror /dev/ad7 /dev/ad8
 +
 +  > zpool list speicher
 +  > zpool iostat speicher
 +  > zpool status speicher
 +
 +alle Daten auf dem Pool überprüfen und ggf. reparieren:
 +  > zpool scrub speicher
 +
 +auf dem Daten-Pool "speicher" werden 4 ZFS-Volumen eingerichtet:
 +  > zfs create speicher/var
 +  > zfs create speicher/home
 +  > zfs create speicher/tmp
 +  > zfs create speicher/daten
 +
 +die 4 ZFS-Volumen bekommen jeweils einen Mount-Point zugewiesen:
 +  > zfs set mountpoint=/var   speicher/var
 +  > zfs set mountpoint=/home  speicher/home
 +  > zfs set mountpoint=/tmp   speicher/tmp
 +  > zfs set mountpoint=/daten speicher/daten
 +
 +so kannst du eine doppelte Redundanz einstellen, das bringt deutlich mehr Datensicherheit
 +  > zfs set copies=2 speicher/home
 +
 +so kannst du Kompression einstellen:
 +  > zfs set compression=gzip speicher/home
 +
 +einen SnapShot von ''home'' erstellen:
 +  > zfs snapshot speicher/home@$(date +'%F_%H-%M-%S')
 +
 +alle SnapShots von ''home'' anzeigen:
 +  > zfs list -rt snapshot speicher/home
 +  NAME                                USED  AVAIL  REFER  MOUNTPOINT
 +  speicher/home@2024-04-04_22-59-45     0B      -  24.0M  -
 +
 +den SnapShots mounten:
 +  > mount -t zfs speicher/home@2024-04-04_22-59-45 /mnt
 +  > ls -lha /mnt
 +  > umount /mnt
 +
 +den SnapShots löschen:
 +  > zfs destroy speicher/home@2024-04-04_22-59-45
 +  
 +  > zfs list -rt snapshot speicher/home
 +  no datasets available
 +
 +nur das eine ZFS-Volumen "daten" (''-r'' => samt seiner SnapShots) auf dem Daten-Pool "speicher" löschen:
 +  > zfs destroy -r speicher/daten
 +
 +alle ZFS-Volumen (''-r'' => samt ihrer SnapShots) auf dem Daten-Pool "speicher" löschen:
 +  > zfs destroy -r speicher
 +
 +den ganzen Daten-Pool "speicher" (samt seiner ZFS-Volumen) löschen:
 +  > zpool destroy speicher
  
  
/home/http/wiki/data/attic/zfs.1669032409.txt · Zuletzt geändert: von manfred