it-wiki:linux:zfs
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
it-wiki:linux:zfs [2021/03/18 09:28] – [Umwandeln eines Rpool Singledisk in einen Mirror inkl. Autoexpand] marko | it-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/ | ||
---- | ---- | ||
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 bash> | <code bash> | ||
vim / | vim / | ||
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 |
</ | </ | ||
+ | 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 | ||
+ | </ | ||
===== 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 305: | Zeile 313: | ||
| zfs list -r -t snapshot -o name, | | zfs list -r -t snapshot -o name, | ||
| zfs get volsize v-machines/ | | zfs get volsize v-machines/ | ||
- | | zfs set volsize=32g v-machines/ | + | | zfs set volsize=32g v-machines/ |
- | (Blockdevice) | | + | | zfs create -V 5gb tank/ |
- | | zfs create -V 5gb tank/ | + | |
- | (Blockdevice) | | + | |
| zfs set quota=50g tank/ | | zfs set quota=50g tank/ | ||
| zfs rename -p rpool/test rpool/ | | zfs rename -p rpool/test rpool/ | ||
Zeile 319: | 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/ | zfs snapshot rpool/ | ||
</ | </ | ||
- | 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 | NAME | ||
Zeile 421: | Zeile 427: | ||
</ | </ | ||
- | Im nächsten | + | Im nächsten |
<code bash> | <code bash> | ||
zfs send rpool/ | zfs send rpool/ | ||
</ | </ | ||
- | Danach kann man auf beiden | + | Danach kann man auf beiden |
<code bash> | <code bash> | ||
zfs destroy rpool/ | zfs destroy rpool/ | ||
Zeile 446: | Zeile 452: | ||
</ | </ | ||
- | 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/ | zfs diff backup/ | ||
</ | </ | ||
- | Danach sollten Änderungen angezeigt werden. Wird hier nichts angezeigt, ist der Inhalt ok. Dann aber sein das Features am Ziel aktiviert | + | Danach sollten Änderungen angezeigt werden. Wird hier nichts angezeigt, ist der Inhalt ok. Kann aber sein das Features am Ziel aktiviert |
<code bash> | <code bash> | ||
zfs rollback backup/ | zfs rollback backup/ | ||
Zeile 626: | Zeile 632: | ||
Autoreplace ersetzt automatische eine defekte Platte aus einem Zpool. Hierfür ist aber ein eingener [[http:// | Autoreplace ersetzt automatische eine defekte Platte aus einem Zpool. Hierfür ist aber ein eingener [[http:// | ||
+ | |||
+ | ===== Proxmox spezifisches ===== | ||
+ | ---- | ||
+ | |||
+ | Unter Proxmox wird LVM defaultmäßing mitinstalliert, | ||
+ | <code bash> | ||
+ | nano / | ||
+ | filter = [ " | ||
+ | </ | ||
+ | |||
+ | Auf jeden sollte auch eine Überwachung der [[https:// | ||
+ | |||
+ | ==== 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=/ | ||
+ | zfs mount rpool/ | ||
+ | </ | ||
+ | |||
+ | Wir führen unsere Änderungen durch, und hängen aus und switchen zurück. | ||
+ | <code bash> | ||
+ | zfs umount rpool/ | ||
+ | zfs set mountpoint=/ | ||
+ | </ | ||
+ | |||
+ | 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/ | ||
+ | </ | ||
+ | |||
+ | Für IPV6 können als Source nur mehr FQDN verwendet werden. | ||
+ | |||
+ | Bei einem bestehenden Dataset: | ||
+ | <code bash> | ||
+ | zfs set sharenfs=" | ||
+ | </ | ||
+ | |||
+ | Für eine einfache Freigabe: | ||
+ | <code bash> | ||
+ | zfs set sharenfs=on testpool/ | ||
+ | </ | ||
+ | |||
+ | Um eine Freigabe zu beenden: | ||
+ | <code bash> | ||
+ | zfs set sharenfs=off testpool/ | ||
+ | </ | ||
+ | |||
+ | 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 / | ||
+ | </ | ||
+ | <code bash> | ||
+ | zfs get sharenfs # kann auch mit weiteren Optionen kombiniert werden | ||
+ | </ | ||
+ | |||
+ | Von einem anderen Host: | ||
+ | <code bash> | ||
+ | showmount | ||
+ | </ | ||
+ | |||
+ | ===== 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: | ||
+ | </ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | --- // |
it-wiki/linux/zfs.1616059695.txt.gz · Zuletzt geändert: 2021/03/18 09:28 von marko