利用u盘安装pve虚拟化
[TOC]
概述
Proxmox VE(Virtual Environment)是一个完整的、开源的企业虚拟化服务器管理平台。它将KVM管理程序和Linux Containers (LXC)、软件定义的存储和网络功能紧密集成在一个平台上。通过集成的基于web的用户界面,您可以轻松地管理vm和容器、集群的高可用性或集成的灾难恢复工具。
pve的特点:
- pve 的虚拟化核心是 QEMU/KVM
- pve 的软件和社区支持都是免费的,企业用户则可以通过订阅制获得付费商业支持
- 网络方面,pve 支持桥接和路由两种方式(默认是桥接)
相对于 VMware Esxi 虚拟化,pve的优势如下:
- pve 是开源项目,可以认为 不存在授权问题,而 VMware Esxi 免费试用60天
- 对硬件兼容性更好:支持笔记本、台式机、服务器等,且 pve 支持 Intel 和 AMD 的 cpu(vmware不支持AMD)
- 去中心化:基于Web的管理界面,无需部署独立的vCenter管理节点,每个节点都是Master,可以在任意节点管理集群
- 多台 pve 节点可以组成一个集群(cluster)
制作开机启动盘
1、制作开机启动u盘,请参考 制作启动u盘
2、下载最新的 proxmox-ve_7.4-1.iso
并将其拷贝到u盘根目录,示例版本 7.2-1
开始安装 PVE 系统
第1步,将u盘插入需要安装pve系统的服务器,开机按 DELETE 进入 BIOS,调整USB设备启动
第2步,进入如下界面,选择 Install Proxmox VE
第3步,选择要安装到哪个磁盘设备,并点击下一步
第4步,设置时区,建议设置为 Asia/Shanghai
第5步,设置管理员账号(root)密码和邮箱
第6步,设置网络及IP地址,默认第一片网卡,如果网线接在别的网卡上,请务必修改,否则会访问失败
第7步,确认配置无误后,点击安装
第8步,开始安装中 ...
第9步,安装完成后,重启
第10步,安装完成后,会显示 pve 的 Web管理界面
第11步,在上一步输入 root 及密码后,可以登录后台,执行 cat /etc/os-release
可以看出底层系统是 Debian 11
操作系统
root@node01:/dev/pve# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
第12步,登录Web管理界面
- 地址:
https://ip:8006
- 账号:
root
- 密码:
安装时设置的密码
注:安装pve会自动化格式化硬盘,无需单独格式化。
常用功能
安装第一台虚拟机
第1步,浏览器访问 https://ip:8006
,上传os镜像文件到共享存储中
第2步,创建虚拟机,以虚拟光驱形式挂载该iso镜像到 CD/DVD 设备上,然后开始安装系统
创建模板并通过模板克隆虚拟机
第1步,选中需要设为模板的虚拟机,先关机(不要创建快照),再右键选择 Convert to templage
第2步,设为镜像模板之后,请注意该虚拟机的图标变了
第3步,选中该模板镜像,右键选择 Clone,注意 Mode 改为 Full Clone(默认为 Linked Clone)
注:不建议直接对某虚拟机右键选择 Clone 的方式来克隆虚拟机,如下是错误示范:
配置虚拟机为自启动
修改 nic
- 假设服务器有3块网卡(
enp2s0f0
、wlp3s0
、enx2c16dba9a0f3
),安装pve的时候网卡选错为enp2s0f0
,需要改为enx2c16dba9a0f3
。
root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface enp2s0f0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.20.181/22
gateway 192.168.23.254
bridge-ports enp2s0f0
bridge-stp off
bridge-fd 0
iface enx2c16dba9a0f3 inet manual
iface wlp3s0 inet manual
- 登录pve的 >_ Shell 控制台,修改如下文件,最后重启网卡服务以生效。
vi /etc/network/interfaces
#.找到 bridge-ports enp2s0f0
#.改为 bridge-ports enx2c16dba9a0f3
service networking restart
修改 ip
- 登录pve的 >_ Shell 控制台,修改如下文件,其中
/etc/issue
修改的是欢迎界面的显示地址ip(不配置也不影响使用),最后重启网卡服务以生效。
oldip=192.168.4.195
newip=192.168.4.196
sed -i "s/$oldip/$newip/g" /etc/network/interfaces
sed -i "s/$oldip/$newip/g" /etc/hosts
sed -i "s/$oldip/$newip/g" /etc/issue
cat /etc/network/interfaces | egrep "(address|gateway)"
service networking restart
修改 dns
- 登录pve的 >_ Shell 控制台,修改如下文件,并重启网卡服务以生效。
olddns=192.168.3.10
newdns=192.168.3.11
sed -i "s/$olddns/$newdns/g" /etc/resolv.conf
cat /etc/resolv.conf
service networking restart
修改 hostname
- 登录pve的 >_ Shell 控制台,修改如下文件,执行 Reboot 以生效。
oldname=pve01
newname=pve02
hostnamectl set-hostname $newname
sed -i "s/$oldname/$newname/g" /etc/hostname
sed -i "s/$oldname/$newname/g" /etc/hosts
sed -i "s/$oldname/$newname/g" /etc/postfix/main.cf
reboot
修改虚机机的 vmid name
- 方式1:登录pve控制台,选中该虚机的 Options 标签,点击 Name 直接修改 (推荐此方案)
- 方式2:登录pve的 >_ Shell 控制台,执行
qm list
找到这台虚机的 vmid(示例将102从 k8s-node2 改为 8s-node2-4.232),然后执行qm config <vmid>
确认一下老的 vmid name,再执行qm set <vmid> --name <newname>
来修改 vmid name。
root@node01:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 linux-template stopped 4096 40.00 0
101 k8s-node1 running 4096 40.00 4963
102 k8s-node2 running 4096 40.00 8673
103 win10-4.240 running 4096 32.00 599826
104 ubuntu-template stopped 4096 32.00 0
root@node01:~# qm config 102 | grep name
name: k8s-node2
root@node01:~# qm set 102 --name k8s-node2-4.232
update VM 102: -name k8s-node2-4.232
root@node01:~# qm list | grep 102
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
102 k8s-node2-4.232 running 4096 40.00 8673
注:同样的办法,可以使用 qm set
修改某
修改虚拟机的 vmid
登录pve的 >_ Shell 控制台,执行 qm list
找到这台虚机的 vmid,示例将 k8s-node4-4.204
从 115 改为 114
root@node01:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
113 win10-yu-4.205 stopped 4096 50.00 0
115 k8s-node4-4.204 running 4096 40.00 0
先执行 qm stop <vmid>
将该虚拟机关机,然后调整vmid配置文件:
qm stop 115
cd /etc/pve/qemu-server
mv 115.conf 114.conf
快照与恢复
创建快照
- 选中需要创建快照的虚拟机,依次选择 Snapshots - Take Snapshot,填写快照名称并创建。
恢复快照
- 选中需要恢复快照的虚拟机,在 Snapshots 标签页,选择需要的快照,点击上面的 Rollback 按钮并恢复。
备份与迁移
有2台PVE服务器,但是没有做集群,现在需要把一个虚拟机从 node01 上迁移到 node02 上。
备份迁移的注意事项
- 互相迁移的节点,需要虚拟机在同一个储存点。例如一个是local-lvm,那么另一个必须是local-lvm,否则不能迁移。
- 互相迁移的节点,网卡一定要一样。例如一个是vmbr0,那么另外一个也要是vmbr0。
- 迁移的虚拟机,挂载了ISO的话,迁移需要另外的虚拟机,在同样位置有同样的iso,否则不能迁移。最好的办法就是卸载iso。
- 链接克隆的无法迁移。必须是完整克隆才能迁移。
- 热迁移只适合共享储存。例如SAN/NFS等储存。
- 迁移后,原虚机的快照将会丢失
操作步骤
- 第1步,打开 node01 的web页面将虚拟机关机(stop模式提供最强的数据一致性),并在 Backup 标签页,点击上面的
Backup now
按钮并备份
附1:以上操作也可以借助 vzdump 命令行来实现,参考如下:
root@node01:~# qm stop 100
root@node01:~# vzdump 100 --quiet 1 --mode stop --compress zstd --storage local
附2:关于虚拟机的3种备份模式,简单介绍如下:
备份模式 | 介绍 | 备注 |
---|---|---|
stop模式 | 该模式能提供最强的数据一致性保障 | 代价是备份过程中虚拟机要先关机 |
suspend模式 | 提供该模式的唯一原因是兼容性 | 该模式首先会挂起虚拟机,然后执行snapshot模式 |
snapshot模式 | 采用该模式虚拟机停机时间最短 | 代价是备份数据有可能不一致,实际上采用的是pve在线备份 |
- 第2步,登陆 node01 的终端(不是虚拟机),确认目录
/var/lib/vz/dump
下有新的备份文件产生,并转移备份文件到 node02 上
root@node01:~# ls -l /var/lib/vz/dump/
total 797288
-rw-r--r-- 1 root root 1790 Feb 3 10:25 vzdump-qemu-100-2023_02_03-10_25_04.log
-rw-r--r-- 1 root root 816408657 Feb 3 10:25 vzdump-qemu-100-2023_02_03-10_25_04.vma.zst
-rw-r--r-- 1 root root 12 Feb 3 10:25 vzdump-qemu-100-2023_02_03-10_25_04.vma.zst.notes
root@node01:~# scp /var/lib/vz/dump/vzdump-qemu-100-2023_02_03-10_25_04.vma.zst root@192.168.4.202:/root/
vzdump-qemu-100-2023_02_03-10_25_04.vma.zst 100% 779MB 112.0MB/s 00:06
- 第3步,登陆 node02 的终端,执行
qmrestore 备份文件 200
可指定恢复的虚机 vmid 为200
(注:新恢复的虚拟机vmid不要与已有的虚拟机id冲突)
root@node02:~# qmrestore /root/vzdump-qemu-100-2023_02_03-10_25_04.vma.zst 200
restore vma archive: zstd -q -d -c /root/vzdump-qemu-100-2023_02_03-10_25_04.vma.zst | vma extract -v -r /var/tmp/vzdumptmp195877.fifo - /var/tmp/vzdumptmp195877
CFG: size: 420 name: qemu-server.conf
DEV: dev_id=1 size: 42949672960 devname: drive-scsi0
CTIME: Fri Feb 3 10:25:04 2023
Logical volume "vm-200-disk-0" created.
new volume ID is 'local-lvm:vm-200-disk-0'
map 'drive-scsi0' to '/dev/pve/vm-200-disk-0' (write zeros = 0)
progress 1% (read 429522944 bytes, duration 0 sec)
progress 2% (read 859045888 bytes, duration 0 sec)
...
progress 99% (read 42520215552 bytes, duration 5 sec)
progress 100% (read 42949672960 bytes, duration 5 sec)
total bytes read 42949672960, sparse bytes 40431001600 (94.1%)
space reduction due to 4K zero blocks 5.36%
rescan volumes...
root@node02:~#
- 第4步,打开 node02 的web页面,可以看到新的虚拟机已经创建,如下图示:
虚机在线迁移
- 第1步,pve集群内的虚机,支持在线迁移。先找到要迁移的虚机,右键选择
Migrate
,然后选择Target node
和Target storage
并开始迁移
- 第2步,迁移完成则可以在新的节点上看到这台虚机,注意 vmid 没有变。
在线迁移的注意事项
- 迁移的虚拟机,不支持CD/DVD迁移。最好的办法就是卸载 CD/DVD驱动器
- 迁移的虚拟机,建议先删掉快照和备份
附录
常用的qm命令
qm guest cmd <vmid> <command>
qm guest exec-status <vmid> <pid>
qm guest passwd <vmid> <username> [OPTIONS]
qm guest exec <vmid> [<extra-args>] [OPTIONS]
qm clone <vmid> <newid> [OPTIONS]
qm config <vmid> [OPTIONS]
qm create <vmid> [OPTIONS]
qm delsnapshot <vmid> <snapname> [OPTIONS]
qm destroy <vmid> [OPTIONS] //删除某个虚机
qm list [OPTIONS] //列出所有虚机
qm listsnapshot <vmid>
qm migrate <vmid> <target> [OPTIONS]
qm move_disk <vmid> <disk> <storage> [OPTIONS]
qm pending <vmid>
qm reset <vmid> [OPTIONS]
qm resize <vmid> <disk> <size> [OPTIONS]
qm resume <vmid> [OPTIONS]
qm rollback <vmid> <snapname>
qm sendkey <vmid> <key> [OPTIONS]
qm set <vmid> [OPTIONS]
qm shutdown <vmid> [OPTIONS]
qm snapshot <vmid> <snapname> [OPTIONS]
qm start <vmid> [OPTIONS] //启动某个虚机
qm stop <vmid> [OPTIONS] //停止某个虚机
qm suspend <vmid> [OPTIONS]
qm template <vmid> [OPTIONS]
qm monitor <vmid>
qm mtunnel
qm nbdstop <vmid>
qm rescan [OPTIONS]
qm showcmd <vmid> [OPTIONS]
qm status <vmid> [OPTIONS] //查看集群/虚机状态
qm terminal <vmid> [OPTIONS]
qm unlock <vmid> //取消某个虚机的锁定状态
qm vncproxy <vmid>
qm wait <vmid> [OPTIONS]
qm help [<extra-args>] [OPTIONS]
常用的pve目录
目录 | 功能 | 备注 |
---|---|---|
/dev/pve |
pve虚拟磁盘 | - |
/etc/network/interfaces |
网络配置文件 | 可修改pve主机ip地址 |
/etc/pve/qemu-server |
存放虚拟机的配置文件 | - |
/var/lib/vz/template/iso |
存放iso文件 | - |
/var/lib/vz/dump/ |
备份路径 | - |