一、命令简介
qm
是 Proxmox Virtual Environment (PVE) 中用于管理虚拟机的命令行工具。它允许用户创建、启动、停止、删除虚拟机,以及管理虚拟机的配置和状态。
介绍 PVE
Proxmox Virtual Environment (PVE) 是一个开源的虚拟化管理平台,专为企业和开发者设计。它结合了 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 的强大功能,提供了一套完整的解决方案,用于创建和管理虚拟机和容器。是虚拟机管理的主流方案之一。
PVE 为使用者提供简单易上手的 web 页面,以及灵活的命令行工具。本文仅关注命令行工具。
二、命令参数
qm [COMMAND] [OPTIONS] [VMID]
-
COMMAND
:你要执行的操作,比如start
、stop
、create
等。 -
OPTIONS
:与操作相关的选项,控制执行行为。 -
VMID
:虚拟机的 ID,用来标识具体的虚拟机。
常用的 qm
命令和参数
-
创建虚拟机 (
create
):qm create VMID --name NAME --memory MEMORY --net0 NETWORK --sata0 STORAGE
-
VMID
:虚拟机的 ID。 -
--name
:虚拟机名称。 -
--memory
:分配的内存 (MB)。 -
--net0
:网络接口配置(比如virtio,bridge=vmbr0
)。 -
--sata0
:存储设备配置 (例如local-lvm:vm-VMID-disk-1
)。
-
-
启动虚拟机 (
start
):qm start VMID
-
VMID
:要启动的虚拟机 ID。
-
-
停止虚拟机 (
stop
):qm stop VMID
-
VMID
:要停止的虚拟机 ID。
-
-
重启虚拟机 (
reset
):qm reset VMID
-
VMID
:要重启的虚拟机 ID。
-
-
删除虚拟机 (
destroy
):qm destroy VMID
-
VMID
:要删除的虚拟机 ID。
-
-
克隆虚拟机 (
clone
):qm clone VMID NEWID --name NEWNAME --full
-
VMID
:要克隆的虚拟机 ID。 -
NEWID
:新虚拟机的 ID。 -
--name
:新虚拟机的名称。 -
--full
:指定是否进行完整克隆。
-
-
查看虚拟机状态 (
status
):qm status VMID
-
VMID
:要查看状态的虚拟机 ID。
-
-
导出虚拟机配置 (
config
):qm config VMID
-
VMID
:要导出的虚拟机 ID。
-
三、命令示例
3.1 创建虚拟机
创建一个 虚拟机:
- ID 为 111
- 名称为
ubuntu-vm
- CPU
2
核心 - 内存
2
GB - 网络
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
设置 boot 第一启动顺序为硬盘 scsi0
qm set 111 --boot order=scsi0
添加屏幕串行输出(便于从 PVE 终端进入虚拟机终端)
qm set 111 --serial0 socket --vga serial0
查看当前配置
qm config 111
3.2 配置虚拟机
3.2.1 硬件规格
要修改、配置虚拟机的硬件规格,可以使用 qm set
命令:
qm set <vmid> <options>
例如,重新分配内存的大小(只能增加)
qm resize 111 scsi0 22G
或者添加虚拟机新的硬盘:
qm set 111 --scsi1 mydata:10
3.2.2 系统初始化
想要修改虚拟机系统,比如用户名、密码,必须用到 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地址为你的信息。
3.4 启动虚拟机
qm start <vmid>
例如,启动 VM ID 为 111 的虚拟机:
qm start 111
3.5 列出所有虚拟机
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
3.6 从 PVE 终端进入虚拟机终端
qm terminal <vmid>
例如进入 VM ID 为 111 的虚拟机终端
qm terminal 111
使用这个命令就不需要从 PVE 的管理网页进入终端,这也是创建虚拟机时为什么添加 屏幕串行输出
。
退出虚拟机终端,只用快捷键:ctl+o
3.7 重启虚拟机
qm reboot <vmid>
例如,重启 VM ID 为 111 的虚拟机:
qm reboot 100
3.8 停止虚拟机
qm stop <vmid>
例如,停止 VM ID 为 111 的虚拟机:
qm stop 111
3.9 查看虚拟机配置信息
qm config <vmid>
例如,显示 VM ID 为 111 的虚拟机配置:
qm config 111
3.10 克隆虚拟机
qm clone <vmid> <newid> --name <name>
例如,将 VM ID 为 111 的虚拟机克隆为新的 VM ID 为 112 的虚拟机:
qm clone 111 112 --name newvm
3.11 迁移虚拟机
qm migrate <vmid> <target_node>
例如,将 VM ID 为 111 的虚拟机迁移到节点 pve2
:
qm migrate 111 pve2
3.12 备份虚拟机
vzdump <vmid> --storage <storage_id> --mode <mode>
例如,将 VM ID 为 111 的虚拟机备份到 local
存储中:
vzdump 111 --storage local --mode snapshot
3.13 恢复虚拟机
qmrestore <backup_file> <vmid>
例如,将备份文件恢复为 VM ID 为 111 的虚拟机:
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2023_06_01-00_00_00.vma.lzo 111
备份位置根据不同的存储,有所不同。
3.14 删除虚拟机
qm destroy <vmid>
例如,删除 VM ID 为 111 的虚拟机:
qm destroy 111
通过这些命令,你可以高效地管理 PVE 环境中的虚拟机。更多详细信息,可以参考 Proxmox VE 的官方文档或使用 qm help
命令查看帮助。