Proxmox Virtual Environment aufsetzen - Tagebuch

    • Offizieller Beitrag

    Moin Moin,

    weiteres Tagebuch - für mich zur Doku und für Euch zum verfolgen. Hat jetzt nicht den Anspruch ein super komplettes Tutorial zu werden aber Tipps, Links meine Daily challenges werde Euch evtl. auch helfen.

    Nur nochmals zum Einstieg ich mit Linux enthusiastic beginner - kenne shells etc. aber habe Linux bisher vermieden weil es mich genervt hat das jede Distro die gleichen/ähnliche Dinge anders macht. Jetzt steige ich aber von Windows 2019 Server Umgebung mit Hyper-V um auf Proxmox mit KVM und Linux Containern (LXC).

    Die Promox Installation braucht man nicht erklären das ist klickibunti nachdem man sich einen StartUSB Stick erstellt hat.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Bei mir einzig das Problem welches Netzwerkinterface ist denn nun das richtige - finde ich bei Linux immer noch total kryptisch. (habe BIOS 1G, WAN 1G, LAN 10G und Cluster 10G).

    ip link show hilft da schon mal:

    dann kann man die Geschwindigkeit via cat auf /sys/class/net/<if>/speed herausbekommen

    Code
    root@pve-hv-01:~# cat /sys/class/net/eno2/speed
    1000
    root@pve-hv-01:~# cat /sys/class/net/eno4/speed
    10000

    und bisserl Auschlussverfahren... nur immer einen port einstecken und man kommt ans Ziel. ip show address hilft auch mal. Eine Kommando für eine Komplettübersicht wäre nett - gibt es vermutlich aber ich bin halt rookie was linux angeht.

    • Offizieller Beitrag

    Nach dem das LAN IF gefunden war nächster schritt mal die Software aktualisieren, dazu dann am Webinterface. Das No-subskription hinzugefügt und das Enterprise repo deaktiviert.

    Danch geht dann auch apt update und upgrade auf der Shell oder das update via GUI.

    • Offizieller Beitrag

    Nächster check wird mein HBA/RAID controller und die festplatten erkannt. Jawoll - puh das war meine größte Sorge.

    das NVME drive wird für ein Cluster CEPH volume später verwendet (laufen dann HA VMs und LXCs drauf). SDA ist die Boot platte für PVE und der Rest kommt vom HBA. Sind noch alles NTFS Laufwerke vom Windows Server - die stelle ich nach und nach dann um.

    • Offizieller Beitrag

    Mounting an NTFS partitition (have to use command line, just open a shell on the GUI or use and SSH client)

    read only

    mount -t ntfs -o nls=utf8,umask=0222 /dev/<yourdevice like sdb2> /media/<yourname>

    umount /media/<yourname>

    or rw

    mount -t auto /dev/<yourdevice like sdb2> /media/<yourname>

    oder wenn noch nicht vorhanden mit

    Code
    sudo apt-get install ntfs-3g

    und dann als ntfs-3g mounten.

    • Offizieller Beitrag

    Ach ja Nachtrag Netze die sehen bei mir so aus: aktuell drei subnetze LAN (0), Cluster (5) ,WAN (1)

    eno1 ist unbenutzt.

    • Offizieller Beitrag

    Sodele jetzt wie bekomme ich einen Linux Container zum laufen.

    Wann VM:

    - Wenn live migration geplant ist

    - Externer service da VM höhere Sicherheit bietet als Container

    EInen Webserver für extern oder Nextcloud von extern würde ich besser in eine VM packen

    LXC:

    - Lokale Services (linux only)

    - Migration via shutdown move start reicht

    - Resources geschont werden sollen (z.B. LXC Ubuntu 22 50MB VM ca. 1 GB Ram verbrauch)

    Einen Metrikserver oder lokalen NAS server würde ich in einen LXC packen.

    Linux Container sind mehr oder weniger wie eine VM im Gegensatz zu einem "normalen" Container der eigentlich keinen Status hat und somit alle Daten die zur Laufzeit generiert wurden verliert (es sei denn man nutzt persistence volumes).

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Man startet damit Container Templates bereitzustellen - hier mal Ubuntu 22 (ich werde wo immer es geht Ubuntu einsetzen):

    Danach kann man mit diesem template schon einen LXC container erstellen. Bis auf den Namen und die passende Netzwerkbridge alles default:

       

    läuft:

    So schnell kann man ein erstes Ubuntu Linux virtualisieren :) Dauert 30s.

    • Offizieller Beitrag

    Ähnlich wie Container erstellt man VMs.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Image herunterladen und VM erstellen - image auswählen für die DVD Discard bei der platte aktivieren wenn SSD (trim), Bridge die richtige nehmen...

    Wenn man die VM startet läuft dann der normale Ubuntu (Annahme man hat eine Ubuntu ISO genommen - ich nehme minimal server) installer ab.

    Wenn die VM läuft erstmal ein update upgrade und ein apt install qemu-guest-agent und den Agent in den Optionen der VM aktivieren (für den nächsten restart)

    • Offizieller Beitrag

    Template von einer VM erstellen, damit man nicht immer alle Schritte nochmals durchmachen muss (installations zeuchs, update,...)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    was im video fehlt ist ein sudo cloud-init clean bevor Ihr die template VM final runterfahrt. Macht man das nicht werden die SSH keys nicht neu erstellt. Ihr könnt das auch später auch in der geklonten Maschine machen und dann rebooten - beim reboot werden dann die SSH keys erzeugt. Ansonsten wird der SSH Daemon nicht starten.

    Noch ein Hinweis für Windows VMs. Hier noch ein virtio iso image herunterladen und als treibercd mit einbinden. Bei der Installation von diese die SCSI Treiber installieren späte dann wenn windows läuft noch die fehlenden Treiber und den Guestagent von der CD installieren.

    Das gleiche geht für Container auch.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Nach dem start der geclonten container noch

    Code
    dpkg-reconfigure openssh-server

    um die SSH keys wieder zu erzeugen damit der SSH server läuft (cloud-init gibt es im container nicht).

    was ich noch geschickt finde ist webmin gleich mit auf dem Template zu installieren:

    Webmin

    package mit z.b.

    Code
    wget https://downloads.sourceforge.net/project/webadmin/webmin/2.000/webmin_2.000_all.deb

    herunterladen und dann mit

    Code
    sudo dpkg -i webmin_2.000_all.deb

    installieren. Evtl. noch dependencies nachinstallieren und wiederholen

    • Offizieller Beitrag

    Disk an VM oder LXC (hier mit Einschränkungen) durchreichen - macht nat. nur sinn für Systeme die nicht im HA Cluster später verschoben werden können und wenn wirklich IO performance entscheidend ist. Ich würde aber z.B. nicht platten durchreichen um auf einem NAS ein ZFS volume zu erstellen, dass besser direkt auch Proxmox und dann von dort zu verfügung stellen.
    Leider geht das ganze nicht an der WebGUI.

    erstmal brauchen wir die disk-id der platten die wir durchreichen möchten.

    hier brauchen wir den teil mit ata... für die platten die wir durchreichen möchten.

    Dann brauchen wir noch die VM ID und die Laufwerks ID die wir nutzen möchten.

    ALso hier z.B 205 und dann die nächste freie SCSI ID also scsi1.

    qm set <vmnummer> -<nächste freie disk> /dev/disk/by-id/<eure disk id>

    Code
    root@pve-hv-01:/media/sdc2# qm set 205 -scsi2 /dev/disk/by-id/ata-TOSHIBA_MG07ACA14TE_71V0A26RF94G
    update VM 205: -scsi2 /dev/disk/by-id/ata-TOSHIBA_MG07ACA14TE_71V0A26RF94G

    und in Proxmox webinterface sieht das dann so aus:

    d.h. in meinem Fall hat die VM omv mit der ID 205 eine weitere SCSI platte (2) hinzubekommen. Ihr seht auch die SCSI ID muss nicht fortlaufend sein aber frei.

    Man kann die Platte auch mehrfach verwenden und an mehrere VMs binden (aber nur eine sollte schreiben dürfen).

    Bei Containern kann ich nicht die gesamte Platte durchreichen sondern nur "mountpointa" - man muss diese also im Host entsprechend anlegen.

    Code
    root@pve-hv-01:/media/sdc2# lsblk | grep -i sdd
    sdd                              8:48   1  12.7T  0 disk
    ├─sdd1                           8:49   1    16M  0 part
    └─sdd2                           8:50   1  12.7T  0 part
    root@pve-hv-01:/media# mkdir sdd
    root@pve-hv-01:/media# mount -t ntfs -o nls=utf8,umask=0222 /dev/sdd2 /media/sdd
    root@pve-hv-01:/media# lsblk | grep -i sdd
    sdd                              8:48   1  12.7T  0 disk
    ├─sdd1                           8:49   1    16M  0 part
    └─sdd2                           8:50   1  12.7T  0 part /media/sdd

    sdd2 ist eine NTFS partition die readonly eingebunden werden soll. Wenn man das permanent machen möchte nat. in /etc/fstab einbinden.

    Code
    pct set <containerid> -mp0 /media/sdd,mp=/media/sdd-ct

    so sieht das dann auf der GUI aus (nach dem pct set den container rebooten damit es wirksam wird):

    Das kann man hier wieder für mehrere Container machen. Mischen, also mountpoint für container und die gleiche Platte für VM durchreichen wird nicht gehen.

    • Offizieller Beitrag

    Naja gerade wieder mal über Festplattenverwaltung bei Linux geflucht - shells sind ja feine Sache, bei vielen Platten wird das mit den disk mounts, volumes, IDs wirklich super schnell unübersichtlich.

    Code
    ls -l /dev/disk/by-id*
    lsblk -o NAME,UUID,FSTYPE,FSUSE%,TYPE,SIZE,MOUNTPOINT,MODEL,SERIAL
    ls -l /src/*

    und wichtig wenn man partitionen mit einer VM bearbeitet hat bekommt das der Proxmox host nicht mit und muss manuell gerefreshed werden (auch wenn man auf der GUI refresh bei den Disks drückt) :( Hier ein Beispiel für die sda disk. Danach nochmals refresh an der GUI und die neuen Partitionen werden angezeit

    Code
    hdparm -z /dev/sda

    um die Disk-ID für fstab abzufragen (nicht verwechseln mit der Seriennummer):

    Code
    $ sudo blkid /dev/<device>

    Löschen einer Platte mit

    Code
    wipe /dev/sdx

    danach wieder mit hdparm einlesen

    Partition anlegen (g neue parttable und n neue partition mit w speichern)

    Code
    fdisk

    xfs Filesystem anlegen

    Code
    mkfs.xfs /dev/sdx
    • Offizieller Beitrag

    iotop und CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO % Fehler

    Siehe für Lösungen

    IOTOP complains: CONFIG_TASK_DELAY_ACCT not enabled in kernel
    Looking about, I see that the standard fix is to add this to the kernel boot parameters. Using systemd-boot, my arch.conf looks like this : title Arch…
    unix.stackexchange.com
    • Offizieller Beitrag

    Sodele heute stundenlang daran gesessen wie ich vhdx (HyperV dynamische platten) in Proxmox bootbar bekomme. Konvertierung mit

    Code
    qemu-img convert -O qcow2 xxx.vhdx yyy.qcow2 

    ist klar aber dann findet er meist kein boot device. Wie ich jetzt experimentell heraus bekommen habe liegt es am GPT format meiner DISKS. Wenn man die in MBR wandelt (habe ich mit DiskGenius gemacht) und die Bootfiles mit der repair CD + die passende partition activiert geht es. Hmm ja IDE muss noch selektiert sein.

    Wenn C das boot volume ist:

    Code
    bcdboot C:\Windows /s C:

    aus https://www.heise.de/tipps-tricks/W…-s-4268553.html

    Was tun, wenn bootrec keine Windows-Installation findet?

    Falls die vorhergehende Schritt-für-Schritt-Anleitung das Problem des defekten Bootmanagers nicht gelöst hat, gibt es über bcdboot eine weitere Methode zur Behebung des Problems. Gehen Sie dazu wie folgt vor:

    1. Laden Sie die erweiterten Startoptionen von Windows 10. Schalten Sie dafür Ihren PC aus und starten Sie ihn wieder. Drücken Sie dann wiederholt die Taste [F8].
    2. Klicken Sie auf "Problembehandlung" > "Erweiterte Optionen" > "Eingabeaufforderung".
    3. Tippen Sie "diskpart" ein.
    4. Geben Sie dann "select disk 0" ein.
    5. Tippen Sie "list partition" ein.
    6. Nun tippen Sie "select partition X" ein, wobei X die Partition ist, wo Ihr Windows installiert ist.
    7. Geben Sie nun "active" ein.
    8. Anschließend geben Sie "exit" ein.
    9. Mit "bcdboot c:\windows" können Sie den Bootloader restaurieren. Die Laufwerksbuchstaben bitte anpassen, im Beispiel ist c: die Windows-Partition.
    10. Starten Sie abschließend Ihren PC neu.
    • Offizieller Beitrag

    XFS Laufwerk erstellen simple

    In Proxmox eine Disk hinzufügen

    Laufwerk mittels lsbk herausfinden

    Code
    mkfs.xfs /dev/<laufwerk>

    mounten

    Code
    mount /dev/<laufwerk> /media/<deinverzeichnis>

    done. Idealerweise in fstab via UUID eintragen

    • Offizieller Beitrag

    Samba mount

    Code
    mount -t cifs -o username=<user>,password=<pwd>//1.2.3.4/sharename /mnt

    vorher evtl.

    Code
    apt install cifs-utils

    will man das automatisch beim booten mach in fstab eintragen ala:

    Code
    //<server>/<dir> /media/samba cifs credentials=/root/.smb,users,rw,iocharset=utf8

    und dann muss in /root/.smb datei der username und passwort stehen

    Code
    username=<user>
    password=<password>
    • Offizieller Beitrag

    Wenn man die initialen LVMs vergrößern (ala pve-data) möchte sind folgende zwei links hilfreich

    1. https://www.onesystems.ch/blog/lvm-festp…neue-partition/
    2. https://www.thomas-krenn.com/de/wiki/LVM_vergr%C3%B6%C3%9Fern
    • Offizieller Beitrag

    Mich gerade beim Einrichten des Ceph Clusters gewundert warum das Verschieben einer virtuellen HD trotz 10G Netzwerk und nvme drive stunden dauern soll...

    Womit also unter linux netzwerkperformance messen: iperf

    Code
    sudo apt-get install iperf

    Auf der Server-Seite starten Sie dann Iperf mit

    Code
    iperf -s

    im Terminal, und das Tool lauscht nun auf dem TCP-Port 5001, während auf dem Client anschließend der eigentliche Test mit

    Code
    iperf -c [Server-IP] -d

    gestartet wird.

    schlecht:

    Zitat

    [ 4] local 192.168.0.52 port 5001 connected with 192.168.0.51 port 49582

    [ ID] Interval Transfer Bandwidth

    [ 4] 0.0000-10.3176 sec 112 MBytes 91.1 Mbits/sec

    repariert (Stecker war nicht richtig kontaktiert):

    Zitat

    [ 5] local 192.168.0.52 port 5001 connected with 192.168.0.51 port 56540

    [ ID] Interval Transfer Bandwidth

    [ 5] 0.0000-10.0030 sec 10.9 GBytes 9.38 Gbits/sec


    Zum monitoren als top iftop nehmen.

    • Offizieller Beitrag

    Sodele die drei Server laufen ja jetzt im HA Verbund zumindest für die wichtigen VMs.

    Jetzt fehlt natürlich eine größere halbwegs sichere Ablage für Dateien, Backups und weiss der deubel.

    Hier werden ich die Proxmox ZFS Einstellungen um eine Raid10 zu erstellen (4 Platten a 10TB also 20TB nutzbar). HDDs sind für Dateiablage und backup gut genug und mehr Raid oder Platz brauche ich nicht, da die Daten im nächsten Schritt dann auch mit einem Backupserver gesichert werden.

    Gute Anleitung zumindes funktioniert es findet sich z:b. unter

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    • Offizieller Beitrag

    Hilfreich für erste Hilfe bei Ubuntu Diagnosen

    Tools to diagnose Ubuntu problems
    Over time a user will have several problems with Ubuntu as any other OS in the world. What tools and terminal commands exist in Ubuntu to help diagnose how the…
    askubuntu.com
    • Offizieller Beitrag

    Rsync examples

    Synced daten von a nach b und löscht nicht mehr in der Quelle vorhandene Dateien im Ziel (löschen kann man --delete-before oder -after auch zeiltich bestimmen)

    rsync -rauv --delete --progress --partial --stats <a> /*<b>

    Synced Dateeien von a nach b und löscht diese auf der Quelle a wenn erfolgreich kopiert.

    rsync -avzh --progress --partial --stats --remove-source-files <user>@<server>:<a>/* <b>

    also so etwas wie

    mv -v -i quelle ziel

    kopiert und löscht direkt nach dem kopieren bevor die nächste Datei kopiert wird (mv ist halt nur lokal).


    Das Löschen auf der source Seite erfolgt irgendwann. D.h. wenn rsync abbricht (Platz alle) kann es sein, das obwohl Dateien schon transferiert wurden diese nicht gelöscht wurden.

    Für die Problematik einfach kopieren solange Platz auf der Zielseite aber trotzdem die einzelnen Dateien immer gleich löschen wenn erfolgreich transferiert habe ich leider keinen geeigneten Mechanismus gefunden.

    OptionWirkung
    -uüberspringt Dateien, die im Ziel neuer sind als in der Quelle
    -vzeigt während des Synchronisierens alle ausgeführten Schritte an
    -xberücksichtigt nur Objekte, die sich im selben Dateisystem befinden
    -Paktiviert folgende Optionen:

    --progress Fortschrittsanzeige beim Transfer anzeigen

    --partial Fortsetzung des Transfers bei Abbruch
    -nsimuliert nur was passieren würde ("dry run")
    --bwlimitz.B. --bwlimit=30 limitiert die Bandbreite, die genutzt werden soll (Hilfreich, da rsync sonst die gesamte verfügbare Bandbreite in Anspruch nimmt und sonstige Anwendungen damit blockiert)
    --ignore-existingÜberspringt die vorhandenen Daten und schreibt nur die neuen
    -zaktiviert die Komprimierung für die Datenübertragung (diese Option ist sinnvoll, wenn zwischen Quelle und Ziel eine langsame Verbindung besteht)
    -ewählt die remote shell aus, die meisten werden SSH nutzen. Also -e ssh
    -Ebehält die Ausführbarkeit von Dateien bei
    --exclude=Musterschließt ein bestimmtes Muster von der Sicherung aus
    --exclude=ORDNER1 --exclude=ORDNER2schließt ORDNER1 und ORDNER2 von der Sicherung aus
    --deletevergleicht Quellverzeichnisse und Zielverzeichnisse und sorgt dafür, dass Dateien, die im Quellverzeichnis nicht (mehr) vorhanden sind, im Zielverzeichnis gelöscht werden. Dies kann dazu führen, dass man ungewollt Dateien löscht, die man aber noch in der Sicherung behalten möchte.
    -bsorgt dafür, dass durch die Option --delete gelöschte sowie alle veränderten Objekte gesichert werden (siehe dazu folgende Option --backup-dir=)
    --backup-dir=Verzeichnisgibt ein Verzeichnis für die gelöschten und geänderten Objekte an, siehe Option -b
    -caktiviert einen Dateivergleich, basierend auf Prüfsumme und nicht auf Größe und Zeitstempel. Die eigentliche Prüfsummenbildung dauert deutlich länger als der Vergleich Größe und Änderungs-Zeitstempel; andererseits werden überflüssige Kopiervorgänge (z.B. bei nur geänderter Änderungszeit) vermieden.
    --iconvsorgt für eine Konvertierung der Dateinamen zwischen Systemen mit verschiedenen Codepages. Dieser Parameter kann erforderlich werden, wenn Dateien mit z.B. Umlauten im Namen übertragen werden.
    -h, --human-readableverwandelt Zahlen in den log Dateien und auf stdout in ein besser für Menschen lesbares Format. Große Zahlen werden zu K (kilobytes), M (megabytes), oder G (gigabytes). Wenn diese Option angegeben wird ist K (1000), M (1000*1000), und G (1000*1000*1000). Wenn diese Option doppelt angegeben ist (-hh), wird mit 1024 anstelle von 1000 gerechnet.
    -HHardlinks werden berücksichtigt
    --statszeigt einen ausführlicheren Bericht am Ende einer Übertragung an.
    --size-onlysorgt dafür, dass Dateien mit gleicher Dateigröße übersprungen werden, unabhängig davon, ob sie sich in anderen Eigenschaften unterscheiden. Hilfreich bei Sicherungen auf Datenträger mit den Dateisystemen FAT oder NTFS, welche die unter Linux für die Verwaltung der Besitz- und Zugriffsrechte verwendete UNIX-FACL nicht unterstützen (weitere Einschränkungen).
    --progresszeigt den Fortschritt des Kopiervorganges an.
    • Offizieller Beitrag

    Typische find grep Kombination

    Code
    find ./ -type f -name "*.*" -exec grep -q "for more information." {} \; -print

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!