proxmox

Proxmox VE

PVE Server Backup

Command Line

qm = Management der kvm VMs

pct = Management der lxc Container

Alle VMs (KVM und lxc) auf einmal runterfahren

pvesh create /nodes/localhost/stopall

VM löschen

qm destroy 105

Mounten eines Containers auf dem Host

pct mount 108 mounted CT 108 in '/var/lib/lxc/108/rootfs'

Gemeinsames Guest Share (smb)

mount.cifs \\\\10.10.10.1\\guests /mnt/guests

Speicherverbrauch ermitteln

du -a /home | sort -n -r | head -n 5 find / -type f -size +100M

Container umbenennen

pct set <VMID> --hostname <newname>

Container

https://pve.proxmox.com/wiki/Linux_Container

Erreichbare Templates auflisten

pveam update

pveam available

Runterladen

pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz

Geht nur mit privileged container. Unter /Your LXC Option/Feature muss die "CIFS capability" aktiviert sein.

Verzeichnisstruktur

Was Wo Anmerkung
kvm VM images /mnt/data/images, /var/lib/vz/images
kvm VM configs /etc/pve/nodes/tokoeka/qemu-server
LXC images /var/lib/vz/images
LXC configs /etc/pve/nodes/tokoeka/lxc

Netplan Beispielconfigs

/etc/netplan/default.yaml für zwei Schnittstellen mit festen IPs, default gateway und routing

network:
  version:  2
  renderer:  networkd
  ethernets:
    ens18:
      dhcp4:  no
      addresses:  [ 136.243.85.153/27 ]
      gateway4:  136.243.85.129
      nameservers:
        addresses:  [ 213.133.98.98, 213.133.99.99, 213.133.100.100 ]
    ens19:
      dhcp4:  no
      addresses:  [ 10.10.10.10/24 ]
      nameservers:
        addresses:  [ 10.10.10.1 ]
      routes:
        - to:  10.10.10.0/24
          via:  10.10.10.1
          metric: 200
        - to:  0.0.0.0/0
          via:  136.243.85.129
          metric:  100

Für eine Schnittstelle (ct, nur internes Netz)

network:
  version:  2
  renderer:  networkd
  ethernets:
    eth0:
      dhcp4:  no
      addresses:  
        - 10.10.10.16/24
      gateway4:  10.10.10.1
      nameservers:
        addresses:  [ 10.10.10.1 ]
      routes:
        - to:  0.0.0.0/0
          via:  10.10.10.1
          on-link:  true
/etc/netplan/01-netcfg.yaml (END)

Testen:

sudo netplan generate

Testen mit automatischem zurücksetzen auf den vorherigen Stand

sudo netplan try -timeout 180

Anwenden

sudo netplan apply

Port 111 rpcbind

Siehe https://www.taste-of-it.de/debian-rpc-port-111-offen/ Über iptables auf localhost einrschränken:

iptables -A INPUT -p tcp !-s 127.0.0.1 –dport 111 -j DROP

ip6tables -A INPUT -p tcp ! -s IPv6-Adresse –dport 111 -j DROP
ip6tables -A INPUT -p tcp -s IPv6-Adresse –dport 111 -j ACCEPT

iptables -A INPUT -p udp ! -s 192.168.0.0/24 –dport 111 -j DROP
ip6tables -A INPUT -p udp -s! IPv6-Adresse –dport 111 -j DROP

Datenwiederherstellung aus Dumpfile

Dumpfiles werden im Format *.lzo oder *.tar.zst komprimiert abgelegt. Sie enthalten die VM Daten im raw Format.

zst dekomprimieren

zstd -d vzdump-lxc-113-2022_05_14-01_30_57.tar.zst

danach mit tar xf …tar auspacken.

lzop -x [*.lzo Datei]

erzeugt eine unkomprimierte *.vma Datei. Daraus werden die Partitionen als *.raw Dateien extrahiert:

vma extract [*.vma] /mnt/tmp/extract/

Mit file sieht man, was drin ist:

file tmp-disk-drive-scsi1.raw

tmp-disk-drive-scsi1.raw: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x3ff,255,63), startsector 1, 204799999 sectors, extended partition table (last)

kpartx erzeugt daraus passende loop devices

root@tokoeka /mnt/data/tmp/extract # kpartx tmp-disk-drive-scsi0.raw

loop1p1 : 0 2048 /dev/loop1 2048
loop1p2 : 0 67102720 /dev/loop1 4096

Um diese zu mounten, braucht man den offset bis zur Partition:

root@tokoeka /mnt/data/tmp/extract # fdisk -l tmp-disk-drive-scsi0.raw
Disk tmp-disk-drive-scsi0.raw: 32 GiB, 34359738368 bytes, 67108864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 074AFDD5-B8AF-4EB9-A630-1B6E2136EBE9

Device Start End Sectors Size Type
tmp-disk-drive-scsi0.raw1 2048 4095 2048 1M BIOS boot
tmp-disk-drive-scsi0.raw2 4096 67106815 67102720 32G Linux filesystem

Der Offset ist also <font inherit/inherit;;#c0392b;;inherit>4096 x 512 = 2097152.</font> Der Mountbefehl sieht so aus:

mount -o ro,loop,offset=2097152 harddrive.img /mnt/loop

Am Ende unmountet man alles und detached die loop devices wieder

root@tokoeka /mnt/data/tmp/extract # losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                      DIO LOG-SEC
/dev/loop1         0      0         0  0 /mnt/data/tmp/extract/tmp-disk-drive-scsi0.raw   0     512
/dev/loop0         0      0         1  0 /var/lib/vz/images/106/vm-106-disk-0.raw         0     512

root@tokoeka /mnt/data/tmp/extract # losetup -d /dev/loop1
root@tokoeka /mnt/data/tmp/extract # losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                DIO LOG-SEC
/dev/loop0         0      0         1  0 /var/lib/vz/images/106/vm-106-disk-0.raw   0     512

qcow2 Device mounten

modprobe nbd max_part=8

qemu-nbd –connect=/dev/nbd0 /var/lib/vz/images/100/vm-100-disk-1.qcow2

fdisk /dev/nbd0 -l

mount /dev/nbd0p1 /mnt/somepoint/

umount /mnt/somepoint/

qemu-nbd –disconnect /dev/nbd0

rmmod nbd

pct Loop Device mounten

Ablauf manuell

losetup /dev/loop22 disk-drive-ide0.raw
partx -v --add /dev/loop22
mount /dev/loop22p1 /mnt/123
root@tokoeka /mnt/data/images/116 # losetup /dev/loop19 vm-116-disk-2.raw 
root@tokoeka /mnt/data/images/116 # partx -v --add /dev/loop19
partition: none, disk: /dev/loop19, lower: 0, upper: 0
/dev/loop19: partition table type 'gpt' detected
range recount: max partno=1, lower=0, upper=0
/dev/loop19: partition #1 added
root@tokoeka /mnt/data/images/116 # losetup -l | grep 116
/dev/loop19         0      0         0  0 /mnt/data/images/116/vm-116-disk-2.raw   0     512
/dev/loop8          0      0         1  0 /mnt/data/images/116/vm-116-disk-0.raw   0     512
/dev/loop18         0      0         1  0 /mnt/data/images/116/vm-116-disk-1.raw   0     512

Auflisten aller Loop-Devices

losetup -l

Devices abhängen, mit -D alle zugehörigen abhängen

losetup -d

losetup -D

Parsen der Partitionstabelle und anlegen von loop Einträgen nach Bedarf

partx -v --add /dev/loop20

Partitionstabelle zeigen

root@tokoeka /mnt # partx -s /dev/loop22
NR START       END   SECTORS  SIZE NAME UUID
 1  2048 204799999 204797952 97.7G      7a11d514-01

pct set

pct set 116 -mp1 volume=data:116/vm-116-disk-2.raw,mp=/mnt/data2,backup=1

Offen: offset? p1 ?

Firewall

zentrale Konfiguration

/etc/pve/firewall/cluster.fw

Aktuell ist in rc.local dieser Befehl gesetzt:

#
#!/bin/sh -e
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

pve-firewall stop

exit 0

Beim Neustart läuft PVE also immer ohne Firewall

Konvertierungen

https://stafwag.github.io/blog/blog/2018/07/01/migrate-a-windows-vmware-vrtual-machine-to-kvm/

Split disks in eine Datei umwandeln

vmware-vdiskmanager -r leapsrv.vmdk -t 0 /tmp/leapsrv_combined.vmdk

Wandeln von vmdk nach qcow2

qemu-img convert -f vmdk -O qcow2 leapsrv_combined.vmdk leapsrv_combined.vmdk.qcow2

Andersrum von qcow2 (kvm) nach raw (lxc):

qemu-img convert -f qcow2 -O raw vm-109-disk-1.qcow2 /mnt/data/images/114/vm-114-disk-3.raw

User Management

Gruppe erstellen:

 pveum groupadd admin -comment "System Administrators"

Rechte zuweisen:

 pveum aclmod / -group admin -role Administrator

Benutzer der Gruppe zuweisen:

 pveum usermod testuser@pve -group admin
  • proxmox.txt
  • Zuletzt geändert: vor 7 Tagen
  • von thommie4