Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
server_und_serverdienste:linux_zfs [2019/07/20 11:47] – [Memorylimit setzen] boospy | server_und_serverdienste:linux_zfs [2024/08/20 08:25] (aktuell) – 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 56: | Zeile 63: | ||
Danach noch die initram updaten und rebooten. | Danach noch die initram updaten und rebooten. | ||
| | ||
- | update-initramfs -u | + | update-initramfs -u -k all |
Zeile 115: | Zeile 122: | ||
**Wichtig ist auch zu erwähnen das 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.** | **Wichtig ist auch zu erwähnen das 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 addon kann man noch eine spare disk hinzfügen, die man in Falle eines Ausfalls der produktiven Disks verwenden kann: | ||
+ | |||
+ | zpool add < | ||
Zeile 168: | Zeile 179: | ||
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 210: | Zeile 237: | ||
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 267: | Zeile 294: | ||
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 276: | Zeile 307: | ||
| 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 290: | Zeile 321: | ||
| 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 | | ||
| 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/ | ||
| zfs create -V 5gb tank/vol| legt ein neues zvol mit einer maximalen Größe von 5G an \\ (Blockdevice) | | | zfs create -V 5gb tank/vol| legt ein neues zvol mit einer maximalen Größe von 5G an \\ (Blockdevice) | | ||
| 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 507: | Zeile 540: | ||
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: | ||
| | ||
- | | + | < |
- | sgdisk -Z -o /dev/sdf # löscht auch Partitionen | + | sgdisk -Z /dev/sdf # löscht nur gpt und mbr struktur |
- | sgdisk -a1 -n1:34:2047 -t1:EF02 -n9:-8M:0 -t9:BF07 -n2:2048:0 -t2:BF01 -c 2:zfs /dev/sdf | + | sgdisk -Z -o /dev/sdf # löscht auch Partitionen |
- | zpool replace rpool 10714300945297318711 sdf2 | + | sgdisk -a1 -n1:34:2047 -t1:EF02 -n9:-8M:0 -t9:BF07 -n2:2048:0 -t2:BF01 -c 2:zfs /dev/sdf |
- | grub-install /dev/sdf | + | partx -s /dev/sdf (hier sieht man die Partionierung) |
+ | zpool replace rpool 10714300945297318711 sdf2 | ||
+ | grub-install /dev/sdf | ||
+ | </ | ||
Das natürlich mit jeder Platte wiederholen. | Das natürlich mit jeder Platte wiederholen. | ||
Zeile 522: | Zeile 558: | ||
9: reserved space (8MB) | 9: reserved space (8MB) | ||
+ | |||
+ | === 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) | ||
+ | < | ||
+ | sgdisk -Z / | ||
+ | sgdisk -Z -o / | ||
+ | sgdisk -a1 -n1:34:2047 -t1:EF02 -n2: | ||
+ | partx -s / | ||
+ | zpool replace rpool 10714300945297318711 ata-ST8000VN004-3CP101_XXXXXX-part3 | ||
+ | proxmox-boot-tool format / | ||
+ | proxmox-boot-tool init / | ||
+ | </ | ||
+ | ==== Autoexpand of an Raidz2 Pool ==== | ||
+ | For example: | ||
+ | < | ||
+ | zpool status | ||
+ | pool: backup_pool_1 | ||
+ | | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | backup_pool_1 | ||
+ | raidz2-0 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi3 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi4 | ||
+ | </ | ||
+ | |||
+ | Switch drive offline: | ||
+ | zpool offline backup_pool_1 scsi-0QEMU_QEMU_HARDDISK_drive-scsi4 | ||
+ | |||
+ | < | ||
+ | pool: backup_pool_1 | ||
+ | | ||
+ | status: One or more devices has been taken offline by the administrator. | ||
+ | Sufficient replicas exist for the pool to continue functioning in a | ||
+ | degraded state. | ||
+ | action: Online the device using 'zpool online' | ||
+ | 'zpool replace' | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | backup_pool_1 | ||
+ | raidz2-0 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi3 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi4 | ||
+ | </ | ||
+ | Remove your old drive (or not if you have enouth bay's) and replace it with your new bigger one '' | ||
+ | zpool replace backup_pool_1 scsi-0QEMU_QEMU_HARDDISK_drive-scsi4 scsi-0QEMU_QEMU_HARDDISK_drive-scsi5 | ||
+ | |||
+ | < | ||
+ | pool: backup_pool_1 | ||
+ | | ||
+ | scan: resilvered 768K in 00:00:00 with 0 errors on Mon Jul 15 14:57:10 2024 | ||
+ | config: | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | backup_pool_1 | ||
+ | raidz2-0 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi3 | ||
+ | scsi-0QEMU_QEMU_HARDDISK_drive-scsi5 | ||
+ | </ | ||
+ | Then the next drive. | ||
==== Umwandeln eines Rpool Singledisk in einen Mirror inkl. Autoexpand ==== | ==== Umwandeln eines Rpool Singledisk in einen Mirror inkl. Autoexpand ==== |