Direkt zum Hauptinhalt

ZFS für Firmen

Inhaltsverzeichnis


  1. Installation von ProxMox
  1. ZFS Themen / Konfiguration von ProxMox
    1. ZFS Grundlagen
    2. ProxMox Grundeinstellungen
      1. ssh Schlüssel
      2. ssh Passwort login abschalten
      3. 2 Faktor Authentifizierung
    3. ProxMox ZFS Befehle
    4. ProxMox boot Platten
    5. ProxMox Datenträger
      1. Datenträger (Datastore) local
      2. Datenträger (Datastore) local-zfs
    6. ProxMox Container (LXC)

ProxMox VM

    1. ProxMox - Linux’s command’s

ProxMox - GUI

    1. ProxMox - VM geben freigegebenen Platz an den Hypervisor zurück

TrueNAS Core - GUI

ProxMox - NFS

Fileserver

      1. Zamba-lxc-toolbox
      2. TrueNAS Scale
      3. ProxMox auf Raspberry sichern mit Thorstens Tool

ZMS für Firmen

  1. Allgemein


Workshop 13.02.2024 und 15.02.2024



Die Aufzeichnungen findet ihr im Kurs, der wiederum auf ein Textdokument in der Nextcloud verweist!


Kostenpflichtiger Link für Videos


  1. 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.


  1. 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.

    1. ZFS Grundlagen
  • ZFS Auslastung max. 80 %
    • 90 % wird es langsam
    • Ab 95 % geht nichts mehr
  • ZFS braucht Ressourcen
    • CPU
    • RAM
    1. ProxMox Grundeinstellungen
      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>

      1. 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


Restart des ssh Daemon: 

service ssh reload


      1. 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.

    1. 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

    1. 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

ISO Vorlagen werden jetzt unter rpool/var-lib-vz abgelegt, welches unter /var/lib/vz gemoutet, früher wurde es in root Filesystem abgelegt.

    1. ProxMox Datenträger
      1. Datenträger (Datastore) local

Der Datastore ist für: (File basiert)

  • Backups
  • ISO Images
  • CT Templates
      1. Datenträger (Datastore) local-zfs

Der Datastore ist für: (Block basiert)

  • VM Disks
  • CT Volumes

    1. 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.

    1. 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

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.

    1. 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
    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.
    1. 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)

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 Clones:

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
    • Add: Hard Disk
      • Auf local-zfs
      • Disk Size: 10
    • Hardware

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.

    1. 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:
    • Für schlanke Speichernutzung
      • Auf täglich ändern —> liebsten stündlich und das ganze für alle Laufwerke
      • Optimieren
      • Einstellungen ändern
    • Tools - 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.

    1. 3.11.ProxMox - Windows Platte vergrößern

In der ProxMox GUI:

  • Windows VM
    • Richtige Hard Disk auswählen
      • Resize 8 - Vergrößerung um 8 GB
    • Hardware
  • 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

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 …
    1. 3.12.ProxMox - Postinstaller für ProxMox (Github BashClub)

Im Browser:

  • GitHub.com/bashclub
    • 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
    • Postinstaller (proxmox-zfs-postinstall)

CLI:

  • wget-O ./postinstall —no-cache https://<git Adresse>
    bash ./postinstall

    • Min
    • Max
    • <Accept>
    • 5
    • en_US.UTF-8
    • <cancel>
    • <HARDEN SSH SERVER>
    • Monthly: 3
    • Weeks: 6
    • Daily: 14
    • Frequent: 12 (Viertel Stunden)
    • Hourly: 96
    • Pve-no-subscription oder evtl. pve-enterprise besser getestet Updates
    • None
    • <SUPRESS WARNING>
    • Sender display name
      • pve
    • Servername of smartest
    • Port of smarthost
      • 25
    • Email Address
    • Do you want to configure authentication against your smarthost ?
      • <cancel>
    • Set default block size
      • <skip>
    • Summary
      • <Install>
    • zfs_arc
    • Wappiness: Percentage off free RAM to start swapping
    • Set locales
    • Harden ssh server
    • Configure ZFS-Auto-Snapshots
    • Choose ProxMox VE repository
    • Ceph
    • Do you want to suppress the no subscription warning in WebGUI ?
    • Mail Config —> ganz neu
    • Installiert Update, Tools und passt die Config’s an
zfs list -t snapshot # —> zeigt schon einige Snapshots nach der kurzen Pause

ProxMox herunterfahren

    1. 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
    1. 3.14.TrueNAS Core - GUI

TrueNAS Core GUI

  • Storage
    • Create
      • Encryption with GELI
        • Nein
      • Jetzt sollte er die Pools finden
        • Die Pool waren in Benutzung
        • Die Pool wurden nicht exportiert
        • Pool werden nicht gefunden
      • Check ob die Platten in der GUI gesehen werden
      • Auf import wechseln
    • Pools
  • Storage
    • Es werden alle Platten gefunden
    • Disks
  • Shell
    • Zeigt die Pools an, aber nicht alle werden sauber angezeigt
      • z.B. gibt es einen rpool der unvail ist
      • Es gibt den rpool zweimal !!!
    • zpool import 

  • Kommentar Chriz: schwer verkackt …
    • Aktivierung start automatisch
    • Passwort login für root aktivieren
    • Lass uns ssh einschalten …
    • Ssh Dienst 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
      • Diese Zeilen müssen gelöscht werden
      • Evtl. gibt es mehrere Einträge für die gleiche IP Adresse

Aufgrund der aufgetreten Probleme bei zpool import wurde der gesamte Bereich in das Troubleshooting verschoben

    1. 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
      • Ein rpool, der viel zu neu ist
      • Chriz: Ich glaube, dass ich weiß, was soll ist
      • rpool - unvail - unsuyppored feature
      • 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
    • Es gab ein neues Update 13.0-U6
    • Update durchführen
    • Update bringt einen neuen Kernel mit
    • Update

TrueNAS CLI vor den Upgrade und reboot

zfs -v # —> zfs-2.1.5-1

ProxMox Produktion Chriz

zfs -v # —> zfs-2.2.2

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
    • Bist Du sagst 
      zpool upgrade # —> zieht die Features nach
    • ZFS 2.2.1
    • Pool ist noch auf 2.0.1

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

    1. 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:
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
    • ID: rpool-data-vm-101-disk-1
    • Server: localhost —> z.B.
    • Export: /rpool/nfs/vm-101-disk-1
    • Add NFS —> Fenster ist der NFS Client

ProxMox CLI

  • zfs list 
    cd /rpool/nfs/vm-101-disk-1
    cd images

ProxMox GUI

  • Windows VM wird wieder gestartet
  • Hardware
    • Disk Action
      • Disk: scsi0
      • Target Storage: rpool-data-vm-101-disk-1
      • Format: Raw disk image (raw)
      • Delete source: wird nicht angehart —> Abhängig von Anwendungsfall
      • Move Storage
    • Hard Disk (scsi0)

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
    • rpool-data-vm-101-disk-1:101/vm-101-disk-0.raw
    • Harddisk (scsci)
  • Windows VM stoppen

ProxMox GUI - zweiter PVE (nicht Workshop)

  • Storage
    • 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
    • Add NFS

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
    • Cluster Name: sysops
    • Cluster Network: <Cluster Netzwerk auswählen>
    • Create Cluster
  • Cluster
    • Join Information: <string> —> Join Information <string> kopieren
    • Cluster Join Information

ProxMox GUI - PVE Workshop

  • Cluster
    • 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>
    • Cluster Join
  • 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

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
    • Anpassung schon im vorherigen Punkt CLI letzter Punkt beschrieben
    • vm-101-disk-1 (falsch benannt - In der Doku entsprechend markiert) - Die Namen nicht sauber durchgezogen …
  • 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
    • Remove —> wir machen nochmal von Vorne damit wir es schön haben
    • 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
    • vm-101-disk-1 —> edit
    • Add NFS

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
    • ID: vm-101-disk-1
    • Server: <IP vom PVE Workshop>
    • Export: 
    • Add NFS
  • Nochmal raus gehen und neu machen
  • Storage
    • ID: vm-101-disk-1
    • Server: <IP vom PVE Workshop>
    • Export: <Exports sind wieder leer> —> Wer funk mir hier gerade in das Gehänge ?
    • Add NFS

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 ?
    # 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
    zfs set sharenfx=xxx # —> geht in der Regel

    • Alternativ:
      • Alles in die /etc/exports eintragen
    • Antwort
  • Workaround
    • Exports aus der Zwischenablage einfügen
    • zfs inherit sharenfs rpool/nfs # —> wir nehmen das ZFS NFS Sharing wieder raus
      vi /etc/exports

  • 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
    • 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
    • Add NFS
  • Der NFS Storage wird auf beiden Cluster Node nach einen kleinen Moment sichtbar sein
  • VM 901 starten —> bootet jetzt
    • 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
      • Anmerkung Chriz: Mit so einer Aktion habe ich mir schon einmal einen ProxMox abgeschossen !!!
      • Der RAM wird im laufenden Betrieb überkopiert —> VM startet auf dem anderen ProxMox
    • Migrate auf PVE Workshop
    • 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
      export /rpool/nfs/vm-101-disk-1
      path /mnt/pve/vm-101-disk-1
      server <ip von PVE Workshop>
      content images
      nfs: vm-101-disk-1
    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
    zdb -lbb rpool

      • Zeigt die Verteilung der block size
    • Auswertung von ZFS
    1. 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

    1. 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
    • 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 !
    • 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
      • Das Verzeichnis /etc/pve ist im Modus read-only, da keine Mehrheit gegeben ist
      • touch /etc/pve/test —> schlägt mit Permission denied fail
    • Man braucht da für immer 3 Cluster Node, da 2 Nodes eine Mehrheit bilden
      • Expected votes: 2
      • pvecm status —> Quorum Information und Votequorum Information, …
    • Warum ist der Cluster gerade nicht handlungsfähig ?
    • Wir machen die Cluster Config wieder rückgängig
  • 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.

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
    • Import Pool
      • Ich guck erstmal …
      • Es rpool und rpool-hdd angeboten
    • Storage Dashboard
  • System Settings
    • ssh 
      • Starten
      • Start Automatically an harken 
    • Services
  • Bei den User den public key für den User root eintragen —> Wird nach den ersten fehlgeschlagen login Versuch gemacht
    • Credentials 
      • root
        • Im Feld Autentication wird der ssh public key eingetragen
        • Edit
      • Users

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
    • Disks
      • Die Disks für rpool und rpool-hdd werden als exported angezeigt
    • Storage Dashboard
  • Storage
    • Import Pool
      • rpool
      • Es rpool und rpool-hdd angeboten
    • Storage Dashboard

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
    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
    • Import Pool
      • rpool-hdd
      • Es rpool und rpool-hdd angeboten
    • Storage Dashboard

TrueNAS Scale CLI

zfs list # —> zeigt den Pool rpool-hhd an

TrueNAS Scale GUI

  • System Settings
    • NFS einschalten
      • NFS aktivieren und automatisch starten an harken
    • Edit
      • Ich hab nur ein, deshalb bietet er mir nichts an
      • Bind IP -Addresses: —> eigenes SAN Interface
    • Services

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
      Chriz: Vermute bei TrueNAS Scale haben die das System anders \
      gemacht - dann geht es nicht
      Dann muss es einzeln freigegeben werden
      Operation not permitted
    ls -althr /mnt/rpool/nfs —> zeigt die Rechte auf die Ordner
    showmount --exports —> zeigt leere Datei
    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
    • UNIX (NFS) shares
      • Path: /mnt/rpool/nfs/vm-101-disk-1 —> Jede Platte einzeln auswählen (Verzeichnis in dem die Platte liegt)
      • 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
      • Add NFS
      • Edit NFS
    • Sharing

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
    • Add NFS
      • Nicht gespeichert
      • 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
    • Storage

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
    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
    • Netzwerk Traffic geht hoch —> das ist unser NFS Traffic
    • Network anklicken
  • 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
    • Add Periodic Snapshot Tasks
      • Zum snapshot aufräumen braucht man ein sauberes Namensschema !
      • Bei Bedarf kann hier der snapshot Zeitraum eingeschränkt werden - z.B. bestimmte snapshots nur während der Arbeitszeiten
      • Dataset: rpool/nfs
      • Snapshot lifetime: 96
      • Naming Schema: <-daily> —> -daily an bestehendes Schema dran hängen
      • Schedeule: <passende Zeitablauf auswählen> 
    • Data Protection
    • 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
    1. 3.19.TrueNAS Scale - iSCSI

ProxMox GUI - zweiter PVE (nicht Workshop)

  • VM 901 stoppen
    • Also handelt sich um einen .raw File
      • Raw File kann iSCSI und NFS
    • Schauen wir uns die Disk vm-101:101/vm-101-disk-0.raw

TrueNAS Scale GUI

  • Sharing 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
      • 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
    • Ist es kein Cluster darf hier nur ein Initiator herein !!!
    • Wizard iSCSI
    • Initiator: <iscsi Initiatorname von PVE> aus Zwischenablage kopieren
    • Speichern und starten - Chriz: hat hier wohl <Enter> geklickt
  • Und jetzt schauen wir uns an was der Wizard gemacht hat
    • 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
    • Hier kommt das SAN Net
    • Alle Initiatoren können hier eingetragen werden, wenn es sich um ein Cluster handelt - gruppiert werden
    • Wird normalerweise nicht genutzt
    • Alle Platten hängen in einer Group, ich muss diese nicht einzeln freigeben
    • Hier kommen alle Platten rein und halten am Target
    • Hier wird es verknüpft, dafür gibt es die Zuweisung
    • Sharing iSCSI
    • Portal
    • Initiator
    • Authentifaction
    • Targets
    • Extents
    • Associated Targets

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
    • 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
    • Add iSCSI
  • VM 901
    • Bestehende Hard Disk (scsi0) wird heraus geworfen (Detach)
    • Add Hard Disk
      • LUN ID steht im TrueNAS Scale unter Associated Targets —> LUN ID: 0
      • 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
    • Ich hab vergessen zu sagen wo von er booten soll - Ich mach mal mit <ESC> und im 
      • UEFI QEMU QEMU HARDDISK
      • Boot Manager
    • Windows startet
      • Wir arbeiten mit iSCSI
    • Hardware
    • VM starten

TrueNAS Scale GUI

  • Storage
    • Add zvol
      • Zvol name: vm-101-disk-4
      • Size: 16G
      • Block Size: 16k —> für iSCSI
    • Management Datasets

ProxMox CLI - zweiter PVE (nicht Workshop)

zfs list # —> rpool/nfs/vm-101-disk-4 … - - zvol - Ist Thick provised

TrueNAS Scale GUI

  • Dataset
    • Edit
      • Nicht das was wir suchen
    • Edit
      • Kann scheinbar kein Thin provising
    • Zvol spacemanaged
    • Zvol details
  • Shares
    • Configure
      • 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
      • Wizard iSCSI
    • Zwei Platten sichtbar
      • Eine Platte als RAW File
      • Die ander als Platte
    • Sharing
    • Unter Extend

ProxMox GUI - zweiter PVE (nicht Workshop)

  • VM 901
    • Add Hard Disk
      • Bietet uns beiden iSCSI Platten an
        • Wir wählen jetzt nochmal die Platte mit der LUN ID 0 aus —> falsch - doppelte HDD
      • Bus/Device: SCSI 1
      • Storage: truenasiscsi
      • Disk Image: <kann ausgewählt werden>
      • Discard: an harken
      • SSD emulation: an harken
    • 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
    • Doppelte Platte mit der LUN ID 1 auswählen
      • Detach der doppelten Platte
    • Hardware
    • Inakzeptabel
    • VM Console
    • VM stoppen
    • Hardware
    • Wir wissen nicht, ob die Platte schaden genommen hat

TrueNAS Scale GUI

  • Data Protection
    • Suchen: nfs/vm-101-disk-1
      • Date created seht nicht da - N/A
      • Nach Namen sortiert
    • Suchen: -hourly
      • Harken bei Recursive vergessen
        • Jetzt Harken gesetzt !
      • Fehler gemacht bei Anlegen des Snapshots gemacht (Edit Periodic Snapshot Task)
      • Wir rollen jetzt auf ein anders Datum zurück
    • Suchen: nfs/vm-101-disk-1
      • Rollback
        • No Safety Check - weil es gibt neuere Snapshot
        • Goto Storage
      • Wir nehmen den Snapshot von 11:15 Uhr
    • Snapshots

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
    • Add Hard Disk
      • Bietet uns beiden iSCSI Platten an
        • Wir wählen jetzt nochmal die Platte mit der LUN ID 1 aus —> richtige Disk ausgewählt
      • Bus/Device: SCSI 1
      • Storage: truenasiscsi
      • Disk Image: <kann ausgewählt werden>
      • Discard: an harken
      • SSD emulation: an harken
    • 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
    • Hardware
    • VM Console
    • Nächste Use Case Platte muss vergrößert werden
    1. 3.20.TrueNAS Scale - iSCSI LUN vergößern

ProxMox CLI - zweiter PVE (nicht Workshop)

dmesg -Tw # —> Ausgabe starten

TrueNAS Scale GUI

  • Datasets
    • Edit Zvol
      • 40 GB —> vorher 16 GB
    • vm-101-disk-4 

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
    • Datenträgerverwaltung
      • Datenträger zeigt noch die alte Größe von 16 GB an
      • Datenträger neu einlesen
    • Vermutlich liegt es am VirtIO Single - Nutzung von mehreren Kernen
    • iSCSI Controller 
      • Umstellung auf VirtIO SCSI
    • Options —> Bootplatte definieren
      • Harken bei allen nicht boot Platten entfernen
    • Nach dem Starten der Datenträgerverwaltung wird die neue Größe erkannt
      • 16 GB genutzer Platten Bereich und 24 GB nicht zugeordnet
      • Volume erweitern
    • Console
    • Windows herunterfahren
    • Versuchen wir es mal VirtIO (nicht Single)
    • Hardware
    • VM wieder starten

TrueNAS Scale GUI

  • Datasets
    • Edit Zvol
      • 48 GB —> vorher 40 GB
    • vm-101-disk-4 

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
    • Datenträgerverwaltung
      • Erkennt die Vergrößerung nicht
      • Datenträger neu einlesen
    • Console

TrueNAS Core GUI

  • Jetzt schauen wir uns das bei TrueNAS Core an wo es funktioniert
    • Block Shares (iSCSI)
      • Sieht genauso aus wie bei TrueNAS Scale
    • Sharing

ProxMox GUI - ProxMox zum TrueNAS Core

  • VM x
    • SCSI Controller
      • VirtIO SCSI —> läuft noch auf dem alten Treiber
    • Hardware

ProxMox GUI - zweiter PVE (nicht Workshop

  • VM 901
    • 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
    • Hardware
  • Console
    • 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
    • Erkennt den Datenträger 1
      • 40 GB der Partition im Filesystem NTFS
      • 8 GB Nicht zugeordnet
    • Volume erweitern
    • Vergrößerung wird durchgeführt
    • Gerätemanager
    • Datenträgerverwaltung

TrueNAS Scale GUI

  • Datasets
    • Edit Zvol
      • 50 GB —> vorher 48 GB
    • vm-101-disk-4 

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
    • Datenträgerverwaltung
      • Erkennt die Vergrößerung nicht, die Antwort bleibe ich schuldig unter TrueNAS Core funktioniert es … - muss ich nachreichen
      • Datenträger neu einlesen
    • Anderes Problem
      • Platte wird offline genommen
    • Console

TrueNAS Scale GUI

  • Datasets
    • Edit zvol 
      • Lösung muss über Text bestätigt werden
      • Delete zvol
    • vm-101-disk-4 

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.


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

    1. 3.21.Fileserver
      1. Univention Server UCS

ProxMox GUI - zweiter PVE (nicht Workshop)

  • VM x
    • Fileserver was könnte dafür sprechen
      • Linux - stabiler als Windows
      • Web GUI —> Chriz: Ist richtig schlecht
    • Neue Freigabe
      • Pfad / mount Point —> Eigene Platte wäre schön - keine Auswahl oder Knopf dafür
      • Viele Punkt an den man es verscheissen kann ..
      • Neue Freigabe: Workshop
    • Samba
    • 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
    • UCS Server starten
    • Hardware

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
    • DNS Server muss passen —> UCS Server ist Domain Controller und damit DNS Server
    • Zeit muss passen
    • Domain eintragen
    • reboot
    • Eigenschaften
      • Erweitert
        • Rechte evtl. anpassen
        • Vollzugriff 
        • Vererbung deaktivieren - vererbte behalten
        • Administrator entfernen
        • Jeder entfernen
        • Domain Users hinzufügen
        • Christian
      • Sicherheit
    • Windows aus der aktuellen Domain herauswerfen —> Arbeitsgruppe: sysops
    • Reboot
    • Login mit lokalem User
    • Windows in die Domain aufnehmen
    • Login mit Administrator der Domain
    • Auf Freigabe workshop
    • Ordner anlegen —> Christians Ordner

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 !!!

      1. 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
    • Im zmb-member/share
      • Wir legen ein paar Ordner an
    • Console

ProxMox CLI - zweiter PVE (nicht Workshop)

  • Mal einige snapshost anlegen
  • /etc/cron.hourly/zfs-auto-snapshot
    /etc/cron.daily/zfs-auto-snapshot

ProxMox GUI - zweiter PVE (nicht Workshop)

  • VM Windows von vorher
    • Windows Explorer
      • Rechte Maustaste
        • Zeigt zwei ältere Versionen an
        • Vorgänger Version wiederherstellen
      • Share 
      • Trojaner simulieren 
    • Console

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
    • Windows Explorer
      • Alles wieder schön
      • Share 
    • Console

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

      1. TrueNAS Scale

TrueNAS Scale GUI

  • Datasets
    • Name: nas
    • nfs —> hier hatten die Autosnapshots in TrueNAS Scale konfiguriert 
    • Add Dataset —> Für Dateien
  • Shares
    • Path: /mnt/rppol/nfs/nas
    • Evtl. muss der Service enable werden
    • Configure ACL —> wir haben nur den User root zur Zeit
    • Add SMB
  • Network
    • DNS Server: <ip des „Domain Controller“> —> Damit Domaine aufgelöst werden kann
  • Credentials
    • Configure Active Directory
      • Domain Name: sysops.tv
      • Domain Account Name: administrator
      • Domain Account Password: <password>
      • NetBIOS Name: truenasws
      • Enable: an harken
    • Directory Services

ProxMox GUI - zweiter PVE (nicht Workshop)

  • VM Windows von vorher
    • Windows Explorer
    • \\truenasws\nas —> Im Explorer auswählen
    • Console

Für welche Filesystem würdest Du Dich entscheiden ? (Zamba File Server - das machen alle aus dem Stammtisch)

    1. 3.22.ProxMox auf Raspberry sichern mit Thorstens Tool

Browser

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 ….

    1. 3.23.Check-zfs-replication kommt auf RaspberryPI (Ziel)

Browser

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