P2V (Physical to Virtual)
1. disk2vhd导出虚拟磁盘
【操作步骤】勾选以下选项
a. Use Vhdx
b. Use Volume Shadow Copy
c. 系统盘、保留盘
FAQ
(1) vhd与vhdx区别
vhd:最大容量2T
vhdx:更新更快,最大容量64TB
(2) Volume Shadow Copy卷影复制的作用
快照,保证从复制开始到结束时,数据的一致性
2. 挂载SMB
【操作步骤】数据中心 -> 存储 -> 添加SMB/CIFS
FAQ
(1) 添加失败,错误提示
create storage failed: storage ‘smb’ is not online (500)
【解决方法】添加时取消勾选启动,从编辑入口进入再设置启用即可
CIFS: storage is not online (500) | Proxmox Support Forum
3. vhdx转换qcow2并导入
qm importdisk 100 /mnt/pve/smb/ark.vhdx local --format qcow2
FAQ
(1) 只能导入到local-lvm,而导入到local会报错?
storage local does not support vm images
【解决办法】数据中心 -> 存储 -> local的内容扩充支持磁盘映像
(2) local和local-lvm的区别?
佛西博客 - PVE的local和local-lvm (buduanwang.vip)
local-lvm属于lvm-thin类型,存储虚拟机时作为块设备,不能直接拷贝
local属于dir类型目录
lvs
cat /etc/pve/storage.cfg
【建议】qcow2足够优秀,且属于文件类型,不建议使用lvm-thin作为其存储底层
【方案】移除local-lvm并将空间并入local
a. 扩展local内容支持
数据中心 -> 存储 -> 编辑local -> 内容勾选所有
b. 删除lvm-thin
lvremove /dev/pve/data
c. 释放空间并入local
lvextend -rl +100%FREE /dev/pve/root
d. 检查空间
df -h
e. GUI移除lvm-thin
数据中心 -> 存储 -> 移除local-lvm
4. UEFI启动转换为传统BIOS引导
(1) 老毛桃官网下载完整版
ISO模式 -> 一键生成ISO文件
(2) 上传ISO镜像
local -> ISO镜像 -> 上传
(3) 挂载ISO
VM100 -> 硬件 -> CD/DVD驱动器 -> 使用ISO
(4) winpe操作
a. 启动VM100,选择启动Win10 X64 PE
b. 使用分区工具软件,删除主分区外的其他分区(包括系统保留分区)
c. 分区表类型从GPT转换成MBR
磁盘 -> 转换分区表类型为MBR格式
d. 将主分区设置为活动分区
右键系统盘 -> 激活当前分区
e. 保存更改
f. 将步骤2释放的空间合并到系统盘
右键系统盘 -> 扩容分区 -> 开始
FAQ
(a) 警告提示
无法修改Windows系统的BCD启动设置,调整Windows系统分区可能导致其无法启动,请进入到该系统中再执行调整命令
【操作】选择仍然调整,暂未发现异常
(5) 修复系统引导
使用引导修复软件,修复后使用分区工具检查主分区下是否已生成Boot目录和bootmgr文件
FAQ
a. 修复引导后能正常进系统,但卸载掉pe光盘后启动提示boot failed?
需按后文步骤(7)调整引导顺序
(6) 卸载ISO
(7) 调整引导顺序
虚拟机 -> 选项 -> 引导顺序 -> 勾选虚拟磁盘并调整排序为首位
5. IDE磁盘转换为SCSI
(1) 挂载virtio-win-0.1.240.iso
(2) 添加一个SCSI磁盘,大小不重要,只用于安装驱动程序
(3) 启动VM -> 设备管理器 -> 其他设备 -> 带感叹号的SCSI设备 -> 手动指向驱动目录vioscsi\2k22\amd64 -> 关闭VM
(4) VM硬件设置,删除临时的SCSI磁盘,将IDE磁盘更改为SCSI,cache选择write back,勾选discard
FAQ
a. 性能对比:VirtIO SCSI>IDE
IDE


VirtIO SCSI


6. 虚拟磁盘扩容
VM -> 点选磁盘 -> 磁盘操作 -> 调整大小 -> 填写增量大小 -> 重启VM
FAQ
(1)Windows扩容C盘,但是右边有一个恢复分区挡住?
Solution
使用CMD(管理员)删除恢复分区
diskpart
list disk # 查看所有磁盘信息
select disk X # X为包含恢复分区的磁盘编号
list partition # 查看磁盘上的所有分区
select partition Y # Y为恢复分区的编号
delete partition override
exit
7. Intel E1000网卡转为VirtIO
(1) VM-> 硬件 -> 网络设备 -> 模型Intel E1000改为VirtIO
(2) 启动VM -> 设备管理器 -> 其他设备 -> 带感叹号的以太网设备 -> 手动指向驱动目录NetKVM\2k22\amd64
FAQ
a. 性能对比:VirtIO>Intel E1000
Intel E1000

VirtIO

8. CPU类型性能对比
2690v4
host

avx2

kvm64

qemu64

x86-64-v3

aux2

1650v4
x86-64-v3

aux2

FAQ
(1) 为什么host反而跑分最低?
待研究
(2) kvm64和qemu64下的cpuz无avx2测试项可选?
可能因为cpu高级设置未勾选aux2特性
9. 内存Balloon
(1) 安装Balloon驱动
设备管理器 -> 其他设备 -> 带感叹号的PCI设备 -> 手动指向驱动目录Balloon\2k22\amd64
(2) 设置最小内存
VM -> 硬件 -> 内存 -> 高级 -> 最小内存
10. 直通SATA硬盘
(1) 列出硬盘列表
ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part
lrwxrwxrwx 1 root root 9 Oct 31 21:40 ata-WDC_WD20SPZX-22UA7T0_WD-WXA1E6962PFE -> ../../sda lrwxrwxrwx 1 root root 13 Oct 31 21:34 nvme-eui.00000000000000008ce38e03006b6199 -> ../../nvme0n1 lrwxrwxrwx 1 root root 13 Oct 31 21:34 nvme-KIOXIA-EXCERIA_SSD_71HA11F9K2V2 -> ../../nvme0n1 lrwxrwxrwx 1 root root 9 Oct 31 21:40 wwn-0x50014ee2670010fa -> ../../sda
nvme -> m2, ata -> sata
(2) 设置直通
qm set <vmid> --scsiX /dev/disk/by-id/xxxxxxx
qm set 100 --scsi1 /dev/disk/by-id/ata-WDC_WD20SPZX-22UA7T0_WD-WXA1E6962PFE
取消直通
qm set <vmid> --delete scsiX
qm set 100 --delete scsi1
11. WOL
(1) Install ethtool
apt install ethtool
(2) Checking the interface
ip a
enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000 link/ether 00:e0:4c:ad:e9:7e brd ff:ff:ff:ff:ff:ff
(3) Temporarily turn on WOL
ethtool --change enp5s0 wol g
(4) Check WOL status
ethtool enp5s0
Wake-on: g
g -> on, d -> off
(5) Permanently turn on WOL
a. Find ethtool directory
which ethtool
/usr/sbin/ethtool
b. Create wol.service in /etc/systemd/system/
[Unit]
Description=Enable Wake On Lan
[Service]
Type=oneshot
ExecStart =/usr/sbin/ethtool --change enp5s0 wol g
[Install]
WantedBy=basic.target
c. Enable service
systemctl daemon-reload
systemctl enable wol.service
12. KSM
(1) Temporarily turn off KSM
系统 -> ksmtuned -> 停止
(2) Permanently turn off KSM
systemctl disable ksmtuned
systemctl status ksmtuned
(3) Permanently turn on KSM
systemctl enable ksmtuned
systemctl start ksmtuned
(4) 配置文件/etc/ksmtuned.conf
# Configuration file for ksmtuned.
# How long ksmtuned should sleep between tuning adjustments
# KSM_MONITOR_INTERVAL=60
# Millisecond sleep between ksm scans for 16Gb server.
# Smaller servers sleep more, bigger sleep less.
# KSM_SLEEP_MSEC=100
# KSM_NPAGES_BOOST=300
# KSM_NPAGES_DECAY=-50
# KSM_NPAGES_MIN=64
# KSM_NPAGES_MAX=1250
# KSM_THRES_COEF=20 # 剩余内存低于20%时激活ksm
# KSM_THRES_CONST=2048 # 剩余内存少于2048字节时激活
# uncomment the following if you want ksmtuned debug info
# LOGFILE=/var/log/ksmtuned
# DEBUG=1
(5) 实测效果与性能损耗

13. Swap
(1) Check the current Swap strategy
cat /proc/sys/vm/swappiness
# or
sysctl vm.swappiness
# vm.swappiness = 60 # 剩余内存低于60%时,启用Swap
(2) Temporary adjustment
sysctl vm.swappiness=0
(3) Persistent configuration
nano /etc/sysctl.conf
# Append at the end
vm.swappiness=0
sysctl -p # Reload configuration
14. Backup pve configuration
# storage, vm, cluster, user config
cp -r /var/lib/pve-cluster /mnt/pve/hdd/pveBackup
# restore
cp /mnt/pve/hdd/pveBackup/pve-cluster/config.db /var/lib/pve-cluster
# boot, modules config
mkdir /mnt/pve/hdd/pveBackup/{boot,modprobe}
cp /etc/modules-load.d/* /mnt/pve/hdd/pveBackup/modprobe/
cp /etc/default/grub /mnt/pve/hdd/pveBackup/boot/
cp /etc/modules /mnt/pve/hdd/pveBackup/
# restore
cp /mnt/pve/hdd/pveBackup/modprobe/* /etc/modules-load.d/
cp /mnt/pve/hdd/pveBackup/boot/grub /etc/default/
cp /mnt/pve/hdd/pveBackup/modules /etc/
update-grub
update-initramfs -k all -u
# network config
cp -r /etc/network /mnt/pve/hdd/pveBackup/
# restore
cp -r /mnt/pve/hdd/pveBackup/network/* /etc/network/
systemctl restart networking
FAQ
1. VM暂停和休眠的区别
【暂停】保持内存加载,但cpu分配为0
【休眠】内存保存到磁盘后释放
2. CPU-X 查询硬件信息
(1) cpu频率、占用、温度
(2) 内存频率、占用
apt install -y cpu-x
cpu-x # 会自动检查是否有显卡,无则启动基于文本的用户界面
3. 查询CPU温度(deprecated)
apt install lm-sensors -y
sensors-detect # all press Enter
sensors
4. 查询内存频率(deprecated)
硬件信息查询工具: lshw, dmidecode, hwinfo, CPU-X
(1) lshw
lshw -short -C memory
H/W path Device Class Description /0/0 memory 64KiB BIOS /0/56 memory 136GiB System Me /0/56/0 memory 32GiB DIMM DDR4 /0/56/1 memory 32GiB DIMM DDR4 /0/56/2 memory 32GiB DIMM DDR4 /0/56/3 memory 32GiB DIMM DDR4 /0/62 memory 896KiB L1 cache /0/63 memory 3584KiB L2 cache /0/64 memory 35MiB L3 cache
(2) dmidecode
apt install -y dmidecode
dmidecode -t memory | grep 'Speed:'
Speed: 2400 MT/s Configured Memory Speed: 2400 MT/s
FAQ
1. 数据是否准确?
【实测】5条内存只查出4条
【结论】不准确,可能是寨板魔改的原因
do I listen to dmidecode or the manufacturer?
5. 查询固态硬盘写入寿命
(1) Install smartmontools
apt install smartmontools -y
(2) Query NVMe device
ls /dev/nvm*
/dev/nvme0 /dev/nvme0n1p1 …
(3) Get smart info
smartctl -a /dev/nvme0
Data Units Written: 50,632,796 [25.9 TB]