qm
是 Proxmox Virtual Environment (PVE) 中用于管理虚拟机的命令行工具。它允许用户创建、启动、停止、删除虚拟机,以及管理虚拟机的配置和状态。
Proxmox Virtual Environment (PVE) 是一个开源的虚拟化管理平台,专为企业和开发者设计。它结合了 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 的强大功能,提供了一套完整的解决方案,用于创建和管理虚拟机和容器,是虚拟机管理的主流方案之一。
PVE 为使用者提供简单易上手的 web 页面,以及灵活的命令行工具。本文仅关注命令行工具。
qm [COMMAND] [OPTIONS] [VMID]
start
、stop
、create
等。qm
命令和参数创建虚拟机 (create):
qm create VMID --name NAME --memory MEMORY --net0 NETWORK --sata0 STORAGE
启动虚拟机 (start):
qm start VMID
停止虚拟机 (stop):
qm stop VMID
重启虚拟机 (reset):
qm reset VMID
删除虚拟机 (destroy):
qm destroy VMID
克隆虚拟机 (clone):
qm clone VMID NEWID --name NEWNAME --full
查看虚拟机状态 (status):
qm status VMID
导出虚拟机配置 (config):
qm config VMID
创建一个虚拟机:
ubuntu-vm
net0
通过 vmbr0
桥接scsihw
,使用驱动 virtio-scsi-pci
qm create 111 --name ubuntu-vm --cores 2 --memory 2048 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci
创建硬盘 scsi0
,从存储池 mydata
划分空间,将系统镜像导入 scsi0
:
qm set 111 --scsi0 mydata:0,import-from=/mnt/pve/mydata/template/iso/jammy-server-cloudimg-amd64.img
设置硬盘容量为 20G:
qm resize 111 scsi0 20G
设置启动顺序为硬盘 scsi0
:
qm set 111 --boot order=scsi0
添加屏幕串行输出(便于从 PVE 终端进入虚拟机终端):
qm set 111 --serial0 socket --vga serial0
查看当前配置:
qm config 111
要修改、配置虚拟机的硬件规格,可以使用 qm set
命令:
qm set <vmid> <options>
例如,重新分配内存的大小(只能增加):
qm resize 111 scsi0 22G
或者添加虚拟机新的硬盘:
qm set 111 --scsi1 mydata:10
想要修改虚拟机系统,比如用户名、密码,必须用到 qm set
+ cloud-init
:
添加 cloud-init
:
qm set 111 --ide2 mydata:cloudinit
现在 qm set
可以初始化系统配置:
设置主机名:
qm set 111 --name ubuntu-vm
将 PVE 公钥添加到虚拟机:
qm set 111 --sshkey ~/.ssh/id_rsa.pub
设置静态网络:
qm set 111 --ipconfig0 ip=192.168.10.123/24,gw=192.168.10.1
设置动态 IP (DHCP):
qm set 111 --ipconfig0 ip=dhcp
设置用户名和密码:
qm set 111 --ciuser 用户名 --cipassword 密码
根据需求添加配置。设置网络时,动态和静态仅需二选一。动态网络请照抄,静态网络请修改 IP 地址为你的信息。
启动虚拟机的命令如下:
qm start <vmid>
例如,启动 VM ID 为 111 的虚拟机:
qm start 111
使用以下命令可以列出所有虚拟机及其状态:
qm list
你可以看到刚才启动的虚拟机正在运行:
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 ubuntu running 1024 32.00 1051
111 ubuntu-vm running 2048 22.00 2150640
使用以下命令可以直接进入虚拟机的终端:
qm terminal <vmid>
例如,进入 VM ID 为 111 的虚拟机终端:
qm terminal 111
使用这个命令就不需要从 PVE 的管理网页进入终端,这也是创建虚拟机时为什么添加屏幕串行输出的原因。
退出虚拟机终端,只需使用快捷键:Ctrl + o
。
重启虚拟机的命令如下:
qm reboot <vmid>
例如,重启 VM ID 为 111 的虚拟机:
qm reboot 111
停止虚拟机的命令如下:
qm stop <vmid>
例如,停止 VM ID 为 111 的虚拟机:
qm stop 111
查看虚拟机的配置信息可以使用以下命令:
qm config <vmid>
例如,显示 VM ID 为 111 的虚拟机配置:
qm config 111
克隆虚拟机的命令如下:
qm clone <vmid> <newid> --name <name>
例如,将 VM ID 为 111 的虚拟机克隆为新的 VM ID 为 112 的虚拟机:
qm clone 111 112 --name newvm
迁移虚拟机的命令如下:
qm migrate <vmid> <target_node>
例如,将 VM ID 为 111 的虚拟机迁移到节点 pve2
:
qm migrate 111 pve2
备份虚拟机的命令如下:
vzdump <vmid> --storage <storage_id> --mode <mode>
例如,将 VM ID 为 111 的虚拟机备份到 local
存储中:
vzdump 111 --storage local --mode snapshot
恢复虚拟机的命令如下:
qmrestore <backup_file> <vmid>
例如,将备份文件恢复为 VM ID 为 111 的虚拟机:
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2023_06_01-00_00_00.vma.lzo 111
备份位置根据不同的存储有所不同。
删除虚拟机的命令如下:
qm destroy <vmid>
例如,删除 VM ID 为 111 的虚拟机:
qm destroy 111
通过这些命令,你可以高效地管理 PVE 环境中的虚拟机。以下是一些常用命令的总结,帮助你快速查找和使用。
命令 | 描述 |
---|---|
qm create VMID --name NAME --memory MEMORY --net0 NETWORK --sata0 STORAGE |
创建虚拟机 |
qm start VMID |
启动虚拟机 |
qm stop VMID |
停止虚拟机 |
qm reset VMID |
重启虚拟机 |
qm destroy VMID |
删除虚拟机 |
qm clone VMID NEWID --name NEWNAME --full |
克隆虚拟机 |
qm status VMID |
查看虚拟机状态 |
qm config VMID |
导出虚拟机配置 |
qm list |
列出所有虚拟机及其状态 |
qm terminal VMID |
进入虚拟机终端 |
qm resize VMID scsi0 SIZE |
修改虚拟机硬盘大小 |
qm migrate VMID TARGET_NODE |
迁移虚拟机到指定节点 |
vzdump VMID --storage STORAGE_ID --mode MODE |
备份虚拟机 |
qmrestore BACKUP_FILE VMID |
恢复虚拟机 |
在pve虚拟化的/etc/pve/qemu-server可以直接改变配置内容,但需要注意的是,请确保虚拟机是关闭的
通过qm list查看id后,在qm stop id,在打开 cd /etc/pve/qemu-server,通过vi即可继续编辑处理