Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
server_und_serverdienste:linux_zfs [2018/06/18 00:02] – [sharenfs] boospy | server_und_serverdienste:linux_zfs [2021/09/21 11:19] – loma | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
====== Linux ZFS ====== | ====== Linux ZFS ====== | ||
+ | Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-o. Gerne. Wir bedanken uns bei dir für deine Spende! LOL \\ | ||
+ | [[https:// | ||
+ | \\ | ||
+ | Hauseigenes Apt-Repo: [[https:// | ||
+ | \\ | ||
+ | GITLAB Enterprise: [[https:// | ||
+ | \\ | ||
+ | \\ | ||
ZFS (ursprünglich Zettabyte File System) wird oft als Dateisystem angesehen, was im Grunde genommen ein Missverständnis darstellt. ZFS kann ein Dateisystem sein, aber beherrscht auch noch einiges mehr. Es vereint die Funktionalität eines Logical Volume Managers und eines Software-RAID mit einem Copy-on-Write-Dateisystem (COW). Das heißt, dass es (aufgrund seiner Kenntnisse der Festplattenbelegung) effizienter als jedes Hardware-RAID arbeitet, Daten-Integrität per Transaktionen ähnlich wie bei relationalen Datenbanken sichert und im Falle von Daten-Redundanz (Mehrfachspeicherung) sogar selbständig Daten repariert. | ZFS (ursprünglich Zettabyte File System) wird oft als Dateisystem angesehen, was im Grunde genommen ein Missverständnis darstellt. ZFS kann ein Dateisystem sein, aber beherrscht auch noch einiges mehr. Es vereint die Funktionalität eines Logical Volume Managers und eines Software-RAID mit einem Copy-on-Write-Dateisystem (COW). Das heißt, dass es (aufgrund seiner Kenntnisse der Festplattenbelegung) effizienter als jedes Hardware-RAID arbeitet, Daten-Integrität per Transaktionen ähnlich wie bei relationalen Datenbanken sichert und im Falle von Daten-Redundanz (Mehrfachspeicherung) sogar selbständig Daten repariert. | ||
Zeile 41: | Zeile 48: | ||
===== Memorylimit setzen ===== | ===== Memorylimit setzen ===== | ||
+ | Genaue Info zu den aktuellen Werten bekommt man mit: | ||
+ | arcstat | ||
+ | oder | ||
+ | arc_summary | ||
Wenn man möchte kann man ZFS ein Memorylimit setzten. | Wenn man möchte kann man ZFS ein Memorylimit setzten. | ||
Zeile 46: | Zeile 57: | ||
nano / | nano / | ||
options zfs zfs_arc_max=10737418240 | options zfs zfs_arc_max=10737418240 | ||
+ | | ||
+ | oder 8GB | ||
+ | 8589934592 | ||
Danach noch die initram updaten und rebooten. | Danach noch die initram updaten und rebooten. | ||
Zeile 160: | Zeile 174: | ||
errors: No known data errors | errors: No known data errors | ||
+ | Nachdem dies ein Rpool ist, danach nicht vergessen Grub auf allen hinzugefügten Platten zu installieren. | ||
===== Korrupte Daten ===== | ===== Korrupte Daten ===== | ||
Zeile 203: | Zeile 217: | ||
sgdisk -G /dev/sdb | sgdisk -G /dev/sdb | ||
- | Nun den Resilverprozess anstoßen. | + | Nun den Resilverprozess |
| | ||
zpool replace -f rpool sdb2 sdb2 | zpool replace -f rpool sdb2 sdb2 | ||
Zeile 260: | Zeile 274: | ||
Write failed: Broken pipe | Write failed: Broken pipe | ||
+ | Neuere Proxmoxsysteme haben ZFS immer beides. Grub und EFI. Verwendet man zum Booten Grub, verwendet man den '' | ||
+ | < | ||
+ | pve-efiboot-tool format <new disk's ESP> | ||
+ | pve-efiboot-tool init <new disk's ESP> | ||
+ | </ | ||
===== Die wichtigsten ZFS-Befehle auf einen Blick ===== | ===== Die wichtigsten ZFS-Befehle auf einen Blick ===== | ||
Zeile 283: | Zeile 301: | ||
| zpool import -d / | | zpool import -d / | ||
| zpool import v-machines neuepoolname| importiert einen bestehenden Pool mit einem anderen Namen | | | zpool import v-machines neuepoolname| importiert einen bestehenden Pool mit einem anderen Namen | | ||
+ | | zpool import -f -R /mnt rpool| importiert einen Rootpool auf einen anderen Mountpoint | | ||
| zfs list -t snapshot| zeigt alle Snapshots an | | | zfs list -t snapshot| zeigt alle Snapshots an | | ||
| zpool set listsnapshots=on rpool| zeigt bei "zfs list" auch snapshots an | | | zpool set listsnapshots=on rpool| zeigt bei "zfs list" auch snapshots an | | ||
Zeile 496: | Zeile 515: | ||
- | === Autoexpand auf einem Rootpool === | + | ==== Autoexpand auf einem Rootpool |
Das ganze ist ein wenig komplizierter da man die GPT Bootpartion beachten muss. Zuerst erstellt auf der neuen getauschten Disk eine GPT Partition: | Das ganze ist ein wenig komplizierter da man die GPT Bootpartion beachten muss. Zuerst erstellt auf der neuen getauschten Disk eine GPT Partition: | ||
Zeile 504: | Zeile 523: | ||
sgdisk -a1 -n1:34:2047 -t1:EF02 -n9:-8M:0 -t9:BF07 -n2:2048:0 -t2:BF01 -c 2:zfs /dev/sdf | sgdisk -a1 -n1:34:2047 -t1:EF02 -n9:-8M:0 -t9:BF07 -n2:2048:0 -t2:BF01 -c 2:zfs /dev/sdf | ||
zpool replace rpool 10714300945297318711 sdf2 | zpool replace rpool 10714300945297318711 sdf2 | ||
- | grub-intall | + | grub-install |
Das natürlich mit jeder Platte wiederholen. | Das natürlich mit jeder Platte wiederholen. | ||
Zeile 515: | Zeile 534: | ||
9: reserved space (8MB) | 9: reserved space (8MB) | ||
+ | |||
+ | ==== Umwandeln eines Rpool Singledisk in einen Mirror inkl. Autoexpand ==== | ||
+ | Annahme ist hier ein Rpool mit einer Samsung EVO750. Da die Disk nicht Enterprise ist und das Wearoutlevel schon bei 90% ist, fügen wir eine Samsung SM863a als Mirror hinzu. Dann können wir beim Ausfall der EVO bequem eine weitere SM863a hinzufügen. Der zeitiger Status ist: | ||
+ | < | ||
+ | zpool status | ||
+ | pool: rpool | ||
+ | | ||
+ | scan: scrub repaired 0B in 0h3m with 0 errors on Sun Oct 14 00:27:05 2018 | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | rpool | ||
+ | sda2 ONLINE | ||
+ | </ | ||
+ | Rpool' | ||
+ | Wir haben nun unsere neue SSD in's laufende System gehängt. Diese scheint mit '' | ||
+ | < | ||
+ | sgdisk -a1 -n1:34:2047 -t1:EF02 -n9:-8M:0 -t9:BF07 -n2:2048:0 -t2:BF01 -c 2:zfs /dev/sdb | ||
+ | Setting name! | ||
+ | partNum is 1 | ||
+ | REALLY setting name! | ||
+ | The operation has completed successfully. | ||
+ | </ | ||
+ | Mit '' | ||
+ | < | ||
+ | partx -s /dev/sdb | ||
+ | NR | ||
+ | | ||
+ | | ||
+ | 9 468845710 468862094 | ||
+ | </ | ||
+ | Nun können wir die neue Disk zu unserer alten dazu hängen: | ||
+ | < | ||
+ | zpool attach | ||
+ | Make sure to wait until resilver is done before rebooting. | ||
+ | </ | ||
+ | Nach erfolgreichen resilvern, sieht unser Pool nun so aus: | ||
+ | < | ||
+ | zpool status | ||
+ | pool: rpool | ||
+ | | ||
+ | scan: resilvered 31,9G in 0h2m with 0 errors on Mon Nov 5 17:02:53 2018 | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | rpool | ||
+ | mirror-0 | ||
+ | sda2 ONLINE | ||
+ | sdb2 ONLINE | ||
+ | |||
+ | errors: No known data errors | ||
+ | </ | ||
+ | Danach noch Grub installieren und fertig. | ||
+ | < | ||
+ | grub-install /dev/sdb | ||
+ | </ | ||
+ | Nachdem wir dann später mal die EVO getauscht haben, wird der Pool automatisch auf die 240GB vergrößert. | ||
+ | |||
===== Autoreplace ===== | ===== Autoreplace ===== | ||
Zeile 573: | Zeile 650: | ||
</ | </ | ||
Das Dataset löschen, löscht natürlich auch die Freigabe. | 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: | ||
+ | < | ||
+ | cat / | ||
+ | </ | ||
+ | < | ||
+ | zfs get sharenfs # kann auch mit weiteren Optionen kombiniert werden | ||
+ | </ | ||
+ | Von einem anderen Host: | ||
+ | < | ||
+ | showmount | ||
+ | </ | ||
+ | |||
+ | ===== Swap ===== | ||
+ | Swap direkt auf ZFS erstellen. Empfohlen, genug RAM, oder Swap auf einem nicht ZFS-Filesystem. | ||
+ | < | ||
+ | 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: | ||
+ | </ | ||
+ | |||
===== Links ===== | ===== Links ===== | ||