server_und_serverdienste:linux_zfs
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
server_und_serverdienste:linux_zfs [2024/07/15 13:10] – [Autoexpand eines Raidz2 Pool] loma | server_und_serverdienste:linux_zfs [2025/05/27 12:13] (aktuell) – loma | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | {{datei: | + | {{datei: |
====== 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! | + | Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-o. Gerne. Wir bedanken uns bei dir für deine Spende! |
- | [[https:// | + | [[https:// |
\\ | \\ | ||
- | Hauseigenes Apt-Repo: | + | Zum frei verfügbaren |
\\ | \\ | ||
- | GITLAB | + | GITLAB: [[https:// |
\\ | \\ | ||
\\ | \\ | ||
Zeile 17: | Zeile 18: | ||
* Kernel: 3.10.0-10-pve / 4.2.3-2-pve / 4.10.17-4-pve | * Kernel: 3.10.0-10-pve / 4.2.3-2-pve / 4.10.17-4-pve | ||
- | Alles was unter diese Version liegt, ist entweder durch Bugs, oder fehlende Features wie z.B. das ZFS die Geräte per ID anspricht, nicht brauchbar. | + | Alles, was unter diese Version liegt, ist entweder durch Bugs, oder fehlende Features wie z.B. das ZFS die Geräte per ID anspricht, nicht brauchbar. |
Zeile 53: | Zeile 54: | ||
arc_summary | arc_summary | ||
- | Wenn man möchte kann man ZFS ein Memorylimit setzten. | + | Wenn man möchte, kann man ZFS ein Memorylimit setzten. |
| | ||
nano / | nano / | ||
Zeile 63: | Zeile 64: | ||
Danach noch die initram updaten und rebooten. | Danach noch die initram updaten und rebooten. | ||
| | ||
- | update-initramfs -u | + | update-initramfs -u -k all |
Zeile 78: | Zeile 79: | ||
zpool create -f -o ashift=12 v-machines mirror ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D0KRWP ata-WDC_WD20EARX-00ZUDB0_WD-WCC1H0343538 mirror ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D688XW ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D63WM0 | zpool create -f -o ashift=12 v-machines mirror ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D0KRWP ata-WDC_WD20EARX-00ZUDB0_WD-WCC1H0343538 mirror ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D688XW ata-WDC_WD2001FFSX-68JNUN0_WD-WMC5C0D63WM0 | ||
- | Wichtig ist immer die ID' | + | Wichtig ist immer die IDs zu benutzen. Würde man z.B. sda oder sdb nehmen, wird es vorkommen das sich die Reihenfolge beim Booten |
| | ||
ls / | ls / | ||
Zeile 91: | Zeile 92: | ||
lrwxrwxrwx 1 root root 10 May 23 11:50 wwn-0x50014ee003f548a4-part9 -> ../../sdb9 | lrwxrwxrwx 1 root root 10 May 23 11:50 wwn-0x50014ee003f548a4-part9 -> ../../sdb9 | ||
- | Wenn man eine Festplatte einsteckt, werden auch im Syslog alle wichtigen | + | Wenn man eine Festplatte einsteckt, werden auch im Syslog alle wichtigen |
| | ||
zpool add -o ashift=12 v-machines mirror ata-WDC_WD20EARX-00ZUDB0_WD-WCC1H0381420 ata-WDC_WD20EURS-63S48Y0_WD-WMAZA9381012 | zpool add -o ashift=12 v-machines mirror ata-WDC_WD20EARX-00ZUDB0_WD-WCC1H0381420 ata-WDC_WD20EURS-63S48Y0_WD-WMAZA9381012 | ||
Zeile 121: | Zeile 122: | ||
Die Daten werden bei einer Erweiterung nicht gesynct. Somit ist der Erweitungsprozess binnen Minuten abgeschlossen. Unabhängig von der Speichergröße. Daten werden erst dann auf die neuen Platten verteilt wenn diese das erste mal geschrieben werden. | Die Daten werden bei einer Erweiterung nicht gesynct. Somit ist der Erweitungsprozess binnen Minuten abgeschlossen. Unabhängig von der Speichergröße. Daten werden erst dann auf die neuen Platten verteilt wenn diese das erste mal geschrieben werden. | ||
- | **Wichtig ist auch zu erwähnen | + | **Wichtig ist auch zu erwähnen, dass die neu hinzugefügten Platten zuerst bevorzugt auf den Füllstand der anderen Platten gebracht werden, erst dann werden wieder immer alle HDD's gleichzeitg verwendet.** |
+ | |||
+ | Als Add-on kann man noch eine spare disk hinzfügen, die man in Falle eines Ausfalls der produktiven Disks verwenden kann: | ||
+ | |||
+ | zpool add < | ||
Zeile 175: | Zeile 180: | ||
Nachdem dies ein Rpool ist, danach nicht vergessen Grub auf allen hinzugefügten Platten zu installieren. | Nachdem dies ein Rpool ist, danach nicht vergessen Grub auf allen hinzugefügten Platten zu installieren. | ||
+ | |||
+ | ===== Hinzufüge eines Special Device ===== | ||
+ | |||
+ | Ein " | ||
+ | |||
+ | Die Redundanz des speziellen Geräts sollte mit der des Pools übereinstimmen, | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Das Hinzufügen eines speziellen Geräts zu einem Pool kann nicht rückgängig gemacht werden! | ||
+ | </ | ||
+ | |||
+ | |||
+ | Im folgenden Beispiel werden 2 Mirrors für das Special Devices verwendet. | ||
+ | |||
+ | zpool add < | ||
+ | |||
===== Korrupte Daten ===== | ===== Korrupte Daten ===== | ||
Zeile 197: | Zeile 218: | ||
- | Um eine defekte Fesplatte zu ersetzen geht man folgender Maßen | + | Um eine defekte Fesplatte zu ersetzen, geht man folgendermaßen |
| | ||
zpool replace < | zpool replace < | ||
Zeile 207: | Zeile 228: | ||
- | Im Rpool ist etwas mehr zu tun, da Linux nicht von ZFS booten kann. Wir gehen hier davon aus wir die Platte im gleichen Festplattenslot tauschen, was bei einen Rpool auf z.B. SSD nicht ungewöhnlich ist. Zuerst übernehmen wir mal den Partiontable einer anderen Platte im Pool. Hier ein RaidZ-1. | + | Im Rpool ist etwas mehr zu tun, da Linux nicht von ZFS booten kann. Wir gehen hier davon aus wir die Platte im gleichen Festplattenslot tauschen, was bei einem Rpool auf z.B. SSD nicht ungewöhnlich ist. Zuerst übernehmen wir mal den Partiontable einer anderen Platte im Pool. Hier ein RaidZ-1. |
SDB ist die neue Platte und war gleichzeitig auch die defekte. SDA ist eine andere Platte im Rpool. | SDB ist die neue Platte und war gleichzeitig auch die defekte. SDA ist eine andere Platte im Rpool. | ||
Zeile 222: | Zeile 243: | ||
Make sure to wait until resilver is done before rebooting. | Make sure to wait until resilver is done before rebooting. | ||
- | Da wir ja den gleichen Festplattenslot verwenden ersetzen wir die Platte mit sich selbst. Zum Besseren | + | Da wir ja den gleichen Festplattenslot verwenden ersetzen wir die Platte mit sich selbst. Zum besseren |
- | Es es wirklich die gleiche Platte, also nicht nur der gleiche Anschluss, genügt ein | + | das dies wirklich die gleiche Platte |
| | ||
zpool online rpool sdb2 | zpool online rpool sdb2 | ||
Zeile 287: | Zeile 308: | ||
| zpool list| Zeigt alle Zpools in Kurzform an | | | zpool list| Zeigt alle Zpools in Kurzform an | | ||
| zfs list| Zeigt alle ZFS-Pools und Datasets inkl. Einhängepunkte an | | | zfs list| Zeigt alle ZFS-Pools und Datasets inkl. Einhängepunkte an | | ||
- | | zpool iostat -v| Zeigt alle Festplattenaktiviäten genau an | | + | | zpool iostat -v| Zeigt alle Festplattenaktiviäten genau an, inkl. Füllstände \\ der einzellnen Festplatten |
| zfs set compression=lz4 < | | zfs set compression=lz4 < | ||
| zpool upgrade < | | zpool upgrade < | ||
Zeile 310: | Zeile 331: | ||
| zfs set quota=50g tank/ | | zfs set quota=50g tank/ | ||
| zfs rename -p rpool/test rpool/ | | zfs rename -p rpool/test rpool/ | ||
+ | | zfs set reservation=5G mypool | Reserviert 5G damit im Falle von Disk voll \\ noch Aktionen gesetzt werden können | | ||
| zfs list -o space | Speicherauslastung inkl. wie viel für Snapshots verbraucht wird | | | zfs list -o space | Speicherauslastung inkl. wie viel für Snapshots verbraucht wird | | ||
| mount -t zfs -o ro v-machines/ | | mount -t zfs -o ro v-machines/ | ||
Zeile 336: | Zeile 358: | ||
rpool/ | rpool/ | ||
- | Hier sieht man der Rpool aus den Datasets pve-1,swap und home besteht. Die Einträge mit dem " | + | Hier sieht man der Rpool aus den Datasets pve-1,swap und home besteht. Die Einträge mit dem " |
| | ||
zfs rollback rpool/ | zfs rollback rpool/ | ||
Zeile 345: | Zeile 367: | ||
Sind neuere Snapshots vorhanden muss man die vorher löschen. Man kann das aber auch gleich im obigen Befehle mit der Option " | Sind neuere Snapshots vorhanden muss man die vorher löschen. Man kann das aber auch gleich im obigen Befehle mit der Option " | ||
- | Natürlich kommt es Rootfilesystem auf die Änderungen an. Wenn man z.B. den Teil vernichtet der für die Snapshots zuständig ist, geht das dann natürlich nicht mehr. Deswegen sollte man ich immer den Rpool nur für das nackte System verwenden und eigene Pools mit eigenen Datasets generieren um solchen Dingen zu entgehen. Wann Snapshots erstellt wurden kann mit folgenden Befehl gut sehen: Hier mit dem Rpool. | + | Natürlich kommt es Rootfilesystem auf die Änderungen an. Wenn man z.B. den Teil vernichtet, der für die Snapshots zuständig ist, geht das dann natürlich nicht mehr. Deswegen sollte man ich immer den Rpool nur für das nackte System verwenden und eigene Pools mit eigenen Datasets generieren um solchen Dingen zu entgehen. Wann Snapshots erstellt wurden kann mit folgenden Befehl gut sehen: Hier mit dem Rpool. |
| | ||
zfs list -r -t snapshot -o name, | zfs list -r -t snapshot -o name, | ||
Zeile 357: | Zeile 379: | ||
==== Snapshots Remote abspeichern ==== | ==== Snapshots Remote abspeichern ==== | ||
- | Um nun auch wirkliche Backups zu generieren muss man die Snapshots natürlich außerhalb des Servers ablegen. In unserem ersten Beispiel senden wir einen Snapshot auf eine Backupfestplatte in unserem Server. | + | Um nun auch wirkliche Backups zu generieren, muss man die Snapshots natürlich außerhalb des Servers ablegen. In unserem ersten Beispiel senden wir einen Snapshot auf eine Backupfestplatte in unserem Server. |
| | ||
zpool list backup | zpool list backup | ||
Zeile 405: | Zeile 427: | ||
zfs umount backup/home | zfs umount backup/home | ||
- | Möchte man nun das Backup | + | Möchte man nun das Backup |
| | ||
zfs send -v backup/ | zfs send -v backup/ | ||
Zeile 450: | Zeile 472: | ||
zfs destroy rpool/ | zfs destroy rpool/ | ||
- | Um nun das Snapshot von unserem zweiten Beispiel von /backup wieder | + | Um nun das Snapshot von unserem zweiten Beispiel von /backup wieder |
| | ||
pigz -d -c / | pigz -d -c / | ||
Zeile 501: | Zeile 523: | ||
Ist " | Ist " | ||
- | Um für alle Pools abzugragen ob die Funktion aktiv ist gibt man folgendes Befehl ein: | + | Um für alle Pools abzugragen, ob die Funktion aktiv ist gibt man folgendes Befehl ein: |
| | ||
zpool get autoexpand | zpool get autoexpand | ||
Zeile 517: | Zeile 539: | ||
==== 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 539: | Zeile 561: | ||
=== Partitionieren ab Proxmox-Boot-Tool === | === Partitionieren ab Proxmox-Boot-Tool === | ||
- | Bei neuen Systemen wird nicht mehr Grub sondern Proxmox Boottool verwendet. Dabei wird für EFI eine extra 512MB Partition benötigt. Der Befehl dazu sieht dann so aus: Die erste zwei Befehle können auch über die Webgui durch einen Mausklick ausgeführt werden (Initialisiere Disk mit GPT) | + | Bei neuen Systemen wird nicht mehr Grub, sondern Proxmox Boottool verwendet. Dabei wird für EFI eine extra 512MB Partition benötigt. Der Befehl dazu sieht dann so aus: Die erste zwei Befehle können auch über die Webgui durch einen Mausklick ausgeführt werden (Initialisiere Disk mit GPT) |
< | < | ||
sgdisk -Z / | sgdisk -Z / | ||
Zeile 670: | Zeile 692: | ||
===== Proxmox spezifisches ===== | ===== Proxmox spezifisches ===== | ||
- | Unter Proxmox wird LVM defaultmäßing mitinstalliert, | + | Unter Proxmox wird LVM defaultmäßing mitinstalliert, |
| | ||
nano / | nano / | ||
Zeile 721: | Zeile 743: | ||
</ | </ | ||
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: | + | Um zu sehen, welche Freigaben nun aktiv sind, gibt es mehrere Möglichkeiten. Am Host selbst: |
< | < | ||
cat / | cat / |
server_und_serverdienste/linux_zfs.1721049022.txt.gz · Zuletzt geändert: von loma