一. 强制关闭虚拟机
关闭虚拟机的时候经常出现长时间转圈 然后提示如下错误:
TASK ERROR: VM quit/powerdown failed - got timeout
解决办法1:
通过ps命令查到对应VM的进程
将101换成你自己虚拟机的VM ID
ps -ef|grep "/usr/bin/kvm -id 101"|grep -v grep
查看到虚拟机的进程后
kill 20582
解决办法2:
查看虚拟机vmID,输入命令:
qm list
如果我需要关闭编号为100的虚拟机,先删除vmID的lock锁文件,输入命令:
rm /var/lock/qemu-server/lock-100.conf
进行关闭,输入命令
qm stop 100
二. 将img文件导入为磁盘
导入为raw格式
SSH连接后 把img文件上传到 /var/lib/vz/template/iso
举例
qm importdisk 100 /var/lib/vz/template/iso/openwrt.img local
100 为虚拟机的ID根据自己虚拟机ID替换
openwrt.img 为镜像名称
举一反三:
qm importdisk 101 /var/lib/vz/template/iso/DS918.img local
第2种方法:
./img2kvm <img文件> <vmid如103> <虚拟磁盘名称如vm-103-disk-0>
第3种方法:
qemu-img convert -f raw -O qcow2 synoboot.img vm-103-disk-0.qcow2
qm importdisk 103 vm-103-disk-0.qcow2 local
第4种 把Esxi的OVA/vmdk 转成PVE虚拟机文件
(1) .使用 WinSCP 之类的软件把 OVA 镜像上传到 ROOT 目录,当然也可以使用 wget 命令下载到 PVE 宿主机。也可以电脑上先解压 OVA 文件,只上传 VMDK 文件。
(2).OVA 转换(VMDK)
tar xvf vm01.ova #解压vm01.ova qm importdisk
(3) 把esxi的虚拟机文件转换成qcow2并添加到虚拟机
三. 一些常见路径
存储配置文件:
/etc/pve/storage.cfg
存储路径local:
iso存放路径: /var/lib/vz/template/iso/
虚拟机的备份路径: /var/lib/vz/dump/
zfs的磁盘路径是:/dev/rpool/data/
存储路径local-lvm,包括挂载的NFS、SMB等其它存储设备:/mnt/pve/
四. 系统安装和定时任务
需要手动定期scrub来保证系统的正确,于是设置每天凌晨00:30执行scrub命令
编辑系统 crontab
crontab -e
选择 vim 编辑器,粘贴以下内容并保存,意思是每天凌晨0点30分纠正错误数据
30 0 * * * /usr/sbin/zpool scrub rpool
crontab设置完了之后不会立即生效,可以用命令重启一下cron
/etc/rc.d/cron restart
借助在线的 https://crontab.guru/ 工具,可以帮你写出正确的时间表达式
查看在运行的计划任务
crontab -l
查看最近一次scurb运行情况,如无意外提示0错误
zpool status rpool
同理可以用于其它需求:
定时关闭虚拟机
每隔5分钟关闭106虚拟机
crontab -e
*/5 * * * * /usr/sbin/qm shutdown 106
定时关机
每天凌晨1点30分关机
crontab -e
30 01 * * * /sbin/shutdown -h now
补充:可能有人无法关机成功,可以改为以下命令
#! /bin/sh
/sbin/init 0 关闭电源
/sbin/init 6 重新启动
其它写法参考
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令]
五. PVE 删除节点 / 离开集群
删除节点
cd /etc/pve/nodes
rm -rf ***
pvecm delnode ***
离开集群:
正常的节点操作:
cd /etc/pve/nodes
rm -rf ***
pvecm delnode ***
离线的节点操作(出故障的节点)
# 1、在待隔离节点上停止 pve-cluster 服务
systemctl stop pve-cluster.service
systemctl stop corosync.service
#执行将待隔离节点的集群文件系统设置为本地模式
pmxcfs -l
#执行删除 corosync 配置文件
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
#重新启动集群文件系统服务
killall pmxcfs
systemctl start pve-cluster.service
#删除故障节点node文件
cd /etc/pve/nodes
ls
rm -rf /etc/pve/nodes/***
### 集群中出现问题:
unable to open file ‘/etc/pve/nodes/****/qemu-server/100.conf.tmp.967’ - Input/output error (500)
重启 pve-cluster 服务
```
systemctl restart pve-cluster.service
解锁
` ``` `qm unlock 100
六. PVE命令行迁移虚拟机
以下是使用PVE命令行迁移虚拟机的步骤:
-
首先,从PVE导出虚拟机磁盘。您可以使用以下命令导出虚拟机磁盘:
qm exportdisk <虚拟机ID> <磁盘ID> <目标路径>
其中,<虚拟机ID>
是要导出磁盘的虚拟机的ID,<磁盘ID>
是要导出的磁盘的ID,<目标路径>
是导出磁盘的目标路径。
-
接下来,将导出的磁盘上传到ESXi主机。您可以使用SCP或其他文件传输工具将磁盘文件复制到ESXi主机上。
-
然后,在ESXi主机上创建一个新的虚拟机。您可以使用vSphere客户端或ESXi命令行工具创建虚拟机。
-
将上传的磁盘转换为精简置备并挂载为启动盘。您可以使用以下命令将磁盘转换为精简置备并挂载为启动盘:
vmkfstools -i <上传的磁盘路径> -d thin <目标磁盘路径>
其中,<上传的磁盘路径>
是上传的磁盘文件的路径,<目标磁盘路径>
是转换后的磁盘文件的路径。
-
最后,启动虚拟机并安装VMware Tools。您可以使用vSphere客户端或ESXi命令行工具启动虚拟机,并在虚拟机中安装VMware Tools。
七. PVE备份虚拟机
在PVE命令行中备份虚拟机的步骤如下:
-
在PVE命令行中备份虚拟机的步骤如下:
-
首先,使用以下命令列出所有的虚拟机:
qm list
-
选择要备份的虚拟机,并记下其虚拟机ID。
-
使用以下命令备份虚拟机:
vzdump <虚拟机ID> -storage <存储ID>
其中,<虚拟机ID>
是你要备份的虚拟机的ID,<存储ID>
是你要将备份文件存储到的存储的ID。
- 备份完成后,你可以在指定的存储位置找到备份文件。
评论区