# ZFS # Schutz mit ZFS [![image.png](https://aow.de/uploads/images/gallery/2023-09/scaled-1680-/OSZimage.png)](https://aow.de/uploads/images/gallery/2023-09/OSZimage.png) ### Wie eine Variable mit drei Buchstaben alles ändern kann! #### Zetabyte Filesystem statt proprietärer Raid Controller oder Blackboxen ohne Kontrolle ZFS ist ein von Sun Microsystems entwickeltes transaktionales Dateisystem, das zahlreiche Erweiterungen für die Verwendung im Server- und Rechenzentrumsbereich enthält. Hierzu zählen die vergleichsweise große maximale Dateisystemgröße, eine einfache Verwaltung selbst komplexer Konfigurationen, die integrierten RAID-Funktionalitäten, das Volume-Management sowie der prüfsummenbasierte Schutz vor Datenübertragungsfehlern. Einfach formuliert: Der Verbund der Festplatten wird von der gleichen Software geregelt die auch die Inhalte der Festplatten bereitstellt. Dadurch ist der Austausch von Datenträgern vor dem Ausfall bereits ohne Verlust der Redundanz möglich. Die vektorbasierte Snapshottechnoligie ermöglicht tausende Versionen ohne Last bereitzustellen. Im Notfall können alte Systemstände gestartet, extrahiert oder analysiert werden. Ohne Bereitstellungszeit! Die Veränderungen der Snapshots können einfach per Push oder trojanersicherem Pull auf beliebig viele Systeme übertragen werden. Im Vergleich zu einem Backup ist ein Replikat kein Versprechen auf eine Wiederherstellung, es ist eine Garantie! Dank ZFS endlich nie wieder Festplatten durch die Gegend tragen und Langzeitarchive aufbauen! Unsere wichtigsten Lösungen hierzu sind Proxmox VE und TrueNAS Scale/Core, welche beide ZFS integriert haben und daher über allen traditionellen, oft überladenen, Lösungen stehen. Beide Systeme sind Open Source und können kostenfrei auf nahezu jeder Hardware genutzt werden. [![image.png](https://aow.de/uploads/images/gallery/2023-09/scaled-1680-/fQFimage.png)](https://aow.de/uploads/images/gallery/2023-09/fQFimage.png) #### Egal welche ergänzende Backupsoftware Sie nutzen... mit ZFS als Basis können sie Ihre Backups vor Kompromittierung schützen. Damit es erst gar nicht so weit kommen kann, nutzen wir eine Technik die wir liebevoll Miyagimethode nennen. Die beste Verteidigung gegen Angriffe ist einfach nicht da zu sein. Unsere Ultimate Backupserver sind nicht nur unerreichbar für Angreifer, sondern die meiste Zeit ausgeschaltet und damit unangreifbar! Final schliessen wir das Konzept mit einer Überwachungsmethode die das Vergessen von Sicherungen unmöglich macht und durch Prüfsummen unsere Replikate ohne Fehlerquote eindeutig bestätigt. Wir haben also kein Versprechen auf Sicherung, sondern eine Garantie! #### Schon bei der ersten Störung bezahlt sich das komplette System Eine Datensicherung ist eine Methode die im Notfall die Zeit und auch den Platz für eine Wiederherstellung benötigt. Im Schnitt dauert eine Rücksicherung, wenn es bei einer bleibt, mehrere Stunden bis mehrere Tage. Gerechnet auf den Ausfall der Mitarbeiter, der verlorenen Aufträge und dem immensen Schaden an der eigenen Reputation, ist die Investition in ein kostengünstiges ZFS-System schon fast lächerlich im Verhältnis zu dem Stress eines längeren Ausfalls. Es gibt keine Wiederherstellungszeit oder extra Platzbedarf! # ZFS Befehle ZFS Befehle Beispiel für eine selbst erstellte Eigenschaft: zfs set zfs:backup=basename tank/data/vm-1066-disk-0 setzt die Eigenschaft zfs:backup Option basename auf local für die angegebene Disk0
Befehl………………………………………Erklärung
**zpool status**Zeigt den Zustand der ZPOOLS
zpool iostat 1Zeigt Perfomance Lesen/Schreiben, 1=fortwährend
**zfs list**Zeigt die eingerichteten Datasets
zfs list -o space\[-o name|-o compression|…\] Gute Übersicht der Datasets inkl. Speicherverbrauch Snapshots (Option `-t snapshot` zeigt nur Snapshots, `-H` ohne Überschrift für Scripts)
**zfs get written**Zeigt alle geschriebenen *datasets* inkl. Snapshots
zfs get written | grep 402-diskErweiterung mit `grep` um einzelne VMs zu finden (hier 401)
zfs get all rpool/data/<ort>*all* zeigt alle Werte der Dateneigenschaften, z.B. Zugriffsrechte oder Snapshots
zfs get compression rpool/data/<ort>\[creation|compression|…\] Zeigt Eigenschaft (hier: Kompression) eines *datasets*
zfs get -r <eigenschaft> rpool/data/<ort>Zeigt Eigenschaft *rekursiv* inkl. Unter-Datasets
zfs set <eigenschaft>=\[on|off\] rpool/data/<ort>Ein- und Ausschalten einer Eigenschaft **Achtung bei -r!** (siehe [ZFS Options](https://wiki.cloudistboese.de/doku.php?id=wikiintern:1zfs#zfs_options "wikiintern:1zfs ↵"))
zfs allowUm Eigenschaften des Hauptverzeichnisses zu delegieren
zfs inherit -r <eigenschaft> rpool/data/<ort>Der Unterbefehl *inherit* wird *rekursiv* angewendet, wenn die Option *-r* angegeben wird (Achtung: Überschreibt Eigenschaften )
zfs create rpool/data/<ort>Erstellt ZFS Pool z.B. *rpool/data/repl* für Replikationsverzeichnis
zfs destroy pool/data/<ort oder VMID>Löscht den ZFS-Pool (bei vorhanden Snapshots nicht möglich)
zfs destroy -r rpool/data/<ort oder VMID>Löscht den ZFS-Pool inkl. aller Snapshots **unwiderruflich**
# ZFS Begriffe
Begriff……Erklärung
ZPOOLAllgemeiner Name für einen Speicher-*Pool* von HDs (von einer einzigen Festplatte \[einzelne *vdev*\]) bis raid-z3 \[mehrere *vdes*\], einem Software RAID-System auf ZFS-Basis
rpoolStandardmäßig angelegter *ROOT-ZPOOL* bei Proxmox-Installationen
zfs DatasetKomplett individuelles Dateisystem z.B. unterhalb vom *ROOT ZFS Datasets* oder weiterer ZPOOLs (z.B. *mypool*). Dieses entsteht beim `zfs create` des Raids, beispiel **rpool/data** - Dort legt man üblicherweise Dateien ab, diese können auch *VMDK*, *RAW*oder *QCOW* für VMs enthalten
ZVOLReservierung von Blöcken, erreichbar über den */dev*/-Ordner (Beispiel: `/dev/zvol/rpool`), und wird unter /dev/zvol/rpool/data nochmals detailiert symbolisch verlinkt. Üblicher Zugriff erfolgt über den PVE Manager der diese Volumes den VMs zuweist und dort auch verwaltet
# Vergleich von True NAS und Proxmox VE als Storage Server
### 1. TrueNAS (ehemals FreeNAS)
1.
Reiner Storage Server für NAS und SAN Aufgaben
2.
Rudimentäres Containering und unbrauchbare Virtualisierung
3.
Solider Unterbau basiert auf FreeBSD, gilt als noch stabiler als Linux
4.
Reine Appliance, Bedienung erfolgt ausschliesslich über Webinterface
5.
**Kernfunktionen**
-
Samba NAS inkl. AD Integration und SID
-
NFS NAS/SAN inkl. Zugriffskontrolle
-
iSCSI SAN inkl Zugriffskontrolle
6.
**Indikation für Einsatz**
-
Ergänzung als ZFS Fileserver mit oder ohne AD Integration
-
SAN Server mit NFS für höhere Anzahl von PVE Systemen mit HA Bedarf
-
SAN Server mit iSCSI für höchsten HA Bedarf
-
SAN Server mit iSCSI für einfache Backup oder OS Aufgaben
-
Vollständiges Monitoring und Webgui für Snapshots und Replikation, sowie den Systemzustand
### 2. Proxmox VE
1.
Gemischtes System für Virtualisierung und ZFS Storage
2.
Umfangreiche Virtualisierung und Containering-Lösung
3.
Moderner Unterbau mit aktuellem Debian Linux
4.
Reichhaltige Funktionen in allen Bereichen kommen schnell an ihre Grenzen und werden durch eigene Kommandozeilenlösungen erweitert
5.
**Kernfunktionen**
-
KVM Virtualisierung und LXC Containering
-
ZFS Storagesystem für Software Raid und rudimentärer Snapshot- und Replikationslösung
-
Optional: NFS-Kernel Server
-
Optional: iSCSI Target
-
Optional: erweitertes ZFS-Management mit [Sysops](https://www.sysops.de/ "https://www.sysops.de/") Hauslösungen
6.
**Indikation für Einsatz**
-
Kleinere Anzahl von PVE Systemen mit potenter Aufnahme von Datenträgern
-
Hoher Anspruch an Snapshotvorhaltung
-
Leichte Replikation der Daten auf zweites System und eventuell weitere Ziele
-
Applikationsbasierte Datensicherung
-
Eigenes [Monitoring](https://wiki.cloudistboese.de/doku.php?id=wikiintern:checkmk "wikiintern:checkmk") und Reporting bevorzugt
-
Einfacheres Deployment und Wiederherstellung
# ZFS RAID #### Übersicht ZFS-RAID
-
RAID-1 (mirror) *Empfohlen z.B. für reines Proxmox-System ohne VMs*
-
RAID-Z1 (1 Parity-Bit, ~RAID 5)
-
RAID-Z2 (2 Parity-Bits, ~RAID 6)
-
RAID-Z3 (3 Parity-Bits)
#### RaidZ(2,3)
-
Sinnvoll für Datenablage und gelegentlichen Zugriff
-
Oft in Kombination mit harter Kompression im NAS Betrieb
-
Bei Erweiterung müssen alle Datenträger im Verbund getauscht werden
-
Bei PVE als Datastore dringend 16k Blocksize für neue Systeme hinterlegen, da sonst extremer Overhead (siehe Warnung)
-
x-y Verlust an Platz für Redundanz
#### Raid Z+1
-
Eventuelle Kette aus mehreren RaidZ denkbar
-
Besserer Kompromiss aus Platzbedarf und Redundanz
-
Für VMs mit leichtem Anspruch akzeptabel
-
2x x-y Verlust an Platz für Redundanz
#### Raid 1+0
-
Absolut notwendig für VM Einsatz mit drehenden HDDs, sonst Latenz schlecht
-
Weitere Spiegel sind jederzeit anfügbar
-
Einzelne Spiegel können während des Betriebs ohne Redundanzverlust getauscht werden (wenn Slots frei)
-
Tausch zweier Datenträger führt zur Erweiterung der Kapazitäten (`zpool set autoresize=on `)
-
Jedoch 50% Platzverlust für Redundanz
#### Raid5+0
-
Kompromiss
#### Solidstate Disks
-
Bei ZFS immer zu bevorzugen, da Latenz ca 2x langsamer als ohne ZFS
-
Für HDD Systeme immer Cache Device einsetzen, dieses muss nicht redundant oder hotswappable sein. Ausfall unterbricht nicht den Betrieb
-
**SATA**
-
nur 6GBit/s halb-duplex (ca. 600 Megabyte/s)
-
bei onBoard Controller darauf achten, mit wie vielen PCIe Lanes und mit welcher PCIe Generation angebunden, ggf. Flaschenhals
-
günstig
-
Samsung Pro, Intel mit krummen Zahlen (960GB, 1920GB), z.B. DC-S4510
-
nicht immer Hot-Swap möglich
-
SSDs im Formfaktor 2,5 Zoll und M.2 gängig
-
**SAS**
-
12GBit/s und voll-duplex (ca. 1,2 Gigabyte/s)
-
teurer, aber weniger Müll am Markt
-
Hersteller noch unklar
-
Hot-Swap
-
**NVMe**
-
Protokoll setzt nativ auf PCIe auf, Latenz und Overhead gegenüber den klassischen Protokollen (SATA, SAS) sehr gering
-
Vollduplex
-
Bandbreite abhängig von PCIe-Generation und Anzahl der angebundenen Lanes (z.B. mit PCIe 4.0 x4 sind etwa 7 Gigabyte/s möglich, mit PCIe 3.0 x4 etwa 3,5 Gigabyte/s)
-
**M.2 Formfaktor**
-
nicht verwechseln mit M.2 SATA SSDs, PCIe / NVMe muss in den Specs stehen
-
Sinnvoll für Cache oder LOG
-
Wenn durch Bios bootfähig kann man sich ein Notsystem darauf bauen
-
günstig
-
belegen keinen Slot
-
**U.2 Formfaktor (SFF-8639)**
-
Bekannte irische Band ![LOL](https://wiki.cloudistboese.de/lib/images/smileys/icon_lol.gif)
-
Einsatzbereich Server und Storage
-
Wenig Erfahrung mit ZFS
-
Hot-Swap
-
PCIe 3.0 x4 Anbindung, Abwärtskompatibel zu SAS und SATA, Mischbetrieb über ein Kabel mit entsprechender Backplane möglich
-
teuer
-
**U.3 Formfaktor (SFF-TA-1001)**
-
Nachfolger der U.2 Schnittstelle
-
PCIe4.0 Unterstützung
-
weitere Eigenschaften identisch zur U.2 Schnittstelle
**RAIDZ-BUG**
NAMEVOLBLOCKLREFERREFER
pool1/test58K16.7G35.7G (213% overhead)
pool1/test216K89.4G95.6G (6,93% overhead
pool1/test332K89.9G96.0G (6,78% overhead)
pool1/test464K50.1G53.5G (6,78% overhead)
pool1/test128K60.7G60.7G (0% overhead)
# ZFS Optimierung und Todsünden #### ZFS Funktionen für SSDs
-
`zpool get autotrim `: Auslesen ob „autotrim“ eingeschaltet ist
-
`zpool trim `: Pool manuell trimmen
-
`zpool status -t `: Auslesen TRIM status
-
`zpool set autotrim=on `: generell trimmen (autotrim einschalten, wenn manuelles trimmen erfolgreich)
-
`zfs add rpool cache nvmn0e1`: füge nvmn0e1 als cache Device in rpool
#### ZFS mit Spindeln
-
Je mehr Spindeln desto schneller
-
Gespiegelte Disks ggf. auf mehrere SAS Lanes verteilen (dmesg beobachten)
-
SAS ist schneller als SATA!
-
Maximaler Speed ist oft durch alte HBA limitiert (6/12G)
-
G ist Gigabit, also 6/8 = 750MB/sek max
### Todsünden
-
HW-Raid Controller nutzen und dort jede Disk als Volume für ZFS SW Raid (knallt)
-
Deduplizierung aktivieren (geht nicht mehr aus pro Pool)
-
ZFS_ARC_MAX zu hoch/niedrig (ca 1GB pro TB Richtlinie)
-
Pool über 80% Füllgrad laufen lassen
-
Snapshotbereinigung / Management aus dem Blick verlieren (Empfehlung: 8×1/4h, 48h, 10T, 4W, 3M)
-
Bei ZFS-Auto-Snapshot auf Ziel nicht deaktiviert (*zfs set com.sun:auto-snapshot=false rpool/replica*)
-
Anfügesnapshot durch schlechtes Management verlieren (Beispiel: nur houlry replizieren, nach 49h kein Anfügen mehr möglich)
-
Druckbetankung (kann bei schlechten Systemen zum Stillstand führen, gerade wenn OS auf Datenpool)
-
PVE auf selbem Raid wie Systeme (kann bei hoher Last zum Stillstand führen)
-
FreeNAS auf USB Sticks (Die Zeit ist vorbei, bitte SSDs nehmen mit USB Adapter, als Beispiel)
- Virtuelle Maschinen mit ZFS - Abgesehen von der Speicherplatzverschwendung, kann es zu unontrollierten Mounts aus ZVOLs kommen
Update 2024 zum Thema Volblocksize root@pve83:~# zfs create -ovolblocksize=8k rpool/8k -V 1GWarning: volblocksize (8192) is less than the default minimum block size (16384).To reduce wasted space a volblocksize of 16384 is recommended. rpool/16k **1.11G** 15.2T 81.4K - rpool/8k **1.49G** 15.2T 81.4K - NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 **raidz1**-0 ONLINE 0 0 0 scsi-201000000000000005cd2e475ae4b5651-part3 ONLINE 0 0 0 scsi-201000000000000005cd2e4f1bd4e5651-part3 ONLINE 0 0 0 scsi-201000000000000005cd2e4ef8f4b5651-part3 ONLINE 0 0 0 scsi-201000000000000005cd2e4889d4b5651-part3 ONLINE 0 0 0 Bei RaidZ2 wäre der Overhead über 200% Inzwischen warnt ZFS, jedoch sieht das keine in der PVE GUI!
# ZFS Import - Importieren von ZPOOLS Bei (Neu-)Installationen oder anderen Startproblemen z.B. von Proxmox ist es teilweise nötig, den *ZPOOL* manuell zu importieren (siehe auch [Proxmox Startproblem](https://wiki.cloudistboese.de/doku.php?id=atknowhow:ato_opensource:ato_1proxmox#prox_bootproblem "atknowhow:ato_opensource:ato_1proxmox")). Prüfen, ob es *zpools* gibt ``` zpool import ``` Importieren der *zpools* ``` zpool import -fa #Optionen -f force, -a all. ``` Die häufigste Ursache ist gerade bei mehreren internen Festplatten die Verzögerung. Abhilfe schafft das Anpassen des mit einem Delay im *Grub-Loader* ``` nano /etc/default/grub ``` In dieser Konfigdatei wird folgende Zeile ergänz mit *rootdelay=10* ( = 10 Sekunden Verzögerung) ``` GRUB_CMDLINE_LINUX_DEFAULT="quiet rootdelay=10" ``` **Wichtig:** Danach immer GRUB aktualisieren mit ``` update-grub ``` bzw.
-
` update-grub ` *Aktualisierung der Grub Loaders*
-
` grub-install /dev/sdb ` *Installation des Grub Loaders auf weiteres Laufwerk (hier sdb)*
-
`update-initramfs -u ` *Aktualisiert die Grub-Infos auf diesen HDs*
#### Gibt es zwei identische //zpools// namens //rpool//, kann man diese folgender Weise importieren: ``` # Anzeigen der eindeutigen ID des zpools zpool import # Import des zpools per ID zpool import -f # Import des zweiten zpools mit identischen Originalnamen mit neuem Namen z.B. rpool2 zpool import # Anzeigen des Mountpointes des zweiten zpools zfs get mountpoint # Sollte dieser ebenfalls auf / (root) stehen in Proxmox wie folgt anpassen zfs inherit mountpoint rpool/ROOT/pve-1 ``` **Wichtig:** Der Mountpoint wird *IN DAS ZFS-FILESYSTEM* geschrieben, daher bei Änderungen oder Neuinstallationen von Proxmox mit mehreren *zpools* VORHER Haupt-zpool *rpool* umbenennen und Mountpoint anpassen! Quelle: [Proxmox](https://pve.proxmox.com/wiki/ZFS:_Tips_and_Tricks#Grub_boot_ZFS_problem "https://pve.proxmox.com/wiki/ZFS:_Tips_and_Tricks#Grub_boot_ZFS_problem") und [Sysops-Matrix](https://www.thegeekdiary.com/solaris-zfs-how-to-import-2-pools-that-have-the-same-names/ "https://www.thegeekdiary.com/solaris-zfs-how-to-import-2-pools-that-have-the-same-names/") #### Import eines Pools mit temporärem Namen Eindeutige ID anzeigen: ``` zpool import # z.B. id: 16760479674052375628 ``` Import: ``` zpool import -R /a -t altrpool 16760479674052375628 ``` ``` # zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT altrpool 97G 22.4G 74G 23% 1.00x ONLINE /a rpool 465G 75.1G 390G 16% 1.00x ONLINE - ``` [Quelle Oracle](https://docs.oracle.com/cd/E36784_01/html/E36835/gbdbk.html "https://docs.oracle.com/cd/E36784_01/html/E36835/gbdbk.html") # ZFS Arc oder Arcsize Arc, Arcstat oder Arcsize bezieht sich auf den *CACHE* im Arbeitspeicher zur Verwaltung eines *ZPOOLS*. Es ist eine Grundeinstellung eines ZPOOLs, nicht direkt eine Option eines Datasets. Setzen des Cache Limit „Arcsize“ ``` echo "options zfs zfs_arc_max=2147483648" >> /etc/modprobe.d/zfs.conf ``` oder manuell ``` nano /etc/modprobe.d/zfs.conf 2147483648 6442450944 ``` Beispiele bzw. Berechnung ``` (8GB=8*1024*1024*1024) ``` Update der Eintragungen für ZFS ``` update-initramfs -u -k all ``` „echo 3 > /proc/sys/vm/drop\_caches (??) \##ToDo: Erklärungen inkl. Abhängigkeiten von Cache-SSDs, Datengößen usw. # Neue Anzeigen der Eigenschaften der ZSF-Datasets ZFS Options ``` zfs list # Anzeigen der Datasets zfs list -t filesystem -o name,used # Anzeigen zusätzlicher Eigenschaften (hier //name// und //used//) zfs get all ``` Anzeigen einer einzelnen Eigenschaft (z.B. Compression) ``` zfs get compression tank # nur vom ZPOOL tank zfs get -r compression tank # Rekursive Anzeige aller ``` Setzen von Eigenschaften (2. Zeile Beispiel: Eigenschaft *com.sun:auto-snapshot* für Script *zfs-auto-snapshot*) ``` set compression=on tank/home/ zfs set com.sun:auto-snapshot=false tank/home ``` Setzen der Kompression auf alle unterliegenden *datasets* ``` zfs inherit compression tank ``` Überschreiben **aller** Eigenschaftswerte (Bitte beachten Sie, dass die Option -r die Eigenschaftswerte aller untergeordneten Datasets zurücksetzt.) ``` zfs inherit -r compression tank ``` # SOURCE-Werte
SOURCE-WertBeschreibung
`default`Dieser Eigenschaftswert wurde für dieses Dataset bzw. seine übergeordneten Datasets nie explizit gesetzt. Es wird der Standardwert für diese Eigenschaft verwendet.
`inherited`from *Dataset-Name*Dieser Eigenschaftswert wurde vom übergeordneten Dataset geerbt, das in *dataset-name* angegeben ist.
`local`Dieser Eigenschaftswert wurde mithilfe von `zfs set` für dieses Dataset explizit gesetzt.
`temporary`Eigenschaftswert wurde mithilfe von `zfs mount - o` gesetzt und gilt nur solange, wie das Dateisystem eingehängt ist. Weitere Informationen zu temporären Eigenschaften von Einhängepunkten finden Sie unter [Verwenden temporärer Einhängepunkte.](https://docs.oracle.com/cd/E19253-01/820-2313/gamnt/index.html "https://docs.oracle.com/cd/E19253-01/820-2313/gamnt/index.html")
- (keiner)Diese Eigenschaft ist schreibgeschützt. Ihr Wert wird von ZFS bereitgestellt.
Quelle [Doc.Orcale.com](https://docs.oracle.com/cd/E19253-01/820-2313/6ndu3p9bf/index.html "https://docs.oracle.com/cd/E19253-01/820-2313/6ndu3p9bf/index.html") # HD-Identifikation unter ZFS
-
`zpool status` zeigt erst mal alle Platten und Datasets
-
Unter */dev/disk/by-id*/ sind die Festplatten per ID aufgelistet
-
`by-id`
-
`ata-` zeigt klassischen S-ATA Platte mit Seriennummer
-
`wwn-` zeigt SAS-Platte (Nummer ebenfalls auf HD zu finden)
-
`usb-` USB Stick oder Festplatte
-
`iscsi-` iSCSI Platte
-
`by-label`
-
zeigt die *rpools* (Daten/rpool/rpool2/System-reserviert) mit Mountpoints
-
`by-partlabel`
-
`zfs-… → ../../sd(n)1` ZFS Symbolic-Links zu der Hauptpartition (1) der Disks sd(n)
-
`by-uuid`
-
zeigt UUIDs für jede einzelne Partition inkl. Mountpoints *sd(nm)*
-
`by-path`
-
gibt Aufschluss über die jeweilige Schnittstellen-Pfad (z.B. `pci-0000:44:00.0-sas-phy3-lun-0`)
-
`lsblk -f` für Mountpoints
-
`ls -althr` zeigt alle HDs mit ID an
# Aktualisieren von ZFS-Speicher-Pools Gerade nach Updates von *Proxmox* sollte man immer die *ZPOOL* prüfen und mit Update des ZFS-Systems abschließen. Eine ausführliche Erklärung gibt es im [Oracle Solaris ZFS-Administrationshandbuch](https://docs.oracle.com/cd/E24841_01/html/820-2313/gcikw.html "https://docs.oracle.com/cd/E24841_01/html/820-2313/gcikw.html"). Um zu sehen, ob ein Upgrade nötig ist: ``` zpool status ``` Genauere Infos über den aktuelle *ZPOOL* ``` zpool upgrade -v ``` Um letztendlich alle (`-a`) *ZPOOLs* zu aktualisieren: ``` zpool upgrade -a ``` # Dateiwiederherstellung von ZVOLs in Proxmox
-
Voraussetzung: Backups über *zfs-auto-snapshot*
-
`zfs clone rpool/data…/vm--disk-0@…auto-snapshot rpool/data/…/vm--disk-9 `
-
`cfdisk /dev/zd `
-
`mkdir /mnt/restore `
-
`mount /dev/zdp3 /mnt/restore/`
-
`ls /mnt/restore/ ` zum Kontrollieren und Auslesen der alten Dateien und eigenen Einstellungen
Kennzeichnung der geklonten Disk mit Ziffer **9** als Standard für geclonte Disks ermöglicht Routine für Notfälle! #### Löschen des Clones bzw. Rückgängigmachen der Schritte
-
`cfdisk /dev/zd `
-
`unmount /mnt/restore `
-
`zfs destroy -r rpool/data/…/vm--disk-9`
# Sharing unter ZFS - SAN Protkolle Inhalt
-
Übersicht Sharing (Samba, NFS, iSCSI oder SSHFS)
-
NFS Sharing
-
Samba Sharing
-
iSCSI Sharing (unvollständig!)
-
Vergleich SAN Protokolle
-
Vergleich Fileserver Windows, UCS, TrueNAS und Zamba
---
## Übersicht Sharing (Samba, NFS, iSCSI oder SSHFS)
-
**Samba**
-
Schnittstelle zum Anwender
-
Für Filesharing
-
Kompatibel mit allen Betriebsystemen
-
Authentifizierung lokal oder AD
-
Verschlüsselt
-
Kein Routing sinnvoll möglich über NAT
-
**NFS**
-
Schnittstelle zu iX Systemen (Linux, Mac, etc.)
-
Einfachste Konfiguration und Absicherung (/etc/exports)
-
Für Filesharing
-
Schnell
-
Einfach zu Mounten
-
**iSCSI**
-
Komplex
-
Für Blocksharing von u. a. Disks, LVM, ZVOLS
-
Multipath
-
HA+RR etc
-
**SSHFS**
-
Filesharing via SSH
-
Langsam
-
Für ESXi ohne vCenter zur Migration
---
## NFS Sharing Erzeugen Dataset und Mount unter */rpool/nfsshare*, ideal für *VMs* (raw, vmdk, qcpow2) oder *Files*: ``` zfs create rpool/nfsshare ``` Freigabe der Dateien: ``` zfs set sharenfs=on rpool/nfsshare ``` oder mit Zugriffsrechten aus dem Netz *192.168.11.0/24*: ``` zfs set sharenfs="rw=@192.168.11.0/24" rpool/nfsshare ``` #### Zugriffssteuerung Vereinfacht für kompletten Share mit ``` chmod oder chown # nach Bedarf ``` Zugriffsteuerung per *Linux PAM* Benutzer mit Editieren der Datei `/etc/exports` ``` # freigabe1 wird für zwei Rechner freigegeben # notebook darf nur lesen (ro) # desktop darf lesen und schreiben (rw) rpool/nfsshare notebook(ro,async) desktop(rw,async) ``` oder kombiniert mit *IPs* oder *Netzwerken* ``` # Freigabe gilt nur für 192.168.1.13, jedoch nur mit Leserechten: rpool/nfsshare 192.168.1.13(ro,async) # Freigabe gilt für alle IPs von 192.168.1.1 bis 192.168.1.255, mit Lese-/Schreibrechten: rpool/nfsshare 192.168.1.0/255.255.255.0(rw,async) # Freigabe gilt nur für den Rechner mit dem Namen notebook rpool/nfsshare notebook(ro,async) ``` Bei Leistungsproblemen mit *NFS* kann man ggfs. *sync* deaktivieren mit `zfs set sync=disabled rpool/nfsshare`. Weitere Infos zu den Risiken gibt es bei [https://jrs-s.net/2019/07/20/zfs-set-syncdisabled/](https://jrs-s.net/2019/07/20/zfs-set-syncdisabled/ "https://jrs-s.net/2019/07/20/zfs-set-syncdisabled/"). #### Mounten von NFS Shares
-
Mount in Proxmox
-
*Datacenter* > *Storage* > Taste *Add* > NFS
-
ID: Mount benennen „myNAS1“
-
Server: IP Adresse des Server
-
Export: Auswahl der NFS Freigabe (taucht auf bei erfolgreicher NFS-Verbindung)
-
VMware per Datastore Dialog
-
HyperV über Erweiterung Windows Funktionen
-
Linux
-
`mkdir /mnt/nfsmount && mount -t nfs 192.168.0.100:/rpool/nfsshare /mnt/nfsshare`
-
oder
-
per fstab
-
`192.168.0.100:/rpool/nfsshare /mnt/nfsshare nfs rw 0 0`
-
wenn der umount mal scheitert:
-
`umount -l /mnt/nfsshare #lazy umount`
---
## Samba Sharing Erzeugen Dataset und Mount unter */rpool/smbshare*: ``` zfs create rpool/smbshare ``` Freigabe der Dateien: ``` zfs set sharesmb=on rpool/smbshare chmod 777 /rpool/smbshare ``` #### Zugriffssteuerung Vereinfachtes Sharing mit ``` smbpasswd -a root # erzeugt Samba Passwort chmod oder chown # nach Bedarf ``` Detailliertere Zugriffsteuerung mit Editieren der Datei `/etc/samba/smb.conf` ``` [Global] workgroup = workgroup security = user map to guest = Bad Password [homes] comment = Home Directories browsable = no read only = no create mode = 0777 [smbshare] path = /rpool/smbshare public = yes writeable = yes comment = smb share printable = no guest ok = yes create mask = 0777 security mask = 0777 directory mask = 0777 force create mode = 0777 directory security mask = 0777 ``` Kontrolle der effektiven Config `testparm` (zum Kontrollieren der effektiven Konfiguration) und Abschluss mit ``` service smbd restart ``` #### Zugriff auf SMB Freigaben
-
Windows: `\\\smbshare`
-
macOS und Linux: `smb:///smbshare`
-
Nötige Erweiterung für Linux-Zugriff
- ``` apt-get install cifs-utils mkdir /mnt/smbshare mount -t cifs //ip/smbshare /mnt/smbshare #username=root ``` -
per fstab
-
`ip/smbshare /mnt/smbshare cifs iocharset=utf8 0 0`
[hoch](https://wiki.cloudistboese.de/doku.php?id=wikiintern:zfssharing#zsh_inhalt "wikiintern:zfssharing ↵")
---
## iSCSI Sharing Unvollständig Erzeugen Dataset und Mount unter */rpool/iscsishare*: ``` zfs create rpool/iscsishare ``` Freigabe der Dateien: ??? #### Zugriffssteuerung Vereinfachtes Sharing mit ??? Detailliertere Zugriffsteuerung mit Editieren der Datei `/etc/???` #### Zugriff auf SMB Freigaben
-
Windows:
-
Proxmox:
-
macOS und Linux:
-
Nötige Erweiterung für Linux-Zugriff
- ``` ??? ``` -
per fstab
-
???
## Vergleich SAN Protokolle
-
**Vorteile NFS**
-
schlank
-
einfach
-
übersichlich bei Fehlersuche
-
schnell
-
**Nachteile NFS**
-
Wenig Funktionen
-
kein Multipath (Gleichzeitiger Zugriff von mehreren Servern)
-
kein Sharing von Volumes
-
keine UUID (eindeutige Identifizierung)
-
**Vorteile iSCSI**
-
Multipath
-
HA
-
Sharing von Volumes
-
Blockgrößen und etliche Paramter
-
Eindeutige Identifizierung
-
Hoher Funktionsumfang
-
**Nachteile iSCSI**
-
aufwendiges Setup
-
schwierige Fehlersuche
-
schlechte Integration PVE
## Vergleich Fileserver Windows, UCS, TrueNAS und Zamba
-
**Windows**
-
Natives SMB
-
Kritischer Windows Unterbau
-
Partitionierung notwendig
-
NTFS Probleme
-
Kein ZFS, dafür wenige Wiederherstellungspunkte möglich
-
**Univention**
-
Klassiches, aktuelles Samba
-
Umfangreiches System als Unterbau
-
LVM bei Kapaziätserweiterung notwenidg
-
EXT4
-
Kein ZFS, keine Schattenkopien
-
**TrueNAS**
-
Volle GUI, ZFS und Replikationen, Monitoring
-
Extra Hardware
-
Läuft direkt auf Hardware, daher schnell
-
**Zamba**
-
Schnelle Bereitstellung per LXC
-
Schlank und schnell, da quasi direkt auf ZFS
-
Schattenkopien so viele man möchte
-
ZFS GUI via Cockpit, Wiederherstellung via Windows-Explorer
-
Erste Wahl bei Einsatz von Debian oder Proxmox
[hoch](https://wiki.cloudistboese.de/doku.php?id=wikiintern:zfssharing#zsh_inhalt "wikiintern:zfssharing ↵") — *[Andi Treml](mailto:info@tremlnet.de "info@tremlnet.de") 2021/05/15 14:33-16:* # Proxmox VM mit ZFS Auto-Snapshots klonen ##### Falls man bei Proxmox die Autosnapshots aktiviert hat, ist es recht einfach einen Klon oder von einem Replikat einen Snapshot zum Test zu booten, ggf. ohne Netzwerk **Auflisten der VMs** qm list **2001** OpnSense-Node-PVE-HA running 16384 40.00 3675016 **Auflisten der Disks** zfs list | grep **2001** *rpool-hdd/data/sysops/vm-**2001-disk-1** * **Auflisten der Snapshots** zfs list -t snapshot rpool-hdd/data/sysops/vm-2001-disk-1 *rpool-hdd/data/sysops/vm-2001-disk-1@backup-zfs\_2023-05-04\_01:04:24 15.9M - 13.8G -* *rpool-hdd/data/sysops/vm-2001-disk-1@zfs-auto-snap\_hourly-2023-05-03-2355 16.0M - 13.8G -* *rpool-hdd/data/sysops/vm-2001-disk-1@zfs-auto-snap\_hourly-2023-05-04-0055 22.6M - 13.8G -* *rpool-hdd/data/sysops/vm-2001-disk-1@zfs-auto-snap\_hourly-2023-05-04-0155 18.7M - 13.8G -* *rpool-hdd/data/sysops/vm-2001-disk-1@zfs-auto-snap\_hourly-2023-05-04-0255 18.8M - 13.8G -* ... **Klonen der Disk, keine Last, kein Platz, keine Zeit** zfs clone rpool-hdd/data/sysops/vm-2001-disk-1@backup-zfs\_2023-05-04\_01:04:24 rpool-hdd/clone/vm-2001-disk-9 *rpool-hdd/clone/vm-2001-disk-9 35.9M 11.3T 13.8G - rpool-hdd/data/sysops/vm-2001-disk-1 21.5G 11.3T 13.8G -* **Datastore anlegen für Clones** [![image.png](https://aow.de/uploads/images/gallery/2023-05/scaled-1680-/image.png)](https://aow.de/uploads/images/gallery/2023-05/image.png) **Konfig kopieren** cd /etc/pve/qemu-server #dort liegen die VM Definitionen des aktuellen Hosts cp 2001.conf 9992001.conf #kopiert die Konfiguration, Achtung wegen Autostart und Nettwerkkarten! nano 9992001.conf Dort die Disk ändern auf **rpool-hdd-clone:vm-2001-disk-9 #Achtung: muss geändert werden, sonst bootet die Disk aus zwei VMs und geht defekt!** **Dann die VM 9992001 Netzwerkkarten in GUI optional deaktivieren** qm start 9992001 **Am Ende kann die VM gelöscht werden, der Klon sollte verschwinden, ansonsten kann er über die GUI im Store rpool-hdd-clone gelöscht werden!** **Sichere Prüfung zum Klon löschen** zfs get origin rpool-hdd/clone/vm-2001-disk-9 #nur ein Klon hat ein Origin *rpool-hdd/clone/vm-2001-disk-9 origin rpool-hdd/data/sysops/vm-2001-disk-1@backup-zfs\_2023-05-04\_01:04:24 -* zfs destroy -r rpool-hdd/clone/vm-2001-disk-9 #der ist dann definitiv für immer weg cz # Schutz mit ZFS für VSphere und Hyper-V [![image.png](https://aow.de/uploads/images/gallery/2023-09/scaled-1680-/0iqimage.png)](https://aow.de/uploads/images/gallery/2023-09/0iqimage.png) #### TrueNAS Scale/Core Es ist nicht notwendig auf teure, proprietäre SAN Systeme zurückzugreifen. Die Erfahrung zeigt dass gerade diese Geräte im Notfall eine hohe Abhängigkeit vom Hersteller mit sich bringen. Ebenfalls wird oft der Support verweigert wenn die SAN nicht den Vorstellungen des Hypervisor Supporters entspricht und umgekehrt. Mit einer TrueNAS SAN Lösung kann fast jede beliebige Server Hardware als Basis genutzt werden. Open ZFS ist in der Scale Version in Debian, in der ausgereifteren Core Version in FreeBSD enthalten und seit über 15 Jahren bewährt! Es entstehen keine Kosten für den Betrieb und die Updates gehen erfahrungsgemäß über eine Dekade ohne Probleme. Verschlüsselung, Replikation, Monitoring und Snapshots sind hier Standard. Ein Hardware Raid Controller wird wie immer nicht benötigt und man spart so noch mehr Geld! #### Proxmox Virtual Environment Ist ein Umstieg auf Proxmox geplant, profitiert man hier durch die hohe Flexibilität vom darunter liegenden Debian. Sowohl Hypervisor, also auch ZFS sind hier im Kernel enthalten. Für kleinere Installationen ist der NFS-Kernel-Server hier eine willkommene, zu VMware VSpehere sehr kompatible Alternative zum üblichen iSCSI Protokoll. So kann Proxmox hier für die Übergangszeit sowohl SAN, als auch später die Hypervisor Rolle übernehmen, nahtlos! Sobald die erste virtuelle Maschine auf Proxmox mit ZFS migriert wurde, profitiert sie sofort von Raid, Snapshots, Kompression und Replikationen. Eine sehr einfach umzusetzende, verständliche und nachhaltige Lösung! #### Variante NAS auf ZFS mit TrueNAS oder Zamba aus der LXC-Toolbox Liegt der Fokus eher auf Dateiablage und nicht auf virtuellen Maschinen, so kann man diese einfach auf ZFS ablegen. Der Anwender wird sofort unter der Explorer Funktion “Vorherige Versionen” alle Snapshots des Systems sehen. Active Directory Integration ist selbstverständlich vorhanden, wie auch die Administration der Benutzerrechte über den gewohnten Weg. Dank der eigens entwickelten Zamba Lösung ist es nicht mehr notwendig dedizierte Hardware für ein ZFS basiertes NAS zu verwenden, ist aber trotzdem möglich! #### Backup durch ZFS absichern Wie bereits beschrieben können Backups aller Systeme auf ZFS NAS Lösungen gespeichert und tagelang mit Snapshots gegen Kompromittierung abgesichert werden. Als Hardware geht es hier von Raspberry Pi4 bis High End Server! #### Hardware für ZFS Sie finden spezielle Hardware für Proxmox, TrueNAS und Opensense bei unseren Partnern Thomas-Krenn.AG (neu) und Servershop24 (gebrauchte Geräte, bitte mit HBA anfragen) [![image.png](https://aow.de/uploads/images/gallery/2023-09/scaled-1680-/9Knimage.png)](https://aow.de/uploads/images/gallery/2023-09/9Knimage.png) #### [zfs.rocks Videos bei YouTube](http://zfs.rocks) # ZSF für Firmen SAN, NAS und Fileserver ZFS für Firmen Inhaltsverzeichnis 1\. Allgemein 3 1.1. Links zu den Youtube Video und Nextcloud 3 2\. Installation von ProxMox 3 3\. ZFS Themen / Konfiguration von ProxMox 4 3.1. ZFS Grundlagen 4 3.2. ProxMox Grundeinstellungen 4 3.2.1. ssh Schlüssel 4 3.2.2. ssh Passwort login abschalten 4 3.2.3. 2 Faktor Authentifizierung 5 3.3. ProxMox ZFS Befehle 5 3.4. ProxMox boot Platten 5 3.5. ProxMox Datenträger 6 3.5.1. Datenträger (Datastore) local 6 3.5.2. Datenträger (Datastore) local-zfs 6 3.6. ProxMox Container (LXC) 6 3.7. ProxMox VM 6 3.8. ProxMox - Linux’s command’s 7 3.9. ProxMox - GUI 8 3.10.ProxMox - VM geben freigegebenen Platz an den Hypervisor zurück 10 3.11.ProxMox - Windows Platte vergrößern 10 3.12.ProxMox - Postinstaller für ProxMox (Github BashClub) 11 3.13.TrueNAS Core - Installation 12 3.14.TrueNAS Core - GUI 13 3.15.TrueNAS Core - zpool import Troubleshooting - zu neue Version von ProxMox ZFS 14 3.16.ProxMox - NFS 15 3.17.ProxMox - NFS / iSCSI 20 © 21.02.2024, syopstv, Version 0.1 Seite 1 ZFS für Firmen 3.18.TrueNAS Scale - NFS 20 3.19.TrueNAS Scale - iSCSI 25 3.20.TrueNAS Scale - iSCSI LUN vergößern 29 3.21.Fileserver 31 3.21.1. Univention Server UCS 31 3.21.2. Zamba-lxc-toolbox 33 3.21.3. TrueNAS Scale 35 3.22.ProxMox auf Raspberry sichern mit Thorstens Tool 36 3.23.Check-zfs-replication kommt auf RaspberryPI (Ziel) 37 © 21.02.2024, syopstv, Version 0.1 Seite 2 ZFS für Firmen ZMS für Firmen 1\. Allgemein 1.1. Links zu den Youtube Video und Nextcloud Workshop 13.02.2024 und 15.02.2024 Youtube Link Dienstag Youtuve Link Donnerstag Die Aufzeichnungen findet ihr im Kurs, der wiederum auf ein Textdokument in der Nextcloud verweist! Der Nextcloudlink ist immer im Kurs oben, bzw. hier 2\. Installation von ProxMox Die Installation von ProxMox erfolgt über den ISO File, dies muss z.B. auf einen USB Stick geschrieben werden, damit davon gebootet werden kann. Man sollte nach Möglichkeit (U)EFI für die Installation auswählen, darüber werden dann die brotfähigen Platten erkannt. Leacy boot: blauer Bildschirm (U)EFI boot: schwarzer Bildschirm ZFS wird ausschließlich auf echte Festplatten installiert ! (Ausnahme AHCI oder HBA Controller) Über den Button <options> kann man mehr auswählen. ZFS Mirror • ashift: 12 —-> entspricht 2^12 = 4k • Compression: on • Checksum: on • Copies: 1 • ARC max size: <Standard> - ProxMox Postinstaller passt den Wert später an - Empfehlung: 1 GB pro 1 TB Netto • Disksize: <kann bei Bedarf angepasst werden> - Chriz: 128G von ca. 400G Bei Passwort undE-Mail Adresse Tastatur Layout beachten. (Sonderzeichen wie z.B. @) Bei Hostname gleich den richtigen Namen eintragen. Eine spätere Änderung kann durchgeführt werden, aber evtl. nicht ganz so einfach. Neben dem Workshop wird noch ein zweiter Produktion Server mit ProxMox betankt. Der ein Backupserver werden soll. © 21.02.2024, syopstv, Version 0.1 Seite 3 ZFS für Firmen 3\. ZFS Themen / Konfiguration von ProxMox Anmerkung: In der Doku wird service wie im Workshop verwendet. In Debian gibt es das neue commando systemctl. Beispiel: • Alt: service nfs-kernel-server status • Neu: systemctl status nfs-kernel-server Beide commandos machen im Prinzip das selbe. 3.1. ZFS Grundlagen • ZFS Auslastung max. 80 % • 90 % wird es langsam • Ab 95 % geht nichts mehr • ZFS braucht Ressourcen • CPU • RAM 3.2. ProxMox Grundeinstellungen 3.2.1. ssh Schlüssel Aufbau der ersten ssh Verbindung zum ProxMox Server als User root kommt die Abfrage des ssh Fingerprint, dieser muss mit yes beantwortet werden. D.h. das Passwort Login ist aktiv. Auf Linux / Unix / Mac liegen die ssh Schlüssel in den versteckten Verzeichnis .ssh. Privater Schlüssel: id\_rsa Öffentlichen Schlüssel: id\_rda.pub Generation des keys über: ssh-keygen Der public Key wird auf dem ProMox unter /root/.ssh in der Datei authorized\_keys kopiert. Vom Client kann der Key mittel ssh-copy-id root@<ip des ProxMox> 3.2.2. ssh Passwort login abschalten Die Configuration des ssh Daemon liegt unter /etc/ssh Mit einen Editor Nano oder vi muss die Datei sshd\_config editiert werden. Alter Wert: PermitRootLogin yes Neuer Wert: PermitRootLogin without-password © 21.02.2024, syopstv, Version 0.1 Seite 4 ZFS für Firmen Restart des ssh Daemon: service ssh reload 3.2.3. 2 Faktor Authentifizierung Auf der ProxMox GUI unter User den User root auswählen und danach two factor - add TOTP (time-based one-time password) konfigurieren. Zum Einrichten wird z.B. google Authenticator oder Microsoft, … benötigt. 3.3. ProxMox ZFS Befehle Es gibt zwei ZFS Commands: • zpool • zfs Die Commands zpool und zfs nutzen das selbe Kernel Modul. Folgende Commands sind hilfreich: • zpool list • zfs list • zpool history - alle zpool und zfs Befehl, die abgesetzt worden sind • ——————- Sinnvoll die Liste zu vervollständigen ??!! ————————————————— • Troubleshooting NFS • cat /etc/exports.d/zfs.exports —> ZFS exports • zfs create -o sharenfs=on rpool/nfs —> Wir machen das jetzt ohne Permission Check, so nicht nachmachen • showmount -- exports —> Zeigt Exporte an 3.4. ProxMox boot Platten Besteht aus einen Mirror und die boot Platten besitzen 3 Partitionen, die ersten beiden sind für das Booten und die 3. ist die ZFS Partition von ProxMox. ProxMox ZFS Partiton rpool/ROOT/pve-1 wird als / gemountet. rpool/ROOT ist einfach eine leere Verwaltungsebene. Weiterhin wird ein rpool/data für die VM, LXC, d.h. dort liegen die Daten Einige zfs Parameter: • zfs set compression=on rpool • zfs set bootfs=/ rppol/ROOT/pve-1 • … Start-Partitionen werden über proxmox-boot verwaltet. • proxmox-boot-tool status © 21.02.2024, syopstv, Version 0.1 Seite 5 ZFS für Firmen ISO Vorlagen werden jetzt unter rpool/var-lib-vz abgelegt, welches unter /var/lib/vz gemoutet, früher wurde es in root Filesystem abgelegt. 3.5. ProxMox Datenträger 3.5.1. Datenträger (Datastore) local Der Datastore ist für: (File basiert) • Backups • ISO Images • CT Templates 3.5.2. Datenträger (Datastore) local-zfs Der Datastore ist für: (Block basiert) • VM Disks • CT Volumes 3.6. ProxMox Container (LXC) In der ProxMox GUI wird ein Container angelegt (nur wichtige Felder der Config): • ssh public key kann in ein Feld der Configuration kopiert werden • Temples für LXC Container auswählen • Disk Size: 12 —> Größe des Filessystems, ist nur ein Limit Der angelegte Container liegt unter rpool/data/subvol-100-disk-0 und wird in ProxMox gemoutet /rpool/data/subvol-100-disk-0 Bei LXC Containern werden Dataset’s verwendet. 3.7. ProxMox VM ProxMox nutzt Linux KVM. In der ProxMox GUI wird eine VM angelegt (nur wichtige Felder der Config): • Machine: q35 • BIOS: OVMF (UEFI) • EFI Storage: local-zfs • SCSI Controller: VirtIO SCSI single (default) • Qemu Agent: angeharkt • Bus/Device: SCSI • SSD emulation: angeharkt • Discard: angeharkt • CPU: • Memory: • Network Model: VirtIO • OS type: Windows - Standard: Linux © 21.02.2024, syopstv, Version 0.1 Seite 6 ZFS für Firmen Chriz: Empfehlung Unter Hardware Version 5.1 verwenden Unter Hardware noch folgendes hinzufügen: • CD/DVD: VirtIO Treiber in VM herein hängen (local Storage)—> Evtl. muss das ISO heruntergeladen werden, falls der Postinstaller noch nicht ausgeführt worden VM in ProMox starten. Auf dem ProxMox in der CLI nachschauen: • zfs list Es werden zwei Partitionen für die Windows VM angezeigt. Die erste Partition ist für UEFI Boot Partition. Die beiden Partionen der Windows VM haben keinen Mountpoint, da es sich um Block Device handelt, also zvol’s. Bei der Windows Installation müssen die VirtIO Treiber geladen werden. VirtIO SCSI Single auswählen - heißt VIOScsi Während der Installation hat Windows nur 3 Partitionen. Es gibt keinen Unterschied zwischen physikalischen Platten und virtuellen Platten (vol’s). Das zvol kann auf eine physikalische Platte kopiert werden. Die Installation wird ohne aktive Netzwerkkarte durchgeführt und für den User wird kein Passwort vergeben. Windows wird gestoppt und wieder hochfahren und einloggen. Danach hat Windows die Wiederherstellungspartition erzeugt. Damit gibt es 4 Partitionen, damit kann die Partition 3 nicht einfach erweitert. Dazu muss die Partition 4 vorher gelöscht werden. 3.8. ProxMox - Linux’s command’s • lsblk • partprobe —> apt install parted • Zeigt die geänderten Partitionen der Installation an • dmesg -wT —> zeigt neue Festplatten die zusätzlich gesteckt werden • ls -althr /dev/zvol/rpool/data —> zeigt die Platten Zurordnung zum zvol • dd if=/dev/zvol/data/vm-101-disk-1 of=/dev/sdc bs=1M status=progress — >kopieren des zvol’s bei ausgeschalteter VM • zfs list -t snapshot —> zeigt die ZFS snapshot’s an • zfs clone rpool/data/vm\_101-disk-1@frisch rpool/data/vm-101-disk-9 —> Clone anlegen • zpool import Raid10 —> Importiert den Pool Raid10 • zpool import <id> alt —> Importiert den Pool mit der <id> (Raid10) unter dem Pool alt • zpool import -f <id> alt —>Importiert den Pool mit der <id> Raid10 unter dem Pool alt, der einen anderen System gehört • zpool export alt - wirft den Pool alt aus • zpool create -n backup raidz <disk1> <disk2> <disk3> <disk4> <disk 5> <disk 6> —> -n heißt try run, raidz bedeutet RAID5 und der Pool backup wird angelegt • cfdisk /dev/disk/by-id/<ata-ST160000…> —> zeigt Größe an • zpool destroy backup —> löscht den ZFS Pool backup © 21.02.2024, syopstv, Version 0.1 Seite 7 ZFS für Firmen • sgdisk /dev/disk/by-id/<ata-…> -R /dev/disk/by-id/ata-…> —> kopiert Festplattenpartitonen • zfs set compression=on backup —> ZFS Compression einschalten • zfs get compression —> Zeigt die Propery compression aller zfs pool an • zpool add -n backup mirror <disk-n>-part2 <disk-m>-part2 —> An den bestehenden RAID5 wird ein Mirror angefügt • zpool iostat -v 1 - ZFS Schreibvorgänge RAID 5 ist schneller als RAID5 mit Mirror hinten dran. (RAID 50) • iotop -Festplatten Auslastung • Alternative: Ein ZFS Backup Pool mit RAID5 und einen zweiten Backup Pool mit einen ZFS Mirror. 3.9. ProxMox - GUI Zweite HDD mit 1 TB in den Server stecken, das erkennen kann über dmesg -Tw auf der CLI verfolgt werden. Da die Platten nicht leer sind werden diese auf der GUI gewipped. (Partitionen gelöscht) Unter ZFS • Create ZFS • Name: rpool-hdd • Platten auswählen • RAID Level: Mirror • <create> • Hinweis beachten: ZFS is not compatible with disks backed by hardware RAID controller. zpool history zeigt: • zpool create -o ashift=12 pool-hdd mirror <disk1> <disk2> • zfs set compression=on spool-hdd Was die GUI nicht macht: • zfs set rpool-data/data - Immer gleiches Ablage Konzept Unter der GUI wir rpool-hdd angezeigt. Das will Chriz nicht sehen TIPP: Chriz macht es anders: • Unter Storage wird rpool-hdd wieder gelöscht • Unter Storage Add ZFS (Store Typ ZFS) • ID: rpool-data • ZFS Pool: rpool/data • Thin provision: angeharkt • Block Size: 16k (Bei RAID5) • Unter Storage Add ZFS (Store Typ ZFS) - gleich für rpool-hdd/data • ID: rpool-hdd-data • ZFS Pool: rpool-hdd/data • Thin provision: angeharkt • Block Size: 16k (Bei RAID5) © 21.02.2024, syopstv, Version 0.1 Seite 8 ZFS für Firmen CLI: Wichtig zu wissen ist, wie groß ist die recordsize (Dataset) und volblocksize (zvol) ! • zfs get recordsize rpool/data/subvol-100-disk-0 • 128k - jede Datei braucht min. 128 k • Bei vielen kleinen Dateien muss mit einen special device gearbeitet werden (Kurs: ZFS Grundlagen) Löschen des Cones: • zfs destroy rpool/data/vm-101-disk-9 Für zvol gibt es: • zfs get volblocksize rpool/data/vm-101-disk-1 • Value: 16k —> Seit wann ist das 16k - interessant Bemerkung von Chriz dazu, ist normalerweise auf 8k Zur Klärung: Auf der GUI: • VM 100 • Hardware • Add: Hard Disk • Auf local-zfs • Disk Size: 10 Auf der CLI wird folgendes angezeigt: • zfs history • zfs create -s -V 10485760k rpool/data/vm-101-disk-2 • zfs get volblocksize rpool/data/vm-101-disk-2 —> immer noch 16k, neuer default bei OpenZFS ist 16k! PVE zeigt 8k an, besser 16k überschreiben ! Wurde eine VM Disk mit 8k angelegt, kann das Probleme dadurch gelöst werden, dass die Disk auf einen Pool mit 16K verschoben wird, aber dann geht die snapshot history verloren !!! • zfs get all rpool/data/vm-101-disk-3 —> Neuer Name der Disk wegen umkopieren ZFS macht das Partition Alignment automatisch. Cfdisk /dev/sda zeigt die erste Partition startet bei 34 ! Wird dies nicht gemacht kann das zu Performance Problemen führen. Die neue erzeugte Platte muss in Windows erstmal sichtbar gemacht werden, bevor sie formatiert werden kann. Bei Formatieren kann dann auch z.B. 16k als Größe für die Zuordnungseinheit ausgewählt werden. Diese Wert ist dann vom Anwendungsfall abhängig. Bei der Laufwerkszuordnung kann statt dem Laufwerksbuchstaben auch ein Verzeichnis z.B. auf Laufwerk C: ausgewählt bzw. erzeugt werden. (z.B. C:\\Lexware) D.h. diese Verzeichnis liegt dann z.B. auf SSD. Frage: Wenn ich eine Blocksize von 4k brauche. Dann muss eine ashift=9 bei zpool angegeben werden und man kommt bis auf 4k runter. © 21.02.2024, syopstv, Version 0.1 Seite 9 ZFS für Firmen 3.10.ProxMox - VM geben freigegebenen Platz an den Hypervisor zurück Die Windows Systemplatte hat eine Größe von max 32 GB und belegt auf ZFS 7,27 GB. Da die Treiber noch fehlen, werden die restlichen Treiber im Windows installiert und anschließend laden wir Daten aus dem Internet herunter. Alternative kann auch die Treiber DVD als Datenquellegenutzt werden, um diese auf downloads abzulegen. Werden die Daten auch gleich wieder gelöscht, geht die Belegung auf dem Pool auch gleich wieder runter. (Discard) • zfs get compression rpool/data/vm-101-disk-1 —> zeigt die Compression • zfs get compression —> zeigt die Compression aller Pools an Dann wieder den Platz auch wieder an den Hypervisor zurück gibt sind folgende Einstellung in Windows erforderlich: • Eigenschaften von Laufwerk C: • Tools - Optimieren • Für schlanke Speichernutzung • Einstellungen ändern • Auf täglich ändern —> liebsten stündlich und das ganze für alle Laufwerke • Optimieren • zfs list —> zeigt das der Platz an den Hypervisor zurückgegeben wird, kann evtl. einen kleinen Moment dauern Linux: dort heißt es fstrim -av um den Platz unter Linux an den Hypervisor zurück zugeben. Dies wird über die Crontab regelmäßig ausgeführt. (crontab -l) Crontab Eintrag: 0 0 \* \* \* /sbin/fstrim -a Bei Dataset besteht das Problem nicht da der Platz direkt wieder freigegeben wird. 3.11.ProxMox - Windows Platte vergrößern In der ProxMox GUI: • Windows VM • Hardware • Richtige Hard Disk auswählen • Resize 8 - Vergrößerung um 8 GB • ProxMox macht die Vergrößerung in Realtime In der VM sehen wir die Vergrößerung um 8 GB • Aber die Wiederherstellungspartion von Windows liegt hinter dem Windows Laufwerk • In Windows gibt es kein löschen Zurück auf CLI: • cfdisk /dev/zvol/rpool/data/vm-101-disk-1 • Wiederherstellungspartition löschen • Schreiben © 21.02.2024, syopstv, Version 0.1 Seite 10 ZFS für Firmen Wieder zurück in Windows VM • <F5> bzw. Datenträger neueinlesen • Die Windows Partition kann jetzt im Windows vergrößert werden —> Chriz hat sich angewöhnt dies in Windows zu machen, da Windows da manchmal zickig ist … 3.12.ProxMox - Postinstaller für ProxMox (Github BashClub) Im Browser: • GitHub.com/bashclub • Postinstaller (proxmox-zfs-postinstall) • Branch dev auswählen - wir nehmen die neuere Version • Der dev Branch ist eigentlich eine Entwicklungsbereich, im Normalfall sollte man für die Produktion den Branch main nehmen —> Chriz wollte für den Workshop die neue Version nehmen, da diese aber noch nicht veröffentlich ist nehmen wir den Branch dev • Die beiden Zeilen für die Installation kopieren und auf der Maschine ausführen CLI: • wget-O ./postinstall —no-cache https://<git Adresse> • bash ./postinstall • zfs\_arc • Min • Max • <Accept> • Wappiness: Percentage off free RAM to start swapping • 5 • Set locales • en\_US.UTF-8 • <cancel> • Harden ssh server • <HARDEN SSH SERVER> • Configure ZFS-Auto-Snapshots • Monthly: 3 • Weeks: 6 • Daily: 14 • Frequent: 12 (Viertel Stunden) • Hourly: 96 • Choose ProxMox VE repository • Pve-no-subscription oder evtl. pve-enterprise besser getestet Updates • Ceph • None • Do you want to suppress the no subscription warning in WebGUI ? • <SUPRESS WARNING> • Mail Config —> ganz neu • Sender display name • pve • Servername of smartest • mail.example.com • Port of smarthost • 25 • Email Address • pve@example.com • Do you want to configure authentication against your smarthost ? • <cancel> • Set default block size © 21.02.2024, syopstv, Version 0.1 Seite 11 ZFS für Firmen • <skip> • Summary • <Install> • Installiert Update, Tools und passt die Config’s an • zfs list -t snapshot —> zeigt schon einige Snapshots nach der kurzen Pause ProxMox herunterfahren 3.13.TrueNAS Core - Installation TrueNAS Core basiert auf FreeBSD und ist ein Unix System und kein Linux. Eine weitere SSD einbauen bzw. z.B. über USB anschließen Installationsdevice für TrueNAS CoreVersion 13 Im Bootmenü werden jetzt viele Platten zum Booten angezeigt. TrueNAS Installer auswählen und starten lassen • Install / Upgrade • Anmerkung Chriz: Auf der Installer Disk liegen keine Daten !!! • Device für die Installation auswählen - hier ssd • Warnmeldung • Keine USB Stick’s mehr verwenden • Installationsplatte kann keine Daten enthalten - siehe Anmerkung Chriz • Abfrage root Passwort • Boot via UEFI • Alternativ: Boot via BIOS • Nach Abschluss der Installation kommt das Installationsmenü zurück • Reboot auswählen © 21.02.2024, syopstv, Version 0.1 Seite 12 ZFS für Firmen 3.14.TrueNAS Core - GUI TrueNAS Core GUI • Storage • Pools • Create • Auf import wechseln • Encryption with GELI • Nein • Jetzt sollte er die Pools finden • Pool werden nicht gefunden • Die Pool waren in Benutzung • Die Pool wurden nicht exportiert • Check ob die Platten in der GUI gesehen werden • Storage • Disks • Es werden alle Platten gefunden • Shell • zpool import • Zeigt die Pools an, aber nicht alle werden sauber angezeigt • z.B. gibt es einen rpool der unvail ist • Es gibt den rpool zweimal !!! • Kommentar Chriz: schwer verkackt … • Lass uns ssh einschalten … • Ssh Dienst aktivieren • Aktivierung start automatisch • Passwort login für root aktivieren • ssh root@<ip> • Ssh beschwert sich über den geänderten Fingerabbruch, da wir ja jetzt auf ein TrueNAS Core uns einloggen wollen • Jetzt muss die Datei /Users/Studio/.ssh/known\_hosts editiert werden • Die betroffene Zeile wird mit einen :<zeilennummer> angezeigt • Die entsprechende Zeile muss mit einen Editor vi oder nano editiert werden • Evtl. gibt es mehrere Einträge für die gleiche IP Adresse • Diese Zeilen müssen gelöscht werden Aufgrund der aufgetreten Probleme bei zpool import wurde der gesamte Bereich in das Troubleshooting verschoben © 21.02.2024, syopstv, Version 0.1 Seite 13 ZFS für Firmen 3.15.TrueNAS Core - zpool import Troubleshooting - zu neue Version von ProxMox ZFS Die Anfänge über die Problematik sind im vorherigen Kapitel zu finden. TrueNAS CLI • ssh root@<ip> • So jetzt sind wir auf dem TrueNAS • zpool status • Nur boot-pool von TrueNAS • zpool import • Chriz: Ich glaube, dass ich weiß, was soll ist • rpool - unvail - unsuyppored feature • Ein rpool, der viel zu neu ist • Noch ein toten rpool auf SSD • 3. rpool with symbolischen Links von Linux (disk/by-id/ata-ST2000…-part3 • zpool import -d /dev/ —> schaue im /dev Ordner - Profi Trick • zpool import -d /dev/ <id> rpool —> Import über die Pool ID, die unter dem Pool Namen angezeigt wird • Pool kann nicht import werden, da es einen anderen Host gehört (hostid=<nummer>) • zpool import -f -d /dev/ <id> rpool —> one or more devices is currently unavailable • Chriz: Es geht das erste Mal nicht freiwillig … • zpool import -f -d /dev/ <id> rpool2 —> mit anderen Namen funktioniert auch nicht • zpool status —> Überblick verschaffen • zpool import —> Überblick verschaffen • rpool-hdd wäre da und verfügbar • zpool import rpool-hdd —> gehört einen anderen System wie oben • zpool import -f rpool-hdd —> pool nicht importiert werden aufgrund eine unsupported version or feature - ProxMox hat ein zu neues ZFS • Man könnte den Pool jetzt nur read-only importiert werden • zpool import -f rpool-hdd -o readonly=on ?? —> Syntax muss man noch mal genau schauen TrueNAS GUI • System • Update • Es gab ein neues Update 13.0-U6 • Update durchführen • Update bringt einen neuen Kernel mit TrueNAS CLI vor den Upgrade und reboot • zfs -v —> zfs-2.1.5-1 ProxMox Produktion Chriz • zfs -v —> zfs-2.2.2 © 21.02.2024, syopstv, Version 0.1 Seite 14 ZFS für Firmen Situation kommt durch die Workshop Situation. Durch die Neuinstallation von ProxMox haben wir dort eine neuere ZFS Version, im Normalfall hat man diese Situation so nicht. Über eine ZFS replacation könnte man das Problem lösen. Erklärung zur den ZFS Versionen: • PVE 7 • ZFS 2.0.1 (Version ist geraten !!!) • PVE 8.1 • ZFS 2.2.1 • Pool ist noch auf 2.0.1 • Bist Du sagst zpool upgrade —> zieht die Features nach Wird eine neue ZFS Version installiert, sind die neue Features nicht aktiviert. Diese müssen über zpool upgrade installiert werden. Man sollte das neue ZFS ca. 2 Wochen ohne die Aktivierung der neuen Features am laufen haben. Den Zpool Upgrade sollte man zeitnah aber nicht sofort machen. Solange die ZFS Features noch nicht aktiviert sind kann man immer noch mit dem alten Kernel booten, falls der Kernel buggy sein sollte. Aber nach eine Upgrade geht das aber nicht mehr. TrueNAS CLI nach dem Upgrade • zfs -v —> zfs-2.1.5.14 • zpool import -d /dev -V <id> rpool2 —> gehört noch anderen Host • zpool import -d /dev -V <id> rpool2 -f —> rpool state unvail könnte jetzt importiert werden - System ist abgehackt und bootet neu • Boot mit TrueNAS letzter Versuch • Erneuter Versuch schlägt auch fehl • Wir booten wieder mit ProxMox Wenn ich jetzt doch TrueNAS haben will wegen SAN: • Instabilen Upgrade Pfad auswählen • Alternative wäre es mit TrueNAS Scale versuchen, da es ja auf Linux basiert 3.16.ProxMox - NFS Jetzt müsste eigentlich der ProxMox boot scheitert, da wir den rpool als rpool2 importiert hatten, aber anscheinend hat er es vorhin doch nicht geschafft den Pool auf TrueNAS Core zu importierten. Da bootet der ProxMox ganz normal. CLI ProxMox • ssh root@<ip> —> Hostkey hat sich wieder geändert, d.h. die known\_hosts muss wieder angepasst werden • zfs list —> wir wollen die VM des Workshop PVE auf einen anderen ProMox ausführen. • LXC Container hat das falsche Format • VM geht nur mit iSCSI zu veröffentlichen • apt install nfs-kernel server —> NFS Server installieren, danach ist ProxMox ein SAN • Für NFS sollte ein eigenes Netzwerkinterface genutzt werden • zfs create -o sharenfs=on rpool/nfs —> Wir machen das jetzt ohne Permission Check, so nicht nachmachen • Besser mit Permissions: © 21.02.2024, syopstv, Version 0.1 Seite 15 ZFS für Firmen • zfs list -t filesystem -oname,sharenfs • Raid5a/test rw=@192.168.200.99:172.16.5.47 • zfs list —> wir haben jetzt local Storage und shared Storage • zfs create rpool/nfs/vm-101-disk-0 —> Wir machen es etwas ordentlicher • zfs create rpool/nfs/vm-101-disk-1 • zfs create rpool/nfs/vm-101-disk-3 • zfs list —> bei NFS muss ein Volume zur Freigabe vorher in ein vmd, raw, qcow2, vidx, etc in ein dataset konvertiert werden • showmount —exports # zeigt 4 Freigaben - durch Vererbung sind die weiteren Freigaben dazu gekommen • chmod -R 777 /rpool/nfs —> Thema Berechtigungen ist Thema für sich ProxMox GUI • Storage • Add NFS —> Fenster ist der NFS Client • ID: rpool-data-vm-101-disk-1 • Server: localhost —> z.B. • Export: /rpool/nfs/vm-101-disk-1 ProxMox CLI • zfs list • cd /rpool/nfs/vm-101-disk-1 • cd images ProxMox GUI • Windows VM wird wieder gestartet • Hardware • Hard Disk (scsi0) • Disk Action • Move Storage • Disk: scsi0 • Target Storage: rpool-data-vm-101-disk-1 • Format: Raw disk image (raw) • Delete source: wird nicht angehart —> Abhängig von Anwendungsfall ProxMox CLI —> Zum Verständnis zum Teil von Oben übernommen • zfs list • cd /rpool/nfs/vm-101-disk-1 • cd images • ————————- • cd 101 • ls -althr —-> zeigt Datei: vm-101-disk-0.raw • Die Datei ist durch den Ablage Ort …/nfs/… schon per NFS freigegeben • Frage Chriz: Was kann man mit einer .raw Datei machen ? • Antwort: Man kann sie per iSCSI später freigeben ProxMox GUI • Windows VM • Hardware • Harddisk (scsci) • rpool-data-vm-101-disk-1:101/vm-101-disk-0.raw • Windows VM stoppen © 21.02.2024, syopstv, Version 0.1 Seite 16 ZFS für Firmen ProxMox GUI - zweiter PVE (nicht Workshop) • Storage • Add NFS • ID: vm-101-disk-1 —> müsste eigentlich Disk-0 heißen, wird später in der Config der VM angepasst • Server: <IP Workshop PVE> • Export: /rpool/nfs/vm-101-disk-0 ProxMox CLI - Workshop - lass uns ein ProxMox Cluster bauen • Um ein Cluster zu bauen, sollte er nicht von VM Definitionen und Containern wissen • mv /etc/pve/qemu-server/101.conf . —> Wir haben ja nur eine VM • mv /etc/pve/lxc/\* . —> LXC Container wird auch nach /root verschoben • Damit der der ProxMox Workshop ohne VM und LXC Container und die Definitionen sind gesichert • Zur Sicherheit kopiert Chriz die Data Storage auch noch mal wegen, da dort auch schon Änderungen drin sind • cp /etc/pve/storage.cfg . ProxMox GUI - zweiter PVE (nicht Workshop) • Cluster • Create Cluster • Cluster Name: sysops • Cluster Network: <Cluster Netzwerk auswählen> • Cluster • Cluster Join Information • Join Information: <string> —> Join Information <string> kopieren ProxMox GUI - PVE Workshop • Cluster • Cluster Join • Information: <lee> —> Einfügen der Join Information <string> • Peer Adress: <zweiter PVE (nicht Workshop)> • Password: <Passwort von zweiter PVE (nicht Workshop)> • Cluster Network: <Netzwerk Link überprüfen> • Jetzt bekommt der PVE ein neues Zertifikat ProxMox CLI - Workshop • cd /etc/pve • ls • cd nodes —> hier werden beide PVE’s des Cluster angezeigt • ls • cd <zweiter PVE (nicht Workshop)>/qemu-server • ls —> Definitionen der VM’s (\*.conf) • cp /root/101.conf 901.conf —> 101.conf existiert schon • vi 901.conf —> Anpassung der Configuration • Löschen der UEFI Disk, ISO Disks • Data Storage bleibt, passt zwar nicht zusammen aber bleibt • Unused Sachen herausnehmen • qm start 901 - VM 901 über CLI starten • Startet nicht da auf falscher Kiste (zweiter PVE (nicht Workshop) • vi 901.conf • Anpassung der Disk, es wird der vordere Teil entfernt (rpool-data-)—> passiert eigentlich erst im nächsten Schritt © 21.02.2024, syopstv, Version 0.1 Seite 17 ZFS für Firmen ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 starten • VM startet nicht, da durch Cluster bauen der Storage nicht mehr vorhanden ist, dann legen wir ihn nochmal an • Storage • vm-101-disk-1 (falsch benannt - In der Doku entsprechend markiert) - Die Namen nicht sauber durchgezogen … • Anpassung schon im vorherigen Punkt CLI letzter Punkt beschrieben • VM 901 starten • Funktioniert immer noch nicht … • Wir schauen nach … ProxMox CLI - zweiter PVE (nicht Workshop) • df -h - zeigt den NFS Mount nicht - hat nicht funktioniert ProxMox GUI - zweiter PVE (nicht Workshop) • Data Storage werden auf der Cluster Ebene konfiguriert • vm-101-disk-1 —> edit • Remove —> wir machen nochmal von Vorne damit wir es schön haben • Add NFS • ID: vm-101-disk-1 • Server: <IP vom PVE Workshop> • Export: <leer> —> Warum sind die Exports weg ? • Wir gehen auf den ProxMox Workshop per CLI ProxMox CLI - Workshop • showmount --exports —> Keine Exports mehr da • service nfs-kernel-server status • zfs list • service nfs-kernel-server restart • showmount --exports —> Exports sind wieder da - (4 Exports) ProxMox GUI - zweiter PVE (nicht Workshop) • Wieder in das GUI Fenster zurück gewechselt • Add NFS • ID: vm-101-disk-1 • Server: <IP vom PVE Workshop> • Export: • Nochmal raus gehen und neu machen • Storage • Add NFS • ID: vm-101-disk-1 • Server: <IP vom PVE Workshop> • Export: <Exports sind wieder leer> —> Wer funk mir hier gerade in das Gehänge ? • ProxMox CLI - Workshop • showmount --exports —> wieder leer • journalctl --all —> ist mittlerweile neu • service nfs-kernel-server restart —> etwas später im Ablauf ProxMox CLI - zweiter PVE (nicht Workshop) • showmount --exports —> wieder leer • NFS Server neugestartet - siehe vorherigen Punkt, letztes commando • showmount --exports —> wieder da - Frage: Wie lange ? © 21.02.2024, syopstv, Version 0.1 Seite 18 ZFS für Firmen • Nach circa. 1 min sind die Exports wieder weg … ProxMox CLI - Workshop • service nfs-kernel-server status —> Dienst läuft • zfs get sharenfs rpool/nfs —> VALUE: on • cat /etc/exports.d/zfs.exports —> ZFS macht genau das und sie sind weg - das ist der Hammer ! • service nfs-kernel-server restart —> • cat /etc/exports.d/zfs.exports —> Und die Exports werden angezeigt • Die Anzeigten Exports in die Zwischenlage nehmen • Chriz: Klärt noch warum die Datei geleert wird • Antwort • zfs set sharenfx=xxx —> geht in der Regel • Alternativ: • Alles in die /etc/exports eintragen • Workaround • zfs inherit sharenfs rpool/nfs —> wir nehmen das ZFS NFS Sharing wieder raus • vi /etc/exports • Exports aus der Zwischenablage einfügen • service nfs-kernel-server restart —> ProxMox CLI - zweiter PVE (nicht Workshop) • showmount --exports —> zeigt die eingefügten Exports wieder an ProxMox GUI - zweiter PVE (nicht Workshop) • Wieder in das GUI Fenster zurück gewechselt • Add NFS • ID: vm-101-disk-1 • Server: <IP vom PVE Workshop> • Export: /rpool/nfs/vm-101-disk-1 —> lässt sich wieder auswählen • Nodes: All —> Wir haben ein Cluster, da verhindert das eine Disk zweimal geöffnet wird • Der NFS Storage wird auf beiden Cluster Node nach einen kleinen Moment sichtbar sein © 21.02.2024, syopstv, Version 0.1 Seite 19 Übersicht NFS und iSCSI für ProxMox bzw. TrueNAS VM LXC Proxmox ZFS Liegt idealerweise als Volume (ZVOL) auf ZFS Dataset mit hohen Usernummer auf PVE Seite und nimmt niedrige Nummern im LXC Proxmox NFS Raw, Qcow, VMDK liegt auf SAN im Ordner Rawfile SAN im Ordner, Management via PVE Proxmox iSCSI Volume liegt als ZVOL oder physische HDD auf TrueNAS Geht nicht ProxmoxZFS localdir Raw, Qcow, VMDK liegen in einem Dataset, Datastore definiert auf Ordner des Dataset (Reboot knallt) Geht nicht ZFS für Firmen • VM 901 starten —> bootet jetzt • Migrate auf PVE Workshop • Problem ein PVE hat AMD und der andere Intel —> Host Typ war ein kompatibler Typ, er stand nicht auf Host. Bei Host CPU wäre er auf die Fresse geflogen • Der RAM wird im laufenden Betrieb überkopiert —> VM startet auf dem anderen ProxMox • Anmerkung Chriz: Mit so einer Aktion habe ich mir schon einmal einen ProxMox abgeschossen !!! • Migrate zurück auf anderen PVE Für den NFS Share Workaround • Wird die /etc/exports angepasst, muss die Konfiguration neugeladen werden • Service nfs-kernel-server reload • Das würde im Normalfall das ZFS sharenfs übernehmen ProxMox CLI - zweiter PVE (nicht Workshop) • cat /etc/pve/storage.cfg —> Storage Configuration • nfs: vm-101-disk-1 • export /rpool/nfs/vm-101-disk-1 • path /mnt/pve/vm-101-disk-1 • server <ip von PVE Workshop> • content images • df -h • <ip von PVE Workshop>:/rpool/nfs/vm-101-disk-1 … /mnt/pve/vm-101-disk-1 Fragen vom ersten Tag, aber nicht alle sondern nur die mit neuen commands • Thema kleine Dateien und special Device • Auswertung von ZFS • zdb -lbb rpool • Zeigt die Verteilung der block size 3.17.ProxMox - NFS / iSCSI Ab hier beginnt der 2. Tag - nur zur Orientierung. Anmerkung: Zu LXC über iSCSI - LXC ist ein Dataset (Dateien) und iSCSI ist ein Block Protokoll ProxMox CLI - Workshop • zfs list • ls -althr /rpool/data/subvol-100-disk-0 —> UID und GID haben bei den Dateien / Verzeichnissen hohe Nummern • Im Container hat die hohe ID - dann die ID 1 und daher kannst Du es nicht direkt freigeben • Daher wird der Container in ein RAW file konvertiert und als RAW File freigeben 3.18.TrueNAS Scale - NFS TrueNAS Scale Installation wurde vorbereitet, das TrueNAS Scale ein neueres ZFS enthalt als TrueNAS Core. Warum sollte man TrueNAS Core oder TrueNAS Scale den Vorzug geben ? • Hardware Kompatibilität • Bei Linux ist die Hardware Kompatibilität viel höher • Bei Freeware hat schlechtere Treiber • TrueNAS Core hat eine Unix Kernel © 21.02.2024, syopstv, Version 0.1 Seite 20 ZFS für Firmen • TrueNAS Scale hat einen Linux Kernel • Entscheidung für jeden selbst welcher Kernel läuft stabiler … (Unix Kernel oder Linux Kernel) • Welche der beiden passt besser zur ZFS Version von ProxMox ? Bei Booten sieht man im UEFI bei TrueNAS Scale (Debian) als Name im Bootmenü. Anmerkung Chriz: Mit TrueNAS Scale hat ich noch kein iSCSI gemacht, aber mit den Grundlagen sollte es problemlos möglich sein … Wir wollen die Daten vom ProxMox weiterverwenden. Alternative könnten die Daten mit zfs send und zfs recv repliziert werden. Bei den ZFS Features tut sich gerade viel. Bei RAID5 soll die Möglichkeit dazu kommen die Anzahl der Platten zu erweitern. Ein weiteres ZFS Feature kommt bald, FAST Deduplication. Deduplication braucht viel CPU und RAM das wird Stand heute nur für NAS/NFS mit einen eigenen Computer genutzt. Deduplication kann nicht wieder ausgeschaltet werden. Beispiel Fotograph hat viele Festplatten mit seinen Fotos … ProxMox GUI - zweiter PVE (nicht Workshop) • Der Punkt wird im Video während des nächsten Punkt erledigt - Zur Übersichtlichkeit einfach vorgezogen • ProxMox Cluster ist kaputt - da der ProxMox PVE gerade nicht läuft ! • Warum ist der Cluster gerade nicht handlungsfähig ? • Jede Cluster Node hat 50% der Stimmen und damit hat ein Cluster Node nicht die Mehrheit. • Der Ordner /etc/pve ist auf allen ProxMox Nodes eines Cluster identisch • touch /etc/pve/test —> schlägt mit Permission denied fail • Das Verzeichnis /etc/pve ist im Modus read-only, da keine Mehrheit gegeben ist • Man braucht da für immer 3 Cluster Node, da 2 Nodes eine Mehrheit bilden • pvecm status —> Quorum Information und Votequorum Information, … • Expected votes: 2 • Wir machen die Cluster Config wieder rückgängig • Dazu gibt es eine Artikel von ProxMox Cluster Manager: https://pve.proxmox.com/wiki/ Cluster\_Manager • systemctl stop pve-cluster —> Cluster stoppen • systemctl stop corosync —> Corosync halt die Cluster Ordner synchron • pmxcfs -l —> Umsetellung in den Local Modus • rm /etc/pve/corosync.conf —> Löschen der corosync configuration • rm -r /etc/etc/corosync/\* —> Löschen der corosync configuration • killall pmxcfs —> evtl. läuft noch ein Programm • systemctl start pve-cluster —> starte das Cluster wieder • Die Ordner Struktur mit den Config bleibt noch erhalten, die könnte man noch löschen. Wird aber im Video nicht getan. • cd /etc/pve • ls —> zeigt die Dateien und Ordner von ProxMox • touch test —> geht jetzt wieder • rm test • cd nodes • ls —> zeigt noch beide Ordner, der Ordner vom PVE Workshop pvews könnt noch komplett entfernt werden In der ProxMox GUI verschwindet der herausgeworfene Cluster Node. © 21.02.2024, syopstv, Version 0.1 Seite 21 ZFS für Firmen Hat man 3 PVE im Cluster und booten die Nodes unterschiedlich schnell bilden die ersten beiden eine Mehrheit. Wenn der 3. Node jetzt eine neuere Konfiguration hat, würde diese von der Mehrheit überschrieben. ProxMox GUI - zweiter PVE (nicht Workshop) • cd /etc/pve • cat storage.cfg —> Zum Schluss wird die NFS configuration angezeigt • Man könnte die Datei jetzt mit suchen und ersetzen verändern TrueNAS Scale GUI • Storage • Storage Dashboard • Import Pool • Es rpool und rpool-hdd angeboten • Ich guck erstmal … • System Settings • Services • ssh • Starten • Start Automatically an harken • Bei den User den public key für den User root eintragen —> Wird nach den ersten fehlgeschlagen login Versuch gemacht • Credentials • Users • root • Edit • Im Feld Autentication wird der ssh public key eingetragen TrueNAS Scale CLI • ssh root@<ip TrueNAS Scale> • Abfrage Fingerprint • Login abgelehnt —> Permission denied (publickey) • ssh public key kopiert, um die der TrueNAS Scale GUI einzutragen • ssh root@<ip TrueNAS Scale> —> Jetzt geht auch der Login mit dem public ssh key • zfs -V —> zeigt zfs-2.2.2-1 an —> Chriz: kommt mir sehr bekannt vor • zpool import • Zeigt rpool-hdd im Status Online und gehört einem anderen System —> Option -f • Zeigt rpool im Status Online und gehört einem anderen System —> Option -f • Wir proben es jetzt über die GUI TrueNAS Scale GUI • Storage • Storage Dashboard • Disks • Die Disks für rpool und rpool-hdd werden als exported angezeigt • Storage • Storage Dashboard • Import Pool • Es rpool und rpool-hdd angeboten • rpool TrueNAS Scale CLI • zfs list —> zeigt den rpool an • Warum könnten wir jetzt ganz böse auf die Fresse fliegen ? • zfs get mount point rpool/root/pve-1 —> /mnt © 21.02.2024, syopstv, Version 0.1 Seite 22 ZFS für Firmen • zpool get all —> altroot /mnt • cd /mnt • ls /mnt —> zeigt unseren ProxMox • cat etc/network/interfaces —> zeigt die Interface config von unserem ProxMox an • cd etc • ls —> zeigt das komplette etc Verzeichnis an • cd pve • ls —> leeres Verzeichnis • Woher hole ich mir die alten VM Definitionen her und warum ist das Verzeichnis leer ? —> Wenn ich das in einen anderen System eingehängt habe … • Das kommt aus einer Datenbank - schau Dir ein ProxMox an • ProxMox CLI - zweiter PVE (nicht Workshop) • df -h —> hängt wegen dem nicht mehr vorhandenen NFS mount • umount -l /mnt/pve —> zeigt den kompletten Pfad an /mnt/pve/vm-101-disk-1 • umount -l /mnt/pve/vm-101-disk-1 —> „umount leacy“ damit bekommt man hängende Verbindungen heraus • df -h —> /dev/fuse … /etc/pve • df -h | grep etc—> /dev/fuse … /etc/pve • Filesystem aus dem Userspace corosync • Wer hat den „Postinstaller im Einsatz“ • zfs list —> suche mal auf Deinen dataset pveconf in Pool rpool (rpool/pveconf) • ls /mnt/rpool/pveconf —> Pool rpool/pveconf - • ls /mnt/rpool/pveconf/etc/pve —> zeigt das Backup von Ordner /etc/pve des ProxMox’s an • Inklusiv Historie, das hat sich Chriz schon vor Jahren ausgedacht TrueNAS Scale GUI • Storage • Storage Dashboard • Import Pool • Es rpool und rpool-hdd angeboten • rpool-hdd TrueNAS Scale CLI • zfs list —> zeigt den Pool rpool-hhd an • TrueNAS Scale GUI • System Settings • Services • NFS einschalten • NFS aktivieren und automatisch starten an harken • Edit • Bind IP -Addresses: —> eigenes SAN Interface • Ich hab nur ein, deshalb bietet er mir nichts an TrueNAS Scale CLI • showmount --exports —> zeigt eine leere Liste - wird nicht automatisch freigegeben ! • zfs get sharenfs rpool/nfs —> VALUE: off • zfs set sharenfs=on rpool/nas —> Wieder einschalten, hatten im ProxMox ausgeschaltet, da es dort Probleme gab • Operation not permitted • ls -althr /mnt/rpool/nfs —> zeigt die Rechte auf die Ordner • showmount --exports —> zeigt leere Datei © 21.02.2024, syopstv, Version 0.1 Seite 23 ZFS für Firmen • Chriz: Vermute bei TrueNAS Scale haben die das System anders gemacht - dann geht es nicht • Dann muss es einzeln freigegeben werden • zfs inherit sharenfs rpool/nfs —> ZFS NFS Freigabe wieder herausnehmen • Da am ZFS gerade viel umgebaut wird, könnte die Freigabe wie bei ProxMox für das übergeordnete Dataset rpool/nfs auf dem absteigenden Ast sein • Wie geht es offiziell, also gehen wir den mühseligen Weg … TrueNAS Scale GUI • Shares • Sharing • UNIX (NFS) shares • Add NFS • Path: /mnt/rpool/nfs/vm-101-disk-1 —> Jede Platte einzeln auswählen (Verzeichnis in dem die Platte liegt) • Edit NFS • Unter Networks nur SAN eintragen, damit abgesichert wird, das nicht mehr jeder darauf zu greifen kann • Oder ich mache es bei NFS Binding nur auf die SAN Netzwerkkarte TrueNAS Scale CLI • cat /etc/exports —> Ist leer • showmount --exports —> zeigt die exportierte Disk an ProxMox CLI - zweiter PVE (nicht Workshop) • cd /etc/pve • cat storage.cfg —> angeschaut ProxMox CLI - zweiter PVE (nicht Workshop) • Offizieller Weg • Storage • Add NFS • ID: vm-100-disk-1 • Server: <ip Adresse von TrueNAS Scale> • Export: /mnt/rpool/nfs/vm-101-disk-1 • Content: Disk Image, Container • Network: <einschränken, damit keine zweit Systeme darauf zu greifen können> • So würde es funktionieren - ich bin faul • Nicht gespeichert ProxMox CLI - zweiter PVE (nicht Workshop) • cd /etc/pve • vi storage.cfg —> editieren von nfs: vm-101-disk-1 • export /mnt/rpool/nfs-101-disk-1 • server <IP Adresse von TrueNAS Scale> ProxMox GUI - zweiter PVE (nicht Workshop) • Wir schauen nach unserem Data Store • vm-101-disk-1 —> wird angezeigt • VM 901 - lief noch die ganze Zeit und NFS war weg, da ist richtig scheisse … • Ob ich die VM jetzt abgeschossen bekomme … ProxMox CLI - zweiter PVE (nicht Workshop) • df -h —> <IP Adresse von TrueNAS Scale> … /mnt/pve/vm-101-disk-1 • So sieht das NFS Ergebnis aus © 21.02.2024, syopstv, Version 0.1 Seite 24 ZFS für Firmen • ps aux | grep 901 —> Ist eine Kernel Virtualisierung, im schlimmsten Fall läuft es auf einen reboot hinaus • cd /etc/pve/qemu-server —> der Vollständigkeit halber … • cp 901.conf 1901.conf —> Neue VM angelegt … • Die VM 901 ist mittlerweile auch aus —> Anmerkung Chriz • rm 1901.conf —> kopierte config wieder gelöscht, da wir die VM 901 wieder benutzen können • qm start 901 —> Und falls die Disk Kaputt ist, rollen wir sie einfach zurück ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 bootet TrueNAS Scale GUI • Dashboard • Network anklicken • Netzwerk Traffic geht hoch —> das ist unser NFS Traffic • Man kann ZFS autosnapshot auf TrueNAS Scale drauf machen und die Tools vom Bashclub verwenden • Evtl. muss der apt manager wieder ausführbar gemacht werden, damit er wieder verwendet werden kann —> Nur so als TIPP • Wie kann man auf TrueNAS Scale autosnapt über die GUI konfigurieren —> jeden snapshot ein eigener Task • Data Protection • Add Periodic Snapshot Tasks • Dataset: rpool/nfs • Snapshot lifetime: 96 • Naming Schema: <-daily> —> -daily an bestehendes Schema dran hängen • Zum snapshot aufräumen braucht man ein sauberes Namensschema ! • Schedeule: <passende Zeitablauf auswählen> • Bei Bedarf kann hier der snapshot Zeitraum eingeschränkt werden - z.B. bestimmte snapshots nur während der Arbeitszeiten • Die vorhanden Periodic Snapshots Tasks können nicht kopiert werden, dafür gibt es keinen Knopf - man muss alles von Hand machen … • Im NFS Bereich gibt es noch Mapped User: root, das ist im NFS Bereich sehr beliebt 3.19.TrueNAS Scale - iSCSI ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 stoppen • Schauen wir uns die Disk vm-101:101/vm-101-disk-0.raw • Also handelt sich um einen .raw File • Raw File kann iSCSI und NFS TrueNAS Scale GUI • Sharing iSCSI • Wizard iSCSI • Name: vm-101-disk-0 • Extent Type: File • Es gibt Device oder File • Path to the Extent: /mnt/rpool/nfs/vm-101-disk-1/images/101/vm-101-disk-0.raw • Sharing Platform: Modern OS Extent block size 4k, … • Target: create new • Portal • Portal: create new • Authenfication Method: NONE © 21.02.2024, syopstv, Version 0.1 Seite 25 ZFS für Firmen • IP -Address: —> Grundsätzlich an eine IP Adresse binden, alle ist 0.0.0.0 • Initiator: —> ist der Client - immer SAN Netz, alle ist 0.0.0.0 • Initiator: <iscsi Initiatorname von PVE> aus Zwischenablage kopieren • Ist es kein Cluster darf hier nur ein Initiator herein !!! • Speichern und starten - Chriz: hat hier wohl <Enter> geklickt • Und jetzt schauen wir uns an was der Wizard gemacht hat • Sharing iSCSI • Target - TrueNAS Scale ist das Target • Server läuft auf Port 3260 • Base Name: iqn.2024-02.tv.sysops.ctl —> Chriz hat das mal erklärt bekommen - alter Name: iqn.2005-10.org.freenas.ctl • Portal • Hier kommt das SAN Net • Initiator • Alle Initiatoren können hier eingetragen werden, wenn es sich um ein Cluster handelt - gruppiert werden • Authentifaction • Wird normalerweise nicht genutzt • Targets • Alle Platten hängen in einer Group, ich muss diese nicht einzeln freigeben • Extents • Hier kommen alle Platten rein und halten am Target • Associated Targets • Hier wird es verknüpft, dafür gibt es die Zuweisung ProxMox CLI - zweiter PVE (nicht Workshop) • cat /etc/iscsi/initiatorname.iscsi —> InitiatorName in Zwischenablage kopieren - wird vom Wizard benötigt • Von allen PVE’s im Cluster ProxMox GUI - zweiter PVE (nicht Workshop) • Storage • Add iSCSI • ID: truenasisci • Portal: <IP Adresse von TrueNAS Scale> • Target: <Target kann jetzt ausgewählt werden> • Node: für alle Nodes des Cluster • Cluster regel, dass es keine doppelten Zugriffe gibt • VM 901 • Hardware • Bestehende Hard Disk (scsi0) wird heraus geworfen (Detach) • Add Hard Disk • Bus/Device: SCSI 0 • Discard: an harken • SSD emulation: an harken • Storage: truenasiscsi —> da steht was von 0 • Disk Image: Auswahl (CH 000 ID 0 LUN 0) raw 42.95GB • LUN ID steht im TrueNAS Scale unter Associated Targets —> LUN ID: 0 • VM starten • Ich hab vergessen zu sagen wo von er booten soll - Ich mach mal mit <ESC> und im • Boot Manager • UEFI QEMU QEMU HARDDISK • Windows startet • Wir arbeiten mit iSCSI © 21.02.2024, syopstv, Version 0.1 Seite 26 ZFS für Firmen TrueNAS Scale GUI • Storage • Management Datasets • Add zvol • Zvol name: vm-101-disk-4 • Size: 16G • Block Size: 16k —> für iSCSI ProxMox CLI - zweiter PVE (nicht Workshop) • zfs list —> rpool/nfs/vm-101-disk-4 … - - zvol - Ist Thick provised TrueNAS Scale GUI • Dataset • Zvol spacemanaged • Edit • Nicht das was wir suchen • Zvol details • Edit • Kann scheinbar kein Thin provising • Shares • Sharing • Configure • Wizard iSCSI • Name: vm-101-disk-4 • Extent Typ: Device • Device: rpool/data/vm-101-disk-4 • Hier kann auch direkt ein neues Device angelegt werden • Sharing Platform: Modern OS: … • Target: pvedisk —> nehmen das bestehende Target • Save - Abfrage restart iSCSI Service • Unter Extend • Zwei Platten sichtbar • Eine Platte als RAW File • Die ander als Platte • ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 • Hardware • Add Hard Disk • Bus/Device: SCSI 1 • Storage: truenasiscsi • Disk Image: <kann ausgewählt werden> • Bietet uns beiden iSCSI Platten an • Wir wählen jetzt nochmal die Platte mit der LUN ID 0 aus —> falsch - doppelte HDD • Discard: an harken • SSD emulation: an harken • Inakzeptabel • VM Console • Erstmal noch nichts passiert • Nach Hardware geänderter Hardware suchen • Doppelte Platte wird angezeigt, aber ist offline • Die doppelte Platte kann nicht online genommen werden -> Windows rettet uns hier • VM stoppen • Hardware • Doppelte Platte mit der LUN ID 1 auswählen • Detach der doppelten Platte © 21.02.2024, syopstv, Version 0.1 Seite 27 ZFS für Firmen • Wir wissen nicht, ob die Platte schaden genommen hat TrueNAS Scale GUI • Data Protection • Snapshots • Suchen: nfs/vm-101-disk-1 • Nach Namen sortiert • Date created seht nicht da - N/A • Suchen: -hourly • Fehler gemacht bei Anlegen des Snapshots gemacht (Edit Periodic Snapshot Task) • Harken bei Recursive vergessen • Jetzt Harken gesetzt ! • Wir rollen jetzt auf ein anders Datum zurück • Suchen: nfs/vm-101-disk-1 • Wir nehmen den Snapshot von 11:15 Uhr • Rollback • No Safety Check - weil es gibt neuere Snapshot • Goto Storage ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 • VM starten ProxMox CLI - zweiter PVE (nicht Workshop) • lsblk —> lass uns mal die ProxMox Seite anschauen • sdc und idd sind die iSCSI Disks • lshw -class disk • Zeigt z.B. bei Description und Product iSCSI Disk an, bei Vendor: TrueNAS und bei logical name: /dev/sdc oder /dev/sdd • Unter iSCSI gibt es auch ID die angezeigt werden • Unter Configuration findet man eine guid ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 • Hardware • Add Hard Disk • Bus/Device: SCSI 1 • Storage: truenasiscsi • Disk Image: <kann ausgewählt werden> • Bietet uns beiden iSCSI Platten an • Wir wählen jetzt nochmal die Platte mit der LUN ID 1 aus —> richtige Disk ausgewählt • Discard: an harken • SSD emulation: an harken • VM Console • Nach geänderter Hardware suchen • Findet zweiten Controller und zweite Platte • Platte ist noch offline • Platte online nehmen • Filesystem NFTS auf Platte erzeugen • Hier können auch die 16k ausgewählt werden • Nächste Use Case Platte muss vergrößert werden © 21.02.2024, syopstv, Version 0.1 Seite 28 ZFS für Firmen 3.20.TrueNAS Scale - iSCSI LUN vergößern ProxMox CLI - zweiter PVE (nicht Workshop) • dmesg -Tw —> Ausgabe starten TrueNAS Scale GUI • Datasets • vm-101-disk-4 • Edit Zvol • 40 GB —> vorher 16 GB ProxMox CLI - zweiter PVE (nicht Workshop) • In der laufenden Ausgabe von dmesg -Tw • sdd wurde vergrößert 42.0GB /40.0 GiB ProxMox GUI - zweiter PVE (nicht Workshop • VM901 • Console • Datenträgerverwaltung • Datenträger neu einlesen • Datenträger zeigt noch die alte Größe von 16 GB an • Vermutlich liegt es am VirtIO Single - Nutzung von mehreren Kernen • Windows herunterfahren • Versuchen wir es mal VirtIO (nicht Single) • Hardware • iSCSI Controller • Umstellung auf VirtIO SCSI • Options —> Bootplatte definieren • Harken bei allen nicht boot Platten entfernen • VM wieder starten • Nach dem Starten der Datenträgerverwaltung wird die neue Größe erkannt • 16 GB genutzer Platten Bereich und 24 GB nicht zugeordnet • Volume erweitern TrueNAS Scale GUI • Datasets • vm-101-disk-4 • Edit Zvol • 48 GB —> vorher 40 GB ProxMox CLI - zweiter PVE (nicht Workshop) • In der laufenden Ausgabe von dmesg -Tw • sdd wurde vergrößert 51.2 GB /48.0 GiB ProxMox GUI - zweiter PVE (nicht Workshop • VM 901 • Console • Datenträgerverwaltung • Datenträger neu einlesen • Erkennt die Vergrößerung nicht © 21.02.2024, syopstv, Version 0.1 Seite 29 ZFS für Firmen TrueNAS Core GUI • Jetzt schauen wir uns das bei TrueNAS Core an wo es funktioniert • Sharing • Block Shares (iSCSI) • Sieht genauso aus wie bei TrueNAS Scale ProxMox GUI - ProxMox zum TrueNAS Core • VM x • Hardware • SCSI Controller • VirtIO SCSI —> läuft noch auf dem alten Treiber ProxMox GUI - zweiter PVE (nicht Workshop • VM 901 • Hardware • Hard Disk (scsi1) wird detach • Add Hard Disk • Bus/Device: SCSI 1 • SCSI Controller: VirtIO Block —> Deprecated - vorher: VirtIO SCSCI • SDD emulation: an harken • Discard: an harken • Console • Gerätemanager • Nach geänderter Hardware suchen • Laufwerke • QEMU … SCSI Disk Device • Red Hat VirtIOSCSI Disk Device • Speichercontroller —> andere Hardware Layout —> andere Hardware Emulation unterschiedlich • Red Hat VirtIO SCSI controller • Red Hat VirtIO SCSI pass-through controller • Datenträgerverwaltung • Erkennt den Datenträger 1 • 40 GB der Partition im Filesystem NTFS • 8 GB Nicht zugeordnet • Volume erweitern • Vergrößerung wird durchgeführt TrueNAS Scale GUI • Datasets • vm-101-disk-4 • Edit Zvol • 50 GB —> vorher 48 GB ProxMox CLI - zweiter PVE (nicht Workshop) • In der laufenden Ausgabe von dmesg -Tw • sdd wurde vergrößert 53.7 GB /50.0 GiB ProxMox GUI - zweiter PVE (nicht Workshop) • VM 901 • Console • Datenträgerverwaltung • Datenträger neu einlesen • Erkennt die Vergrößerung nicht, die Antwort bleibe ich schuldig unter TrueNAS Core funktioniert es … - muss ich nachreichen • Anderes Problem • Platte wird offline genommen © 21.02.2024, syopstv, Version 0.1 Seite 30 ZFS für Firmen TrueNAS Scale GUI • Datasets • vm-101-disk-4 • Edit zvol • Delete zvol • Lösung muss über Text bestätigt werden ProxMox CLI - zweiter PVE (nicht Workshop) • In der laufenden Ausgabe von dmesg -Tw • sdd gibt Fehlermeldungen im Log, da ProxMox nicht mitbekommen hat, dass die Platte gelöscht wurde. Für ProMox ist die iSCSI Platte einfach verschwunden … • Die Fehlermeldungen verschwinden erst beim nächsten Reboot von ProxMox • lsblk —> zeigt die Platte sdd noch an • service restart open-iscsi —> Chriz würde es normalerweise nicht machen • lsblk —> sdd ist jetzt verschwunden Man hätte die Platte noch aus dem Windows komplett entfernen müssen. Die VM 901 ist jetzt mit einem Ausrufezeichen in gelb versehen. Fazit Chriz: iSCSI würde ich nur bei VMWare oder HyperV verwenden, bei ProxMox immer NFS Nächste Thema ist Multipathing bei iSCSi. Auf der TrueNAS Seite funktioniert das. Aber das sprengt den Rahmen des Workshops. 3.21.Fileserver 3.21.1. Univention Server UCS ProxMox GUI - zweiter PVE (nicht Workshop) • VM x • UCS Server starten • Fileserver was könnte dafür sprechen • Linux - stabiler als Windows • Web GUI —> Chriz: Ist richtig schlecht • Neue Freigabe • Viele Punkt an den man es verscheissen kann .. • Neue Freigabe: Workshop • Pfad / mount Point —> Eigene Platte wäre schön - keine Auswahl oder Knopf dafür • Samba • … • Hardware • Add Hard Disk • Bus/Device: SCSI 2 • SCSI Controller: VirtIO SCSI Single • Storage: local-zfs • Disk Size: 44 • SDD emulation: an harken • Discard: an harken © 21.02.2024, syopstv, Version 0.1 Seite 31 ZFS für Firmen Per ssh auf den UCS Server gehen • ssh root@<IP Adresse UCS Server> • lsblk —> sdc hat 44G • cfdisk /dev/sdc —> gpt, Partition anlegen - Linux Filesystem • lsblk —> Partition sdc1 wird angezeigt • mkfs.ext4 /dec/sdc1 —> Ext4 Filesystem erzeugen - ZFS auf ZFS macht man nicht, ProxMox hat schon ZFS • mkdir /mnt/workshop —> Mountpoint anlegen • mount /dev/sdc1 /mnt/workshop —> Platte sdc1 mounten, nicht boot fest !!! • umount /mnt/workshp —> Mount wieder wegnehmen • ls /dev/disk/by-id —> scsi-… • ls /dev/disk/by-uuid —> zeigt die UUID der Platte, den sollte man zum mounten in der fstab nehmen, entsprechende UUID in die Zwischenablage kopieren • vi /etc/fstab - Datei editieren • UUID=<kopierte UUID einfügen> /mnt/workshop ext4 defaults=user\_xattr 0 2 • mount -a —> mounted den Inhalt der fstab • df -h —> zeigt die gemoutete Platte ProxMox GUI - zweiter PVE (nicht Workshop) • VM x - UCS Server • Jetzt erst die Freigabe anlegen … • Software prüfen ob, Active Directory Domänen Controller installiert ist • VM y - Windows Maschine • Windows aus der aktuellen Domain herauswerfen —> Arbeitsgruppe: sysops • DNS Server muss passen —> UCS Server ist Domain Controller und damit DNS Server • Zeit muss passen • Reboot • Login mit lokalem User • Windows in die Domain aufnehmen • Domain eintragen • reboot • Login mit Administrator der Domain • Auf Freigabe workshop • Ordner anlegen —> Christians Ordner • Eigenschaften • Sicherheit • Erweitert • Vererbung deaktivieren - vererbte behalten • Administrator entfernen • Jeder entfernen • Domain Users hinzufügen • Rechte evtl. anpassen • Christian • Vollzugriff Per ssh auf den UCS Server gehen • Dazu gibt es auch Linux Befehl • getfacl /mnt/workshop/Christians\\ Ordner —> zeigt die User Rechte auf Linux Ebene • webinfo -u —> zeigt Domain User an • setfacl -Rdmu:fossi:rx /mnt/workshop/Christians\\ Ordner —> d für default - dann verhält es sich wie ein Windows Server, aber schneller Rechte gesetzt, ja viel schneller als Explorer !!! © 21.02.2024, syopstv, Version 0.1 Seite 32 ZFS für Firmen 3.21.2. Zamba-lxc-toolbox Browser • https://github.com/bashclub • zamba-lxc-toolbox • Evtl. dev Branch auswählen —> Enthält die neueste Version, die aber gerade noch nicht veröffentlich ist (neue Features) • Anleitung • Achtung! nicht branch dev ProxMox CLI - zweiter PVE (nicht Workshop) • git clone -b dev https://github.com/bashclub/zamba-lxc-toolboox • cd zamba-lxc-toolbox • cp conf/zamba.conf.example conf/zamba.conf • vi conf/zamba.conf • LXC\_ROOTFS\_SIZE=„32“ —> Linux Filesystem • LXC\_ROOTFS\_STORAGE=„local-zfs“ —> Datastore für Linux Installation • LXC\_SAHREFS\_SIZE=„100“ —> Größe Shares Filessystem des Zamba Servers • LXC\_SHAREFS\_STORAGE=„local-zfs“ —> kann SSD oder HDD Storage sein • LXC\_SHAREFS\_MOUNTPOINT=„share“ —> Mountpoint für Zamba Server Shares Storage - Standard: tank • LXC\_MEM=8192 —> Standard 1024 • LXC\_HOSTNAME=„${service}“ —> hier könnte der Hostname angepasst werden • LXC\_DOMAIN=„sysops.tv" —> Domaine für den Zamba File Server • LXC\_DHCP=false —> Keine DHCP Adresse • LXC\_IP=„192.168.100.200/24“ —> Statische IP Adresse vergeben • LXC\_GW=„192.168.100.254“ —> Default Gateway für LXC Container • LXC\_DNS=192.168.100.254 —> DNS muss der Domain Controller sein • LXC\_PWD=„Start!123“ • Unter Zamba-Server-Section • ZMB\_REALM=„SYSOPS.TV“ • ZMB\_DOMAIN=„SYSOPS“ • ZMB\_ADMIN\_User=„Administrator“ —> Univention UCS Server hätte gerne einen Großen Administrator - default wäre administrator • ZMB\_ADMIN\_PASS=„Start!123“ • bash install.sh • 29 —> zmb-member ProxMox GUI - zweiter PVE (nicht Workshop) • VM Windows von vorher • Console • Im zmb-member/share • Wir legen ein paar Ordner an ProxMox CLI - zweiter PVE (nicht Workshop) • Mal einige snapshost anlegen • /etc/cron.hourly/zfs-auto-snapshot • /etc/cron.daily/zfs-auto-snapshot © 21.02.2024, syopstv, Version 0.1 Seite 33 ZFS für Firmen ProxMox GUI - zweiter PVE (nicht Workshop) • VM Windows von vorher • Console • Windows Explorer • Share • Rechte Maustaste • Vorgänger Version wiederherstellen • Zeigt zwei ältere Versionen an • Trojaner simulieren ProxMox CLI - zweiter PVE (nicht Workshop) • zfs list -t snapshot | grep 126-disk —> zeigt snapshots an • zfs rollback -r rpool/data/subvol-126-disk-1@zfs-auto-snap\_daily-2024-02-15-1523 • Rollback kann mehrfach gemacht werden … ProxMox GUI - zweiter PVE (nicht Workshop) • VM Windows von vorher • Console • Windows Explorer • Share • Alles wieder schön ProxMox CLI - zweiter PVE (nicht Workshop) • pct list - Listet LXC Container auf • pct enter 126 • Troubleshooting • wbinfo -u # zeigt user an • wbinfo -g # zeigt Gruppe • date • ping <dns server> • kinit administrator • net ads join -U administrator • exit • zfs list • cd /rpool/data/subvol-126-disk-1 • ls • cd share • ls • cd .. • cd .zfs —> versteckten Ordner von ZFS • cd snapshot —> Darunter liegen die Snapshots • ls -althr —> Zeigt die Snapshot Verzeichnisse an • cd zfs-auto-snap\_daily-2024-02-15-1523 —> In das Snapshot Verzeichnis gewechselt • ls • cd share • ls © 21.02.2024, syopstv, Version 0.1 Seite 34 ZFS für Firmen 3.21.3. TrueNAS Scale TrueNAS Scale GUI • Datasets • nfs —> hier hatten die Autosnapshots in TrueNAS Scale konfiguriert • Add Dataset —> Für Dateien • Name: nas • Shares • Add SMB • Path: /mnt/rppol/nfs/nas • Evtl. muss der Service enable werden • Configure ACL —> wir haben nur den User root zur Zeit • Network • DNS Server: <ip des „Domain Controller“> —> Damit Domaine aufgelöst werden kann • Credentials • Directory Services • Configure Active Directory • Domain Name: sysops.tv • Domain Account Name: administrator • Domain Account Password: <password> • NetBIOS Name: truenasws • Enable: an harken ProxMox GUI - zweiter PVE (nicht Workshop) • VM Windows von vorher • Console • Windows Explorer • \\\\truenasws\\nas —> Im Explorer auswählen Für welche Filesystem würdest Du Dich entscheiden ? (Zamba File Server - das machen alle aus dem Stammtisch) © 21.02.2024, syopstv, Version 0.1 Seite 35 ZFS für Firmen 3.22.ProxMox auf Raspberry sichern mit Thorstens Tool Browser • GitHub.com/bashclub/zsync —> Thorsten Tool ist schneller • Installation Anleitung auf Raspberry PI ausführen Raspberry PI - CLI • Tool installieren • wget -q --no-cache -O /usr/bin/bashclub-zsync https://git.bashclub.org/ bashclub/zsync/raw/branch/dev/bashclub-zsync/usr/bin/bashclub-zsync • chmod +x /usr/bin/bashclub-zsync • bashclub-zsync • bashclub-zsync —> hier ist das Tool ProxMox CLI - zweiter PVE (nicht Workshop) • zfs list • zfs get all rpool/data • zfs set bashclub:zsync=subvols rpool/data Raspberry PI - CLI • zfs rename Mirror/replica/pveloft Mirror/replica/pveloft.alt —> Umbenennen von ZFS • Hat es wohl nicht gemazcht, also machen wir was neues • zfs create Mirror/repl/-o com.sun:autosnapshot=false • zfs create Mirror/repl/pveloft • vi /etc/bashclub/zsync.conf • target=Mirror/replica/pveloft • source=<IP Adresse Quelle> • snapshot\_filter=„daily“ • min\_keep=3 • zfs\_auto\_snapshot\_label=dmz • bashclub-zsync —> und die erste Platte kommt … Raspberry PI - CLI - zweiter login • zfs list • zfs list | grep Mirror/replica/pveloft/rpool/data ==> mehrfach absetzen und den Fortschritt zu sehen … Das ist alles …. © 21.02.2024, syopstv, Version 0.1 Seite 36 ZFS für Firmen 3.23.Check-zfs-replication kommt auf RaspberryPI (Ziel) Browser • github.com/bashclub/check-zfs-replication • Installationsanleitung kommt auf das Ziel Raspberry PI - CLI • wget -O /usr/local/bin/checkzfs https://raw.githubusercontent.com/ bashclub/check-zfs-replication/main/checkzfs.py • chmod +x /usr/local/bin/checkzfs • checkzfs --help • checkzfs - -sourceonly | grep Mirror/replica/pveloft —> altes Backup • checkzfs --source <ip Adresse Quelle> --filter rpool/data -- replicafiler Mirror/replica/pveloft/rpool/data --threshold 1500 2000 • checkzfs --source <ip Adresse Quelle> --filter rpool/data -- replicafiler Mirror/replica/pveloft/rpool/data --threshold 1500 2000 -- columns +messages Chriz klärt noch checkzfs im Video © 21.02.2024, syopstv, Version 0.1 Seite 37