Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki: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
it-wiki:linux:zfs [2021/03/18 10:01] – [Die wichtigsten ZFS-Befehle auf einen Blick] markoit-wiki:linux:zfs [2023/11/22 07:42] (aktuell) – [Memorylimit setzen] marko
Zeile 33: Zeile 33:
  
 ===== Memorylimit setzen ===== ===== Memorylimit setzen =====
 +<note tip>As a general rule of thumb, allocate at least 2 GiB Base + 1 GiB/TiB-Storage. For example, if you have a pool with 8 TiB of available storage space then you should use 10 GiB of memory for the ARC.</note>
 ---- ----
  
Zeile 45: Zeile 46:
  
 Wenn man möchte kann man ZFS ein Memorylimit setzten. Wenn man möchte kann man ZFS ein Memorylimit setzten.
 +<code bash>
 +echo "$[10 * 1024*1024*1024]"
 +</code>
 <code bash> <code bash>
 vim  /etc/modprobe.d/zfs.conf vim  /etc/modprobe.d/zfs.conf
Zeile 58: Zeile 62:
 Danach noch die initram updaten und rebooten. Danach noch die initram updaten und rebooten.
 <code bash> <code bash>
-update-initramfs -u+update-initramfs -u -k all
 </code> </code>
  
 +Wenn man ein EFI system verwendet muss die Kernel-Liste im EFI Bootmenü aktualisiert werden, damit das aktualisierte anfängliche RAM-Dateisystem verwendet wird.
 +<code bash>
 +pve-efiboot-tool refresh
 +</code>
 ===== Anlegen eines neuen Pools im Raid10 und hinzufügen zweier weiteren Festplatten ===== ===== Anlegen eines neuen Pools im Raid10 und hinzufügen zweier weiteren Festplatten =====
 ---- ----
Zeile 317: Zeile 325:
 ---- ----
  
-Snapshots eigenes sich hervorragend für die Datensicherung oder auch wenn man was testet oder auch nur Updates fährt. Man kann sofort wieder zurück. Um nun ein Snapshot von unserem Rootfilesystem zu erstellen geht von wie folgt vor:+Snapshots eigenes sich hervorragend für die Datensicherung oder auch wenn man was testet oder auch nur Updates fährt. Man kann sofort wieder zurück. Um nun ein Snapshot von unserem Rootfilesystem zu erstellen geht man wie folgt vor:
 <code bash> <code bash>
 zfs snapshot rpool/ROOT/pve-1@Freitag zfs snapshot rpool/ROOT/pve-1@Freitag
 </code> </code>
  
-Man generiert Snapshots immer von einem Dataset. Der ZFSpool kann ja mehreren Datasets bestehen. Wie bei unserer Testmaschine hier:+Man generiert Snapshots immer von einem Dataset. Der ZFSpool kann ja aus mehreren Datasets bestehen. Wie bei unserer Testmaschine hier:
 <code bash> <code bash>
 NAME                       USED  AVAIL  REFER  MOUNTPOINT NAME                       USED  AVAIL  REFER  MOUNTPOINT
Zeile 419: Zeile 427:
 </code> </code>
  
-Im nächsten beispiel befinden wir uns auf dem Server node2.tux.local. Am node1.tux.local ist eine 8TB Festplatte mit einem Pool eingebunden für externe Backups. Um nun die Festplatte nicht umstecken zu müssen, kann das ganze einfach in SSH pipen. Natürlich vorher neues Snapshot zum Abgleich erstellen.+Im nächsten Beispiel befinden wir uns auf dem Server node2.tux.local. Am node1.tux.local ist eine 8TB Festplatte mit einem Pool eingebunden für externe Backups. Um nun die Festplatte nicht umstecken zu müssen, kann das ganze einfach in SSH pipen. Natürlich vorher neues Snapshot zum Abgleich erstellen.
 <code bash> <code bash>
 zfs send rpool/ROOT/pve-1@halbjahresbackup rpool/ROOT/pve-1@halbjahresbackup1 | ssh node1.tux.local zfs receive backup/pve-1-node1 zfs send rpool/ROOT/pve-1@halbjahresbackup rpool/ROOT/pve-1@halbjahresbackup1 | ssh node1.tux.local zfs receive backup/pve-1-node1
 </code> </code>
  
-Danach kann man auf beiden seiten das alte Snapshot löschen. Muss man natürlich nicht, wenn man mal weiter zurück möchte.+Danach kann man auf beiden Seiten das alte Snapshot löschen. Muss man natürlich nicht, wenn man mal weiter zurück möchte.
 <code bash> <code bash>
 zfs destroy rpool/ROOT/pve-1@halbjahresbackup zfs destroy rpool/ROOT/pve-1@halbjahresbackup
Zeile 444: Zeile 452:
 </code> </code>
  
-So kann sich die Änderungen mit diff ausgeben lassen.+So kann man sich die Änderungen mit diff ausgeben lassen.
 <code bash> <code bash>
 zfs diff backup/home@halbjahresbackup backup/home zfs diff backup/home@halbjahresbackup backup/home
 </code> </code>
  
-Danach sollten Änderungen angezeigt werden. Wird hier nichts angezeigt, ist der Inhalt ok. Dann aber sein das Features am Ziel aktiviert hat, das wäre auch schon eine Änderung. Man hat nun zwei Möglichkeit. Man kann mit der Option „-F“ das ganze forcen. Dann wird aber auch am Ziel auf der receive seite automatisiert den rollback durchführt, sorgt aber auch dafür dass snapshots die auf der Quelle nicht mehr vorhanden sind am Ziel gelöscht werden. Ich habe mich hier für die zweite Variante entschieden wo einfach am Ziel ein Rollbackup des Snapshots durchgeführt habe:+Danach sollten Änderungen angezeigt werden. Wird hier nichts angezeigt, ist der Inhalt ok. Kann aber sein das Features am Ziel aktiviert sind, das wäre auch schon eine Änderung. Man hat nun zwei Möglichkeit. Man kann mit der Option „-F“ das ganze forcen. Dann wird aber auch am Ziel auf der receive seite automatisiert den rollback durchführt, sorgt aber auch dafür dass snapshots die auf der Quelle nicht mehr vorhanden sind am Ziel gelöscht werden. Ich habe mich hier für die zweite Variante entschieden wo einfach am Ziel ein Rollbackup des Snapshots durchgeführt habe:
 <code bash> <code bash>
 zfs rollback backup/home@halbjahresbackup zfs rollback backup/home@halbjahresbackup
Zeile 635: Zeile 643:
  
 Auf jeden sollte auch eine Überwachung der [[https://pve.proxmox.com/wiki/Disk_Health_Email_Alerts|Smart-Werte]] konfiguriert werden. Auf jeden sollte auch eine Überwachung der [[https://pve.proxmox.com/wiki/Disk_Health_Email_Alerts|Smart-Werte]] konfiguriert werden.
 +
 +==== Proxmox Rescue ZFS ====
 +----
 +
 +Sollte die Maschine, aus was für einen Grund auch immer nicht mehr ins System hoch booten, und auch keine Busybox zur Verfügung stehen, kann man sich mit einem auf USB installierten PVE helfen, oder auch ein anderes ZFS fähiges OS verwenden. Solaris funktioniert nicht, da Solaris eine viel zu alte Version von ZFS verwendet, und somit nicht kompatibel ist. PCBSD wurde nicht getestet, sollte aber auch funktionieren.
 +
 +Hat man mit seinem PVE Stick gebootet werden sämtliche Zpools automatisch eingebunden und gemounted. Möchte man aber auf dem Rpool Dinge ändern, muss man den Mountpoint anders setzten. Da sich der Rpool ja auf „/“ mounten möchte und das natürlich nicht geht da dieser Slot schon von unserem Sticksystem besetzt ist. Um nun trotzdem auch auf diesen Teil Zugriff zu bekommen ändern wir einfach kurzfristig den Mountpoint.
 +<code bash>
 +zfs set mountpoint=/mnt rpool/ROOT/pve-1
 +zfs mount rpool/ROOT/pve-1
 +</code>
 +
 +Wir führen unsere Änderungen durch, und hängen aus und switchen zurück.
 +<code bash>
 +zfs umount rpool/ROOT/pve-1
 +zfs set mountpoint=/ rpool/ROOT/pve-1
 +</code>
 +
 +Natürlich bevor wir das alles erledigen möge man sich vorher erkundigen ob noch etwaige Zusatzdatasets auf Root zeigen. Diese müssen vorher ausgehängt werden.
 +
 +===== sharenfs =====
 +----
 +
 +Nutzt man ZFS als Dateisystem ist es klug die „sharenfs“ Funktion von ZFS direkt statt dem System Export zu verwenden. Da hier die zeitliche Abfolge beim Systemstart immer optimal ist. Um eine Freigabe zu erstellen inkl. eines Datasets zu erstellen bedient man sich folgendem Befehl:
 +<code bash>
 +zfs create testpool/testnfs -o sharenfs="rw=@hostname1.local,rw=@192.168.1.3,no_root_squash,no_subtree_check,async"
 +</code>
 +
 +Für IPV6 können als Source nur mehr FQDN verwendet werden.
 +
 +Bei einem bestehenden Dataset:
 +<code bash>
 +zfs set sharenfs="rw=@hostname1.local,rw=@192.168.1.3,no_root_squash,no_subtree_check,async" testpool/testnfs
 +</code>
 +
 +Für eine einfache Freigabe:
 +<code bash>
 +zfs set sharenfs=on testpool/testnfs
 +</code>
 +
 +Um eine Freigabe zu beenden:
 +<code bash>
 +zfs set sharenfs=off testpool/testnfs
 +</code>
 +
 +Das Dataset löschen, löscht natürlich auch die Freigabe. Um zu sehen welche Freigaben nun aktiv sind gibt es mehrere Möglichkeiten. Am Host selbst:
 +<code bash>
 +cat /etc/dfs/sharetab
 +</code>
 +<code bash>
 +zfs get sharenfs # kann auch mit weiteren Optionen kombiniert werden
 +</code>
 +
 +Von einem anderen Host:
 +<code bash>
 +showmount  -e hostname.local
 +</code>
 +
 +===== Swap =====
 +----
 +
 +Swap direkt auf ZFS erstellen. Empfohlen, genug RAM, oder Swap auf einem nicht ZFS-Filesystem.
 +<code bash>
 +zfs create -V 8G -b $(getconf PAGESIZE) -o compression=zle -o logbias=throughput -o sync=always -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false v-machines/swap
 +</code>
 +\\
 +\\
 +\\
 + --- //[[marko.oldenburg@cooltux.net|Marko Oldenburg]] 2023/02/11 08:23//
it-wiki/linux/zfs.1616061667.txt.gz · Zuletzt geändert: 2021/03/18 10:01 von marko