Proxmox VE – przydatne polecenia z linii komend

Kontrolowanie stanu maszyny wirtualnej Proxmox narzędziem qm

Aby kontrolować maszyny wirtualne Proxmox (VM) z wiersza poleceń, możesz użyć narzędzia wiersza poleceń qm. To narzędzie pozwala zarządzać różnymi aspektami maszyn wirtualnych Proxmox, takimi jak uruchamianie, zatrzymywanie, tworzenie, usuwanie i modyfikowanie maszyn wirtualnych. Oto kilka często używanych poleceń:

# lista dostepnych maszyn wirtualnych
qm list

      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       121 pbs                  running    2048              16.00 3115935
       122 remote               running    1024              16.00 2412203
       123 nut                  running    1024               8.00 1996103
       124 unifi                running    2048              32.00 1996612
       125 win11                running    8192              96.00 1997617
       126 crc                  running    32768            256.00 2001487
       127 icinga               running    2048               8.00 2006172
       128 omv                  running    1024               8.00 745620
       129 nextcloud            running    2048              16.00 2007167
       130 docker               running    4096               8.00 2014542
       131 zoneminder           running    8192              16.00 2016206
       132 kibana               running    8192              32.00 2017277
       137 webserver            running    4096               8.00 2019291
       200 centos7              running    1024              16.00 2020023

# zatrzymanie i uchomienie maszyny wirtualnej
qm stop 122
qm start 122
qm shudtown 122

# ubicie procesu zawieszonej maszyny id=122, która nie chce się w żaden sposób wyłączyć
ps aux | grep "/usr/bin/kvm -id 122"| grep -v grep | awk '{print $2}'|xargs kill -9
# restart maszyny wirtualnej
qm reboot 122

# uśpienie i wybudzenie maszyny wirtualnej
qm suspend 122
qm resume 122

# usunięcie maszny wirtualnej
qm destroy 122

# sklonowanie maszny wirtualnej
qm clone <SOURCE_VMID> <NEW_VMID> --name <NEW_VM_NAME>
qm clone 122 222 --name remotenew

Instalacja i uruchomienie qm-tools

Agent gościa QEMU to demon przeznaczony do uruchamiania na maszynach wirtualnych. Pozwala hostowi hiperwizora na wykonywanie różnych operacji w gościu, takich jak uzyskać informacje od gościa, ustaw czas systemowy gościa, czytać/zapisywać pliki, synchronizować i zamrażać systemy plików, zawiesić gościa, ponownie skonfigurować lokalne zasoby gościa, ustawić hasło użytkownika.

# z konsoli maszyny wirtualnej
sudo apt-get install qemu-guest-agent
sudo systemctl start qemu-guest-agent

# z konsoli serwera Proxmox, gdzie 122 to id maszyny wirtualnej
qm agent 122 ping

Dla Windows VirtIO i qemu-guest-agent są dostepne na stronie Windows VirtIO Drivers – Proxmox VE pod linkiem https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Uruchomienie polecenia wewnątrz maszyny wirtualnej z poziomu konsoli serwera Proxmox

# uruchomienie polecenie df -h na maszynie o id = 122
qm guest exec 122 /usr/bin/df -- "-h"
{
"exitcode" : 0,
"exited" : 1,
"out-data" : "Filesystem Size Used Avail Use% Mounted on\ntmpfs 98M 1.2M 96M 2% /run\n/dev/sda2 16G 5.5G 9.4G 37% /\ntmpfs 486M 0 486M 0% /dev/shm\ntmpfs 5.0M 0 5.0M 0% /run/lock\ntmpfs 98M 4.0K 98M 1% /run/user/1000\n"
}

Przykładowy skrypt Bash do uruchamiania w pętli qm guest exec na wszystkich dostępnych maszynach wirtualnych Skrypt Bash – qm_get_osinfo.sh – IT Admin (vblog.ovh)

Utworzenie maszyny wirtualnej Proxmox narzędziem qm

# poniższe polecenie utworzy maszynę wirtualną o nazwie remote i id = 122 z systemem operacyjnym Debian 11 z łącznie 4 rdzeniami oraz 4 GB pamięci RAM

qm create 122 --cdrom isostore-01:iso/debian-live-11.7.0-amd64-standard.iso \
--name remote --numa 0 --ostype l26 \
--cpu cputype=host --cores 2 --sockets 2 \
--memory 4096 --machine q35 --agent enabled=1 \
--net0 bridge=vmbr0,virtio \
--bootdisk virtio0 --virtio0 file=datastore-01:16,format=qcow2

Edycja ustawień maszyny wirtualnej Proxmox przy użyciu narzędzia qm

# wyświetlenie bieżącej konfiguracji maszyny wirtualnej
qm config 122

agent: 1
boot: order=scsi0;ide2;net0
cores: 1
cpu: host
description: Linux
ide2: none,media=cdrom
machine: q35
memory: 1024
meta: creation-qemu=6.1.0,ctime=1638101057
name: remote
net0: virtio=C6:CD:DB:51:CB:6D,bridge=vmbr0,firewall=1
numa: 1
ostype: l26
scsi0: datastore-01:122/vm-122-disk-0.qcow2,cache=writeback,discard=on,iothread=1,size=16G
scsihw: virtio-scsi-single
smbios1: uuid=45f00035-0e57-416f-9c9a-21331e598486
sockets: 2
startup: order=1
tablet: 0
tags: ubuntu_22.04
vmgenid: aba62502-3d3b-4fb1-8f97-e96d89e76c4c

# nowa nazwa
qm set 122 --name newname

# nowa ilość pamięci dla maszyny wirtualnej
qm set 122 --memory 4096

# nowa ilość CPU dla maszyny wirtualnej
qm set 122 --cores 2 --sockets 1

# nowy startup order dla maszyny wirtualnej
qm set 122 --onboot 2

# nowy opis dla maszyny wirtualnej
qm set 122 --description "Zdalny dostęp"

# nowe tagi opisujące maszynę wirtualną
qm set 122 --tags ubuntu_22.04

Backup maszyny wirtualnej Proxmox

Więcej informacji o narzędziu vzdump do backupu maszyny wirtualnych znajdziesz tutaj Proxmox VE – backup maszyn wirtualnych – IT Admin (vblog.ovh)

Sprawdzenie stanu subskrypcji Proxmox narzędziem pvesubscription

pvesubscription get

message: There is no subscription key
serverid: FD8F0331783F2BD628C934BE5014BB08
status: notfound
url: https://www.proxmox.com/proxmox-ve/pricing

Sprawdzenie wydajności systemu na którym jest Proxmox narzędziem pveperf

pveperf

CPU BOGOMIPS:      38399.04
REGEX/SECOND:      3811363
HD SIZE:           14.56 GB (/dev/nvme0n1p1)
BUFFERED READS:    2724.41 MB/sec
AVERAGE SEEK TIME: 0.04 ms
FSYNCS/SECOND:     2403.41
DNS EXT:           40.59 ms
DNS INT:           6.19 ms (netapps.local)

Sprawdzenie wersji pakietów Proxmox

pveversion -v
proxmox-ve: 7.4-1 (running kernel: 6.2.11-2-pve)
pve-manager: 7.4-3 (running version: 7.4-3/9002ab8a)
pve-kernel-6.2: 7.4-3
pve-kernel-5.15: 7.4-3
pve-kernel-6.2.11-2-pve: 6.2.11-2
pve-kernel-5.15.107-2-pve: 5.15.107-2
ceph-fuse: 14.2.21-1
corosync: 3.1.7-pve1
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown: residual config
ifupdown2: 3.1.0-1+pmx4
ksmtuned: 4.20150326
libjs-extjs: 7.0.0-1
libknet1: 1.24-pve2
libproxmox-acme-perl: 1.4.4
libproxmox-backup-qemu0: 1.3.1-1
libproxmox-rs-perl: 0.2.1
libpve-access-control: 7.4-3
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.4-1
libpve-guest-common-perl: 4.2-4
libpve-http-server-perl: 4.2-3
libpve-rs-perl: 0.7.6
libpve-storage-perl: 7.4-2
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 5.0.2-2
lxcfs: 5.0.3-pve1
novnc-pve: 1.4.0-1
proxmox-backup-client: 2.4.2-1
proxmox-backup-file-restore: 2.4.2-1
proxmox-kernel-helper: 7.4-1
proxmox-mail-forward: 0.1.1-1
proxmox-mini-journalreader: 1.3-1
proxmox-offline-mirror-helper: 0.5.1-1
proxmox-widget-toolkit: 3.7.0
pve-cluster: 7.3-3
pve-container: 4.4-3
pve-docs: 7.4-2
pve-edk2-firmware: 3.20230228-2
pve-firewall: 4.3-2
pve-firmware: 3.6-5
pve-ha-manager: 3.6.1
pve-i18n: 2.12-1
pve-qemu-kvm: 7.2.0-8
pve-xtermjs: 4.16.0-1
qemu-server: 7.4-3
smartmontools: 7.2-pve3
spiceterm: 3.2-2
swtpm: 0.8.0~bpo11+3
vncterm: 1.7-1
zfsutils-linux: 2.1.11-pve1

Podgląd zawartości okna Task konsoli GUI na konsoli serwera narzędziem pvesh 

pvesh get /cluster/tasks --output-format json-pretty

[
   {
      "endtime" : 1685366397,
      "id" : "199",
      "node" : "pve",
      "saved" : "1",
      "starttime" : 1685366397,
      "status" : "OK",
      "type" : "qmdestroy",
      "upid" : "UPID:pve:002738D3:04BE6449:6474A67D:qmdestroy:199:root@pam:",
      "user" : "root@pam"
   },

...

Inne przydatne polecenia w administracji Proxmox

# suma przydzielonej pamięci RAM do maszyn i kontenerów
grep -R memory /etc/pve/local | awk '{sum += $NF } END {print sum;}'

80384

# lista wszystkich maszyny i kontenerów z polami id typ nazwa
for i in $(cat /etc/pve/.vmlist | grep node | cut -d '"' -f2 | sort -n);do NAME=$(grep -R 'name:' /etc/pve/nodes/*/*/$i.conf | awk {'print $2'}); INFO=$(grep $i /etc/pve/.vmlist | grep node | tr -d '":,'| awk '{print $1"\t"$4"\t"$6 }'); printf "%s\t%s\n" "$INFO" "$NAME" ;done

121     pve     qemu    pbs
122     pve     qemu    remote
123     pve     qemu    nut
124     pve     qemu    unifi
125     pve     qemu    win11
126     pve     qemu    crc
127     pve     qemu    icinga
128     pve     qemu    omv
129     pve     qemu    nextcloud
130     pve     qemu    docker
131     pve     qemu    zoneminder
132     pve     qemu    kibana
135     pve     lxc     debianlxc
136     pve     lxc     certbot
137     pve     qemu    webserver
200     pve     qemu    centos7

Zarządzanie storage Proxmox z linii komend

# sprawdzanie dostępnych udziałów NFS na serwerze 192.168.10.28
pvesm nfsscan 192.168.10.28

/export 192.168.10.0/24,192.168.8.0/24
/export/backup_cfg 192.168.10.0/24,192.168.8.0/24
/export/backup_pbs 192.168.10.0/24,192.168.8.0/24
/export/backup_vmx 192.168.10.0/24,192.168.8.20
/export/docker_data 192.168.10.30
/export/iso_templates 192.168.10.0/24,192.168.8.0/24
/export/video_cameras 192.168.10.31

# przykładowe zamontowanie udziału NFS
pvesm add nfs isostore-01 --path /mnt/pve/isostore-01 --server 192.168.10.28 --options vers=4,nolock,tcp --export /export/iso_templates --content iso,vztmpl
pvesm add nfs backupstore-03 --path /mnt/pve/backupstore-03 --server 192.168.10.28 --options vers=4,nolock,tcp --export /export/backup_vmx --content backup

# wyświetlenie zawartości wybranego STORAGE
pvesm list isostore-01

Volid Format Type Size VMID
isostore-01:iso/CentOS-7-x86_64-Minimal-2207-02.iso iso iso 1035993088
isostore-01:iso/CentOS-Stream-8-x86_64-20220506-boot.iso iso iso 898629632
isostore-01:iso/CentOS-Stream-9-latest-x86_64-dvd1.iso iso iso 8392802304
isostore-01:iso/debian-live-11.7.0-amd64-standard.iso iso iso 1246003200
isostore-01:iso/Fedora-Workstation-Live-x86_64-38-1.6.iso iso iso 2099451904
isostore-01:iso/HBCD_PE_x64.iso 
...

#usunięcie STORAGE
pvesm remove isostore-01