Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
server_und_serverdienste:linux_zfs [2017/08/01 16:13] – [Die wichtigsten ZFS-Befehle auf einen Blick] boospyserver_und_serverdienste:linux_zfs [2018/06/26 08:59] – [Anlegen eines neuen Pools im RaidZ10 (entspricht Raid50)] boospy
Zeile 6: Zeile 6:
 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.
  
-  *  Systemgrundlage: Proxmox 3.4 / 4.X+  *  Systemgrundlage: Proxmox 3.4 / 4.X / 5.0
   *  ZFSutils: 0.6.4.3 /  0.6.5-pve6~jessie   *  ZFSutils: 0.6.4.3 /  0.6.5-pve6~jessie
-  *  Kernel: 3.10.0-10-pve / 4.2.3-2-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 160: Zeile 160:
   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 282: Zeile 282:
 | mount /dev/zvol/v-machines/home/vm-<Nummer>-disk-<Nummer> /<mountpoint>| Hängt eine VMdisk vom Zpool "v-machines" am gewünschten Mountpoint ein. | | mount /dev/zvol/v-machines/home/vm-<Nummer>-disk-<Nummer> /<mountpoint>| Hängt eine VMdisk vom Zpool "v-machines" am gewünschten Mountpoint ein. |
 | zpool import -d /dev/disk/by-id/ -a| ersetzt SDX durch die ID der Festplatte | | zpool import -d /dev/disk/by-id/ -a| ersetzt SDX durch die ID der Festplatte |
 +| zpool import v-machines neuepoolname| importiert einen bestehenden Pool mit einem anderen Namen |
 | 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,creation rpool| Snapshots mit Datum anzeigen | | zfs list -r -t snapshot -o name,creation rpool| Snapshots mit Datum anzeigen |
 | zfs get volsize v-machines/HDD-vmdata-KVM/vm-113-disk-1  NAME                                     PROPERTY  VALUE    SOURCE  v-machines/HDD-vmdata-KVM/vm-113-disk-1  volsize   36G      local| zeigt den maximal möglichen Speicher eines Volumes an | | zfs get volsize v-machines/HDD-vmdata-KVM/vm-113-disk-1  NAME                                     PROPERTY  VALUE    SOURCE  v-machines/HDD-vmdata-KVM/vm-113-disk-1  volsize   36G      local| zeigt den maximal möglichen Speicher eines Volumes an |
-| zfs set volsize=32g v-machines/HDD-vmdata-KVM/vm-113-disk-1| Verkleinert das zvol auf 32GB | +| zfs set volsize=32g v-machines/HDD-vmdata-KVM/vm-113-disk-1| Verkleinert/Vergrößert das zvol auf 32GB \\ (Blockdevice)
-| zfs create -V 5gb tank/vol| legt ein neues zvol mit einer maximalen Größe von 5G an |+| zfs create -V 5gb tank/vol| legt ein neues zvol mit einer maximalen Größe von 5G an \\ (Blockdevice) |
 | zfs set quota=50g tank/backupfolder | setzt die Quota eines normalen Datesets auf 50g | | zfs set quota=50g tank/backupfolder | setzt die Quota eines normalen Datesets auf 50g |
 | zfs rename -p rpool/test rpool/server123 | Verschiebt eine Dataset | | zfs rename -p rpool/test rpool/server123 | Verschiebt eine Dataset |
 | 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 v-machines/home@rep_home_2017-07-05_00:36:48 /mnt/zfsmountsnap | Snapshot mounten |+| mount -t zfs -o ro v-machines/home@rep_home_2017-07-05_00:36:48 /mnt/zfsmountsnap | Snapshot mounten 
 +| zfs set primarycache=metadata pool/dataset | Optimal für Backups, hier wird der Ramverbrauch erheblich reduziert | 
 +|apt install zfs-auto-snapshot | [[https://forum.proxmox.com/threads/zfs-automatic-snapshot-including-ram.43057/#post-207054|Infolink]] |
  
  
Zeile 432: Zeile 435:
   pigz -d -c /backup/home@bla1.gz | zfs receive -F rpool/home   pigz -d -c /backup/home@bla1.gz | zfs receive -F rpool/home
  
 +==== Snapshot mounten und Daten rausholen ====
 +Sehr praktisch. Um ein Snapshot zu mounten kann den normalen Mountbefehl benutzen. Z.B. 
 +<code>
 +mount -t zfs v-machines/home@rep_home_2017-07-05_00:36:48 /mnt/zfsmountsnap
 +</code>
 +Um das ganze automatisch und elegant mit ZFS zu gestalten machten den Ordner ''.zfs'' in Datasets sichtbar. Z.B.
 +<code>
 +zfs set snapdir=visible  v-machines/home
 +</code>
 +Danach wird das gewünschte Snapshot automatisch beim Zugriff auf ''.zfs/snapshot/rep_home_2017-07-16_00:01:25'' gemountet. 
  
  
Zeile 458: Zeile 471:
 </code> </code>
  
 +===== Mit komplettem ZFSpool umziehen =====
 +Mit einem kompletten Pool um zu ziehen ist super einfach, in Gegesatz zu nem Rsync oder ähnlichem. Zuerst macht man rekursiv ein Snapshot, danach kopiert man dem Pool auf die neuen/anderen Platten.
 +<code>
 +zfs snapshot -r oldpool@migration
 +zfs send -v -R -p oldpool@migration  | zfs receive -F myfreshpool
 +</code>
  
 ===== Autoexpand ===== ===== Autoexpand =====
Zeile 481: Zeile 500:
 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 /dev/sdf+  sgdisk -Z /dev/sdf # löscht nur gpt und mbr struktur 
 +  sgdisk -Z -o /dev/sdf # löscht auch Partitionen
   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
Zeile 495: Zeile 515:
  
 9: reserved space (8MB) 9: reserved space (8MB)
 +
 +===== Autoreplace =====
 +Autoreplace ersetzt automatische eine defekte Platte aus einem Zpool. Hierfür ist aber ein eingener [[http://www.informit.com/articles/article.aspx?p=1433052&seqNum=7|Hotsparepool]] erforderlich. 
  
  
Zeile 526: Zeile 549:
  
 ===== Kompletten RPOOL mit Proxmox recovern ===== ===== Kompletten RPOOL mit Proxmox recovern =====
 +https://darkdevil.osit.cc/index.php/s/rWkEAEytAsmLc1r
 +
 FIXME FIXME
  
 +===== 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>
 +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>
 +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>
 +zfs set sharenfs=on testpool/testnfs
 +</code>
 +Um eine Freigabe zu beenden:
 +<code>
 +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>
 +cat /etc/dfs/sharetab
 +</code>
 +<code>
 +zfs get sharenfs # kann auch mit weiteren Optionen kombiniert werden
 +</code>
 +Von einem anderen Host:
 +<code>
 +showmount  -e hostname.local
 +</code>
 ===== Links ===== ===== Links =====
  
Zeile 536: Zeile 591:
   *  [[https://wiki.archlinux.org/index.php/Experimenting_with_ZFS|Archlinux mit ZFS]]   *  [[https://wiki.archlinux.org/index.php/Experimenting_with_ZFS|Archlinux mit ZFS]]
   *  [[http://docs.oracle.com/cd/E24841_01/html/820-2313/gbbvf.html#gbcus|Oracle Reslivering]]   *  [[http://docs.oracle.com/cd/E24841_01/html/820-2313/gbbvf.html#gbcus|Oracle Reslivering]]
 +  * [[http://open-zfs.org/wiki/Performance_tuning|ZFS Tuning]]
  
  
Zeile 542: Zeile 598:
      
   zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1   zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1
 +  zdb --help