ProxMox
Die Dokumentation für "Proxmox Produktiv mit ZFS betreiben" basiert auf einem kostenpflichtigen Kurs und soll dessen Inhalte wiedergeben, kann aber nicht die Betreuung und Beantwortung von Fragen, wie sie der Besuch des Kurses bietet, ersetzen. Es soll das Wissen von den hauptberuflichen Sysops Admins an Interessierte weitergegeben werden, die es danach auf den von Ihnen betreuten Systemen umsetzen können.
https://cloudistboese.de - Das Schulungsportal von sysops.tv
Proxmox
-
Gemischtes System für Virtualisierung und ZFS Storage
-
Umfangreiche Virtualisierung und Containering Lösung
-
Moderner Unterbau mit aktuellem Debian Linux
-
Reichhaltige Funktionen die durch eigene Kommandozeilenlösungen erweitert werden
-
Kaum bis keine Funktionen für ZFS
-
Kernfunktionen
- KVM Virtualisierung und LXC Containering
- ZFS Storagesystem für Software RAID und rudimentäre Snapshot- und Replikationslösung
- Optional: NFS-Kernel Server
- Optional: iSCSI Target
- Optional: erweitertes ZFS-Management mit Sysops Hauslösungen
-
Indikation für Einsatz
- Kleinere Anzahl von PVE Systemen mit Aufnahme von Datenträgern
- Hoher Anspruch an Snapshotverwaltung
- Leichte Replikation der Daten auf zweites System und eventuelle weitere Ziele
- Applikationsbasierte Datensicherung
- Eigenes Monitoring und Reporting bevorzugt - Zentrales Monitoring wie Checkmk
- Einfacheres Deployment und Wiederherstellung
-
Bei Linux kommt alles aus den Kernel (ZFS und KVM)
Chriz rät von der Nutzung als iSCSI Server ab
Proxmox Workshop 20230926 und 20230928
26.09.2023
Linux Kommandos
-
lsb_release -a
# Debian Version -
cat /etc/debian_version
# Debian Version -
systemctl reboot
# reboot -
reboot
# reboot -
init 6
# reboot -
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
# Anpasung von Textfiles mittels sed
Proxmox Installation
Um Proxmox mit ZFS nutzen zu können, müssen die Platten direkt an Proxmox gegeben werden. Es sollte kein RAID Controller mit RAID 0 genutzt werden, da dies früher oder später zu Problemen führen wird. Damit auch eine Update von Promox 7.x auf 8.x gezeigt werden kann, wird mit der Installation einer Proxmox Version 7.x begonnen. Das Postinstall Script aus dem Bashclub wird installiert, um auch alle benötigten Tools für die tägliche Arbeit und im Problemfall im Zugriff zu haben. (z.B. ohne ein Netzwerkverbindung kann nichts mehr nachinstalliert werden)
- Kein RAID Controller
- Platten direkt an Proxmox geben, es müssen die Herstellerbezeichnung der Platten im Linux Betriebssystem sichtbar sein. (z.B. nvme-INTEL_... über das Kommando
ls /dev/disk/by-id
) - ISO Installation mit Version 7.x - wegen Update auf 8.x durchführen zu können
- Install Proxmox
- Target Harddisk
- Standardauswahl: sda / sda —> ext4 mit LVM - daher auf options (ALT o)
- ZFS RAID 1 oder ZFS RAID 10
- Festplatten müssen gelesen werden
- Advanced Option - ZFS Optionen
- Passwort muss sich in der HTML Console tippen lassen - Thomas Krenn Server sind da zickick
- Proxmox Boot-Tool kann hilfreich sein
Proxmox GUI
-
Im Browser: https://<ip>:8006
- Single PAM - ssh login in
- Proxmox VE - Weboberfläche Cluster
-
Proxmox CLI
-
/etc/ssh/sshd_config
- PermitRootLogin without-password
Proxmox GUI
-
TOTP (time-based one-time password) kann über die Proxmox GUI gesetzt werden
- Datacenter - Permissions - Two Factor
Update nach Proxmox 8.x
Das Pre-Upgrade Check Script pve7to8 sollte ausgeführt werden, um mögliche Probleme vor dem Upgrade erkennen zu können. Erstmal ohne Parameter und anschließend mit Parameter (--full: alle Checks).
In der Zusammenstellung des Updates wurde auch die Zeile für no subscription eingefügt.
Das Unterverzeichnis source.list.d
von /etc/apt
sollte gecheckt werden, dass alle Dateien auf "bookworm" umgestellt worden sind, damit das Debian Update wieder einwandfrei funktioniert.
Nach dem Update von Debian und dem reboot, ist ein Refresh des Brwoser erforderlich, damit die neue Version angezeigt wird.
Eintrag no subscription in /etc/apt/source.list
-
pve7to8
-
ve7to8 -- full
-
Proxmox Update nach Anleitung von ProxMox - Subscription bzw. Nosubsription beachten
-
Nach Kernel Update - reboot einplanen
-
apt update apt dist-upgrade pveversion # sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list # Enterprise echo "deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list # No subscription - siehe Link echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list sed -i -e 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-install-repo.list # Debian update apt update apt dist-upgrade systemctl reboot
Während des Upgrade können Fragen zu einzelnen Konfig Dateien gestellt werden, wenn wir diese verändert haben, sollten wir diese nicht durch das Update verändern lassen. In der Update Prozedur wird ein neuer Kernel im Betriebssystem installiert, damit dieser aktiv werden kann, muss ein reboot durchgeführt werden, der auch zu einen späterem Zeitpunkt z.B. abends erfolgen kann.
Postinstaller Proxmox
Postinstall aus bashclub (proxmox-zfs-postinstall) auf github
-
Bashclub Postinstaller Proxmox
- ZFS L1ARC Size
- Swappiness
- ZFS auto snapshots - die Werte können frei konfiguriert werden. Empfehlung für den Start
- monthly: 3
- weekly: 6
- daily: 10
- frequent: 12
- hourly: 96 --> wegen Weihnachten und Ostern
- Repo
- No Subscription auswählen
-
Beschreibung auf github (Auszug)
-
Backup /etc auf zfs dataset rpool/pveconf - Configuration liegt in einer Datenbank
- Wichtig Erweiterung für Proxmox
- z.B. Sicherung der VM und LXC config Dateien der einzelnen Maschinen
- ...
- Wichtig Erweiterung für Proxmox
-
Backup /etc auf zfs dataset rpool/pveconf - Configuration liegt in einer Datenbank
Die ZFS auto Snapshots werden über die crontab ausgeführt. Dafür gibt es verschiedene Verzeichnisse:
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.monthly
In den Ordner liegt dann für jede "Aufgabe" ein eigene Datei (z.B. zfs-auto-snapshot
), in welcher die auszuführen Kommandos enthalten sind. Dort ist auch hinterlegt wieviele auto snapshots aufgehoben werden sollenn. (--keep=96
)
Die Zeitpunkte wann dieses ausgeführt werden sind in der Datei /etc/crontab
definiert.
cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; }
47 6 * * 7 root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; }
52 6 1 * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }
#
Zusätzlich gibt es für jeden User (z.B. root) noch eine eigene crontab, diese liegen unter cd /var/spool/cron/crontabs/
. Dort gibt es dann eine Datei root
für den User root, falls diese erzeugt wurde. Diese Datei wird z.B. auf den Linux VMs genutzt, um das Trimming zeitgesteuert ausgeführen zu können.
proxmox-boot-tool / ZFS Feature Upgrade / Trimming einschalten
Mit dem promox-boot-tool
könnten Platten nach einen Hardwaretausch wieder bootfähig gemacht werden. Heute sollte nach Möglichkeit uefi Boot eingesetzt werden und nicht mehr legacy Boot, damit werden die Boot Platten automatisch erkannt und müssen nicht einzeln durch probiert werden, wie bei legacy boot.
Autotrim sollte auf dem ZFS Dataset eingeschaltet sein, damit freie Blöcke wieder im Dateisystem verfügbar gemacht werden.
-
dmesg -w # oder dmesg -Tw # - Hardware Tausch ProxMox-boot-tool proxmox-boot-tool status zpool upgrade zpool upgrade -a # führt das Upgrade durch # ZFS trim einschalten zpool set autotrim=on rpool # Freigabe leerer Blöcke ◦zpool trim rpool zpool status 1
Einige wichtige Ordner vom Proxmox:
- Template Ordner /var/lib/vz
- ISO Ablage Ordner /var/lib/vz/template/iso - z.B. virtio-win.iso
- Cache /var/lib/vz/cache/ z.B. *.tar.gz Proxmox Mailgateway
PVE boot nicht mehr
Wenn der Proxmox nicht mehr bootet, werden die folgenden Schritte durchgeführt, um ihn wieder herzustellen zu können. Die erforderlichen ZFS snapshots werden durch die "Tools" des Postinstaller erzeugt.
Beim PVE Ordner (/etc/pve
) handelt es sich um eine Datenbank (/dev/fuse 128M 20K 128M 1% /etc/pve
), die ohne den Postinstaller nicht gesichert würden (rpool/pveconf 884G 128K 884G 1% /rpool/pveconf
).
Daher sollte der Postinstaller aus dem Bashclub auf jeden Promox PVE installiert sein, damit die Konfigurationsverzeichnisse von Proxmox auf ZFS gesichert und mit Auto Snapshosts versehen werden !!!
-
Proxmox CD bzw. ISO booten - Debug auswählen
-
exit - damit nicht der Installer bootet zpool status zpool import zpool import rpool zpool import -fa # a für all zpool import -f rpool zpool status zpool list zfs list -t snapshot zfs list -t snapshot | grep pve-1 zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap.hourly\_2023-09-26-1251 # entsprechender snapshot - boot und Proxmox geht wieder ```
-
ZFS dataset "data" zurück rollen, falls erforderlich, je nachdem wie das eigentliche Problem aussieht und welche Maßnahmen sich daraus ergeben
zfs rollback -r rpool/data@... (?) # data/vm... zurück rollen
Verschlüsseltes ZFS
- zfs-load-key
- Replication raw - Chriz Software unterstützt das ...
- PVE GUI
- local
- local-ZFS
- VM auf RAID-Z 8k versus 16k
-
ZFS create rz\_repel/vmtest ZFS create V 10G rz\_repl/vmtest/disk8k # Keine RAID5 für VM‘s - langsam wegen 8k - RAID5 min. 16K einstellen
-
Local-ZFS Einstellung auf min. 16k einstellen
-
Proxmox Standard volblocksize=8k
- Anmerkung: Mittlerweile ist der Standard 16k
-
Siehe awo.de Tabelle - Artikel ZFS RAID
-
VirtIO Treiber für Windows
-
VirtIO Treiber im Internet finden
- proxmox windows driver im Browser suchen
-
Auf Proxmox Seite nach stable suchen
- Link kopieren
- In ProxMox GUI
- Download URL eintragen unter pvews - local (pvews) - ISO Images
- Filename: VirtIO-win.iso
- ISO Ablage Ordner **/var/lib/vz/**template/iso
- Download URL eintragen unter pvews - local (pvews) - ISO Images
-
ProxMox Virtual Treiber - für Windows iso
-
Create VM
- General
- Node: pvews
- VM ID: 101
- Name: win
- Start at boot: Harken
- OS
- Use CD/DVD disc image file (iso)
- Storage: local
- ISO Image: Win10_22H2_German_x64.iso
- Use CD/DVD disc image file (iso)
- System
- Maschine q35
- BIOS: OVMF (UEFI)
- Add EFI Disk: Harken
- Emu Agent Harken
- EFI Storage: local-zfs
- SCSI Controller: VirtIO SCSI Single
- Disks
- Bus/Device: SCSI 0
- VirtIO Block ist obsolet !!!
- SCSI - VirtIO SCSI Single - SCSI steht für SCSI Controller auf der Seite davor - kann ein Prozessorkern pro Festplatte
- Discard: Harken
- SSD emulation: Harken
- Cache: - Default (no cache) - keine Cache einschalten !!!
- Bus/Device: SCSI 0
- CPU
- Socket: 1
- Cores: 4
- Type: Host (Standard: x64-64-v2-AES)
- Memory
- Memory: 4096
- Network
- Bridge: vmbr0
- Model VirtIO (paravirtualized)
- Conirm
- Installation starten
- General
-
GUI - vm - Hardware - CD/DVD
- Zweites CD Laufwerk VirtIO Treiber iso
- GUI - vm - Hardware - Maschine
- q35 Version 5.2 - weniger Probleme als mit 8.0 wegen deutschen Treibern - ist für US optimiert ... - Probleme mit Netzwerkkarten
- GUI - vm - Hardware - Maschine
- Zweites CD Laufwerk VirtIO Treiber iso
-
EFI hat feste Bildschirmauflösung - kann nur im EFI der VM eingestellt werden (EFI BIOS) - Im Bootvorgang in der Console - ESC drücken
-
Windows Installer
-
Treiber - Virtualio SCSI laden - vioscsi - win10 - amd64
-
vm-<id vm>-disk-0 EFI BIOS - speichert z.B. Bildschirmauflösung
-
vm<id-vm>-disk-1 Windows 10 - z.B. zd16
- Windows partitioniert die „disk-1“ in 3 Partitionen - während der Installation
- Partition 1 - p1: EFI
- Partition 2 - p2: Microsoft reserved
- Partition 3 - p3: Microsoft basic data
-
Windows ohne Netzwerk = keine "dummen" Tools werden installiert
-
Windows ohne Passwort = keine Sicherheitsfragen
-
Wichtig für den Start der VM
- Pool muss online
- Pool unter 80 %
- Definition der Datenstorages unter
cat /etc/pve/storage.cfg
- PVE Server 101.conf - unter
cat /etc/pve/qemu-server/101.conf
- Virtual CD - fehlende Treiber - 1 Controller pro Festplatte
-
Virtio-win-guest-tools - evtl. Erweiterung exe des Dateinamens sichtbar - installieren - installiert alles - liegt im Hauptverzeichnis der CD/DVD
- am Ende sollten auch die Guest-Tools installiert werden
- Reale Memory Anzeige, CPU Usage und IP Adressen
- Deinstallation der Apps
- Über Powershell Kommandos
- am Ende sollten auch die Guest-Tools installiert werden
Get-appxPackage | Remove-appxPackage # man verliert Taschenrechner - alle App werden entfernt - auch der Storage wird entfernt - Nach Feature Update wieder alles da
-
Festplatte vergrößern
- Resize 16 GB - bedeutetet +16 GB
-
Auf PVE
cd /dev/zvol/rpool/data
ls -alter
-
Wiederherstellungspartiions an das Ende verschieben oder löschen
-
/dev/zvol/...
-
cfdisk # - Partition löschen
-
Partition in Windows Erweitern
- Unter Linux VM ausschalten, resize geht nicht immer Fehlerfrei
- Datenträger neue Größe
-
Explorer noch alte Größe
-
zfs history cd /dev/zvol/rpool/data ls -althr
-
SSD Emulation / Discard
-
Defragemtieren
-
Unter Einstellungen ändern: Auf einmal täglich einstellen
-
Windows Swap optimieren - powershell
-
attrib powercfg -h off # evtl. darf es der User nicht - powershell als administrator starten zfscreate-o com.sun:auto-snapshot=false rpool/swap # keine autosnapshots!!!
-
PVE rpool/swap in der GUI - Add ZFS
-
ID: rpool-swap
-
ZFS Pool: rpool/swap
-
Content: Disk Image
-
Thin provision Haken setzen !
-
Block Size: 16K
-
Add Hard Disk:
- Disk Size: 8 G
- Storage: rpool-swap
- SSD emulation
- Discard
- Backup Haken ?
- Herausnehmen ? - Backup: ja --> Backup Haken entfernen
- Replication: nein
-
Im PVE add ZFS
-
ID: rpool-swap
-
ZFS Pool: rpool/swap
-
Content: Disk Image
-
Thin provision: Haken
-
Block Size: 16K
-
PVE Add Hard Disk
- Bus/Device: SCSI
- Storage: rpool-swap
- Disk size (GiB): 8
- SSD emulation: Haken
- Discard: Haken
- Backup: Haken
- auf jedenfall bei Linux
- Windows braucht die Partition nicht,
- bei Replication: nein, Backup: ja
-
Nach neuer Hardware suchen - Evtl. Bug - Hotswap - bei SCSI Controller VirtIO SCSI würde er ihn direkt erkennen
- Neuer Speichercontroller gefunden
-
Neues Laufwerk a: oder b: # Niemand braucht a: oder b: mehr
- Auslagerungsdatei auf a: ändern und c: herausnehmen
- Auslagerungsdatei: page file (pagefile.sys)
- Eine swap Partition hat den Vorteil, dass für die Auslagerung von RAM eine eigene Partition verwendet wird
- Auslagerungsdatei auf a: ändern und c: herausnehmen
-
Checkliste Platz
-
Unter Linux wird nicht mehr benötigter Storage einer SDD wie folgt freigeben
- Linux in crontab
/sbin/fstrim -av
- für Linux VM
- Linux in crontab
-
Eine automatisierte Freigabe von nicht mehr benötigtem Storage, kann über die crontab in Linux gesteuert werden
- crontab -e
-
0 0 * * * /sbin/fstrim -a
- Der crontab Eintrag bedeutet, dass an jedem Tag um 0 Uhr der trim Befehl ausgeführt wird
-
0 0 * * * /sbin/fstrim -a
- crontab -e
fstrim -av # muss eine Ausgabe bringen - sonst ist die VM falsch konfiguriert - VM Platten auf SSD und Discard umstellen
- Wenn 8k und RAID 5 —> neuer datastore 16k und move disk
- Wenn die Disk in der VM —> Treiber installieren, VM herunter fahren, deatach, attach mit ssd / discard
- Optimierungen einstellen
- Page file wie oben erklärt
- Dann daily optimieren, Platz wird spätestens nach 3 Monaten frei (wegen snapshots)
- optional snapshot von Hand löschen
- Optional Vacuum auf Datenbanken
28.09.2023
Workshop 2023-09-28
-
Platten replacement
-
Artikel von ProMox - ist nicht ganz korrekt: https://pve.proxmox.com/wiki/ZFS_on_Linux
Erklärung zum Kommando sgdisk ... -- R ...
-
sgdisk \<gesunde boot device\> - R \<neue Platte\>
# Partitionen werden kopiert und die GUID wird beibehalten -
Soll eine neue GUID verwendet werden
sgdisk -G \<neue Platte\>
-
zpool set autoexpand=on rpool # Erweiterung des Pools, wenn alle Platten getauscht
-
sgdisk /dev/sdb -R /dev/sda
# Partitionstabelle kopieren - /dev/sda ist die neue Platte (s.o)
cfdisk /dev/sda # Partition vergrößern
sgdisk -G /dev/sda # EFI: neuer Fingerabdruck, damit EFI zu recht kommt
proxmox-boot-tool format /dev/sda2 # format der Bootpartition (Partition 2) - Windows Dateisystem
proxmox-boot-tool init /dev/sda2
proxmox-bool-tool status
proxmox-boot-tool clean # wirft Platten heraus, die er nicht mehr kennt
update-initramfs -u # alte Variante - wegen aktuellen Bug - nur eine Platte bootet über status
apt install systemd-boot # systemd-boot-efi # fehlt nach Update von 7.x auf 8.x
zpool replace rpool ata-INTEL-...-part3 ata-ST2000...-part3 # „alte Platte“ „neue Platte“
zpool status
zpool status 1
-
Im Einspielvorgang / resilver Vorgang
- ZFS interessiert das nicht - Hardware RAID böse !!!
- Nach dem Reboot geht das Einspiegeln weiter ...
- Zweite HDD in freien Slot stecken
-
Nach dem Booten können die Festplatten einen anderen Buchstaben bekommen, sowie wie sie erkannt wurden
sgdisk /dev/sdb -R /dev/sdd
sgdisk -G /dev/sdd
zpool status
proxmox-boot-tool format /dev/sdd2
proxmox-boot-tool init /dev/sdd2
proxmox-boot-tool status
zpool status
-
Cockpit ZFS nur zum schauen - kein two Factor !! - aus Postinstall Proxmox - Achtung neuer Link
-
wget https://raw.githubusercontent.com/bashclub/proxmox-zfs-postinstall/main/install-cockpit-zfs-manager bash install-cockpit-zfs-manager
-
https://<ip>:9090
-
root user kann sich nicht per Passwort einloggen
-
Temporär in der
/etc/ssh/ssd_conf
ändern, dass sich der User root wieder mit dem Passwort anmelden kann # keine Empfehlung- Key muss irgendwo hinterlegt werden # nur zum lernen !!!
-
Temporär in der
-
z.B. für das zum Zurückspielen einer VM
-
VM muss vorher im Proxmox gestoppt werden
-
zpool replace ... # löscht Platte !!! zpool attach rpool ata-... # neue Platte erst hinzufügen zpool detach ... # Schublade - Backup zpool attach rpool ata-INTEL-SSD..-part3 ata-ST2000...-part3 # hängt die HDD hinter die SSD zpool status # 3 Platten im mirror-0 !!!
-
-
VM muss vorher im Proxmox gestoppt werden
-
SSD HDD Hard herausziehen und anschließend detach der Platte
zpool status
zpool detach rpool ata-INTEL-SDD...-part3
proxmox-boot-tool status
proxmox-boot-tool clean
proxmox-boot-tool status
zpool status # rpool hat jetzt 1.82 TB - Pool vergrößert
arcstat
vi /etc/modprobe.d/zfs.conf # Anpassung des ZFS Parameters / der ZFS Parameter (Cache für ZFS)
proxmox-boot-tool refresh # in den Images wird der Cache auf den neuen Wert gesetzt, ZFS muss das vorher wissen, bevor reboot wird, zfs.conf liegt auf ZFS
Windows kaputt machen - Trojaner
- Netwerkkarte disablen durch Trojaner
- VM herunterfahren
- Entwicklung der Größe der snapshot‘s - als Indikator
- Trojaner verursacht eine größere Änderung in den snapshots
- Rollback snapshot über Cockpit oder über command Line
ZFS Cache
- Parameter -n: dry-run
- erstmal anschauen, was das Kommando machen würde
zpool add -n rpool cache ata-intense..
zpool add -nf rpool cache ata-intense.. # wenn schon Daten auf der Platte
zpool add -f rpool cache ata-intense..
zpool iostat -v 3
zpool iostat -v 1 # 1 sec
Proxmox Cluster
-
GUI - Cluster - create cluster
-
pvecm create „clustername“
-
GUI - Cluster - „add Cluster“
-
pvecm add clusterserver1
-
Kein Cluster mehr
-
https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node
-
Auf der Seite zu den folgendem Punkt springen: First, stop the corosync and pve-cluster services on the node:◦
-
cd /etc/pve
-
storage.cfg
-
qemu-server/*.conf
-
lxc/*.conf
-
nodes/... # Ordner mit den Cluster Member
-
top ps aux ps aux | grep qm # Herstellung aller Maschinen anhand dieser Ausgabe
-
Login in den Cluster funktioniert nach Fehlschlag nicht mehr
service pveproxy restart
- Neues Zertifikat - zwei Faktor Authenfication der lokal User fliegt heraus
cd /rpool/pveconf
zfs list -t snapshot rpool/ROOT/pve-1
- PVE Config zurück rollen
zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap_hourly-2023-09-28-1017 # panic Variante und Stromkabel nach 2 s
-
besser von cd booten, rollback wie oben
-
Ordner .zfs unter /rpool/pveconf
-
cd snapshot # dieser Ordner nur in datasets vorhanden # Snapshot Order auswählen cd zfs-auto-snap_hourly-2023-09-28-0717 cd etc/pve/nodes/pvews cd lxc ls cp 100.conf /etc/pve/lxc cd .. cd qemu-server cp 101.conf /etc/pve/qemu-server # evtl. Alternativ cp 101.conf /etc/pve/nodes/pvews/qemu-server vi /etc/pve/nodes/pvews/qemu-server/101.conf # Anpassung von Namen
-
Boot Partitionen löschen
- Über dd
dd if=/dev/zero of=/dev/sda2 bs=1M count=511
dd if=/dev/zero of=/dev/sdd2 bs=1M count=511
proxmox-boot-tool status
-
Boot über CD/DVD - Advanced - debug mode console
-
Type exit - damit Installer nicht startet
-
https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool
-
Aus der Webseite
- Repairing a System Stuck in the GRUB Rescue Shell
-
Repairing a System Stuck in the GRUB Rescue Shell
-
If you end up with a system stuck in the grub rescue> shell, the following steps should make it bootable again:
-
Boot using a Proxmox VE version 6.4 or newer ISO
-
Select Install Proxmox VE (Debug Mode)
-
Exit the first debug shell by typing Ctrl + D or exit
-
The second debug shell contains all the necessary binaries for the following steps
-
Import the root pool (usually named rpool) with an alternative mountpoint of /mnt:
-
zpool import -f -R /mnt rpool zfs list
-
Find the partition to use for proxmox-boot-tool, following the instructions from Finding potential ESPs
-
Bind-mount all virtual filesystems needed for running proxmox-boot-tool:
-
mount -o rbind /proc /mnt/proc
-
mount -o rbind /sys /mnt/sys
-
mount -o rbind /dev /mnt/dev
-
mount -o rbind /run /mnt/run
-
ls /mnt
-
change root into /mnt
-
chroot /mnt /bin/bash
-
- Repairing a System Stuck in the GRUB Rescue Shell
-
cat /etc/network/interfaces
- Zeigt die Netzwerk Interface Einstellungen
-
proxmox-boot-tool status lsblk proxmox-boot-tool format /dev/sdb2 proxmox-boot-tool format /dev/sdc2 proxmox-boot-tool init /dev/sdb2 proxmox-boot-tool init /dev/sdc2 proxmox-boot-tool status proxmox-boot-tool clean zpool export rpool # Falls der `zpool export` vergessen wurde, nach dem reboot `zpool import -f rpool`
-
<CTRL> <ALT> <ENF> # reboot auslösen
-
zpool import -f rpool # letzter Besitzer war CD exit # erneuter reboot zpool status
-
Wichtige Dateien:
- /etc/network/interfaces
- storage.cfg
- qemu-server/*.conf
- lxc/*.conf
-
Boot Partitionen löschen
- cfdisk /dev/sdb
- Partition 1 und Partition 2 löschen ◦
- fdisk /dev/sdc
- Partition 1 in Partition 2 löschen
- reboot
- cfdisk /dev/sdb
-
Proxmox neu installieren auf cache SSD ohne ZFS
-
Boot von CD
-
Install Proxmox ohne ZFS auf SSD
-
Würde mit ZFS installiert, hätten wir wieder ein rpool und müssten den original Pool rpool in z.B. rpool1 umbenennen und local-zfs anpassen !!!!
-
Profi Tipp: Alle anderen Platten ziehen, damit auf keiner falschen Platten Installiert wird
-
Installation mit ext4 mit lvm
-
Neues Zertifikat
-
Passwort neu
-
ssh meckert wegen known_hosts # Neu Installation
-
zfs list # zeigt leere Liste zpool import -fa # alle importieren zfs list # rpool ist wieder da cd /rpool/pveconf cd etc cd pve ls cp storage.cfg /etc/pve cd qemu-server cp 101.conf /etc/pve/qemu-server # Produktiv System cp *.conf /etc/pve/qemu- server cd .. cd lxc cp 100.conf /etc/pve/lxc # Produktiv System cp *.conf /etc/pve/lxc
-
-
ISO‘s als DVD heraus werfen, da vermutlich nicht gesichert
-
zpool remove rpool <cache ssd> # cache ssd entfernen # atach und detach nur mirror - alles andere wird removed
-
Am Abend wieder ganz machen
- Booten von CD/DVD
- Advanced Mode - Debug mode
-
Partitionstabelle wiederherstellen
-
Anderen Proxmox anschauen
-
https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool
-
Repairing a System Stuck in the GRUB Rescue Shell
-
zpool import -f -R /mnt rpool zfs list
-
Find the partition to use for proxmox-boot-tool, following the instructions from Finding potential ESPs
-
Bind-mount all virtual filesystems needed for running proxmox-boot-tool:
-
mount -o rbind /proc /mnt/proc mount -o rbind /sys /mnt/sys mount -o rbind /dev /mnt/dev mount -o rbind /run /mnt/run chroot /mnt /bin/bash # Partitionstabelle eines anderen ProxMox Systems anschauen sgdisk /dev/sdd -R /dev/sdb # muss resized werden cfdisk /dev/sdb
-
Partition 3 wieder vergrößern # Werte überprüfen mit Foto falls vorhanden
-
sgdisk /dev/sdb -R /dev/sdc sgdisk -G /dev/sdb sgdisk -G /dev/sdc
-
Änderungen haben nicht gegriffen - reboot erforderlich # alternativ parted - partprobe bekommt das im laufenden Betrieb hin
-
Reboot
-
Evtl. mit
proxmox-boot-tool
Partitionen wieder herstellen, zuvor muss die ProxMox Umgebung über die chroot Umgebung gebaut werden ... -
reboot zpool import -fa exit # reboot vom ProxMox zpool status proxmox-boot-tool status
-
-
-
-
-
Variante für das Arbeiten
- Externe SSD - True NAS installieren - geht aber nur für VM‘s - VM‘s per SCSI freigeben
-
-
Backup ProxMox Datenbank - Wie funktioniert das ?
-
cat /etc/cron.d/pve-conf-backup
-
rsync. -va --delete /etc /rpool/pveconf
# alle 15 min - ab 3. Minute
-
-
-
Import Daten
-
vmdk vhdx raw qcow2 > mounten vom original (VM aus!) /mnt/pve/nfsstore oder smbshare
-
zvol / lvm / usb / hdd /ssd
-
qm importdisk 100 /mnt/hypervfreigabe/dc.vhdx local-zfs (via samba)
-
qm importdisk 100 /mnt/pve/nfsstore/vmfs/id/dc/dc.vmdk local-zfs # (via NFS oder SSHFS)
-
Echte Systeme (physikalische Server)
-
Clonezilla
-
https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE
- Clonezilla Live CDs
-
Disks erscheinen erst mal unused - mit Doppelklick hinzufügen und booten
-
-
Backup und Monitoring
- Backup Dataset dürfen keine auto snapshots machen
-
zfs set com.sun:auto-snapshot=false backup
# siehe Codeblock
-
zfs list # Ziel Backup Disk - Pool Backup
zfs create backup/repl -o com.sun:auto-snapshot=false
zfs set com.sun:auto-snapshot=false backup
Bash-club-zfs-push-pull # auf Ziel ausführen
- bashclub zfs-push-pull
git clone https://github.com/bashclub/bashclub-zfs-push-pull.git
cd bashclub-zfs-push-pull
chmod +x 02pull
bashclub-zfs
cp bashclub-zfs /usr/bin
vi 02pull # Anpassen - In for Schleife ein echo zum Testen
bashclub-zfs # Parameter I und R - alte Snapshot und Zwischen snapshots mitnehmen # Prinzipiell pull !!! - Quelle kommt nicht auf das Ziel, sondern nur Ziel kommt auf Quelle
cp 02pull /etc/cron.hourly
Monitoring
- ID: backup-repl
- ZFS Pool: backup/repl
- Thin provision: Haken
- Block Size: 16k
- [https://github.com/bashclub/check-zfs-replication](https://github.com/bashclub/check-zfs-replication)
wget -O /usr/local/bin/checkzfs https://raw.githubusercontent.com/bashclub/check-zfs-replication/main/checkzfs.py
chmod +x /usr/local/bin/checkzfs
checkzfs --sourceonly
checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90
checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns +message
-
wget -O /usr/local/bin/checkzfs https://raw.githubusercontent.com/bashclub/check-zfs-replication/main/checkzfs.py
-
Keep: Hours 96, dayli 14
-
ProxMox GUI
◦Storage - Add ZFS -
cd /etc/pve/qemu-server cp 101.conf 9101.conf vi 9101.conf
-
Kommando im vi ausführen - local-zfs durch backup-repl ersetzen
-
:%s/local-zfs/backup-repl/g # vi command
-
Swap entfernen
-
DVD Laufwerke entfernen
-
Name am Anfang repl- anfügen
-
- GUI der VM 9101
- Netzwerkkarte deaktivieren # Befehl kann man nachher in der conf nachschauen
- Autostart disablen
- VM 9101 starten # aber Replikationszeit beachten - cron.hourly ... beachten
- LXC Container kann mittlerweile die Netzwerkkarte deaktivieren - alternativ in anderen vswitch
checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns +message --output checkmk
# Datei generieren und auf anderen Server kopieren - über scp
zfs mount -a
ls /backup/repl/subvol-100-disk-0/etc/pmg
mkdir /mnt/restore
mount /dev/zvol/backup/repl/vm-101-disk-1-part3 /mnt/restore
ls /mnt/restore # Damit kann man Daten aus dem Windows zurückspielen
umount /mnt/restore
zfs create backup/klon -o com.sun:auto-snapshot=false
zfs list -t snapshot backup/repl/vm-101-disk-1
zfs clone backup/repl/vm-101-disk1@bashclub-zfs_2023-09-28_16:21:30 backup/klon/vm-101-disk-1
mount /dev/zvol/backup/klon/vm-101-disk-1-part3 /mnt/restore
ls /mnt/restore
vi /etc/pve/qemu-server/9101.conf # Anpassung das der Klon verwendet wird
- VM aus Klon booten und sich anschauen ...
umount /mnt/restore
zfs get guid
zfs get guid | grep bashclub-zfs_2023-09-28_16:46:50
zfs get creation rpool/data/subvol-100-disk-0@bashclub-zfs_2023-09-28_16:46:50
- zfs replication für arme
zfs snapshot rpool/data/vm-100-disk-0@snap1 # snapshot auslösen - evtl. nicht komplettes Command
zfs send rpool/data/vm-100-disk-0@snap1 | zfs recv -dvF backup/repl # local
zfs send rpool/data/vm-100-disk-0@snap1 | ssh rot@zielip zfs recv -dvF
backup/repl # push
ssh root@sourceip zfs send rpool/data/vm-100-disk-0@snap1 | zfs recovery -dvF backup/repl # pull
- checkzfs mit Mail - dafür muss Mail konfiguriert sein
checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns+message --output mail