ProxmoxVE

ProxmoxVE

一些前置知识

qcow2 raw vmdk 磁盘格式的区别

KVM 虚拟化中使用的镜像格式通常为 RAW 和 QCOW2 两种格式.

RAW (img)

RAW 的原意是「未被加工的」, 所以 RAW 格式镜像文件又被称为 原始镜像裸设备镜像, 从这些称谓可以看出, RAW 格式镜像文件能够直接当作一个块设备, 以供 GuestOS 使用. 也就是说 KVM 的 GuestOS 可以直接从 RAW 镜像中启动, 就如 HostOS 直接从硬盘中启动一般.

  • 是一种裸设备格式,通常提供良好的性能。
  • 简单且原生,易于使用和转换到其他格式。
  • 支持直接挂载,可以作为文件系统使用。
  • 不支持快照、压缩或加密等高级功能。
  • 占用空间取决于实际使用的数据量,类似于物理磁盘。

块设备: IO 设备中的一类, 将信息存储在固定大小的块中, 并且每个块都有自己的地址, 常用的块设备有硬盘.

因为 RAW 镜像文件赤裸裸的特性带来了下列好处:

  • 使用 dd 指令创建一个 File 就能够模拟 RAW 镜像文件
  • 性能较 QCOW2 要更高 (I/O 效率更高25%左右)
  • 支持裸设备的原生特性, 例如: 直接挂载
  • 能够随意转换格式, 甚至作为其他两种格式转换时的中间格式
  • 能够使用 dd 指令来追加 RAW 镜像文件的空间

相对的, RAW 镜像文件也具有一个非常大的缺陷, 就是不支持快照. 所以才有了后来 QCOW 和 QCOW2 的发展.

QCOW2 (QEMU-COW 2)

(摘自官方文档)QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression
QEMU-COW 镜像文件具有一系列特性, 支持包括 多重快照(能够创建基于之前镜像的新镜像, 速度更快), 占用更小的存储空间(不支持稀疏特性, 不会预先分配指定 Size 的存储空间), 可选的 AES 加密方式, 可选的 zlib 压缩方式 等功能.

QCOW2 镜像格式是 KVM-QEMU 支持的磁盘镜像格式之一, 其表现形式为在一个系统文件中模拟一个具有一定 Size 的块设备.

  • 支持快照功能,允许在不增加存储空间的前提下创建多个虚拟机状态的快照。
  • 支持压缩,可以减少存储空间的使用。
  • 支持加密,以保护虚拟机磁盘数据的安全性。
  • 支持Copy-on-Write,只有当数据被修改时才会占用新的存储空间。
  • 性能接近RAW格式,但提供了更多的高级功能。

VMDK (Virtual Machine Disk)

  • 主要由VMware使用,支持多种VMware产品。
  • 支持动态分配和固定大小的虚拟硬盘。
  • 与VMware的虚拟化环境紧密集成,提供了良好的性能和稳定性。
  • 支持快照功能,但与QCOW2的快照实现不同。
  • 通常不用于非VMware环境,与其他虚拟化平台的兼容性有限。

网卡怎么选 VirtIO E1000 RTL8139

RTL8139”(古董级别,性能较差,古老系统使用)速率可以达到100Mb/s,这个网卡的兼容性最好。

这个网卡模式是qemu-kvm默认的模拟网卡类型,RTL8139是Realtek半导体公司的一个10/100M网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对RTL8139网卡驱动的提供支持。

E1000”(水桶选手,千兆速率,各项都很均衡)速率可以达到1Gb/s,这个网卡的兼容性较好。

提供Intel e1000系列的网卡模拟,纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡。

英特尔e1000甚至为相当古老和不知名的操作系统提供了驱动程序。但物理 e1000 网卡的硬件相当复杂,因此会因为需要对其进行仿真而产生一些开销。

VirtIO” (性能之王,兼容极差)速率可以达到10Gb/s,这个网卡的兼容性最差,很多系统需要安装特定驱动才能使用。

是支持半虚拟化IO(virtio)的设备。

如果您在虚拟机内运行的内容都支持virtio,它可能会为您提供最佳性能,因为它允许虚拟机跳过大多数相关步骤模拟虚拟网卡并控制虚拟硬件,主机利用实际物理网卡的硬件功能,最大限度地提高虚拟机流量的效益。

VirtIO windows的驱动文件可以在这里下载:https://github.com/virtio-win/virtio-win-pkg-scripts

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

硬盘接口怎么选 IDE SATA SCSI VirtIO

IDE 速度最差,兼容性较好,比较古老的接口了

SATA 速度不错,兼容性也可以。

SCSI (通常称为VirtIO SCSI )

VirtIO (通常称为VirtIO Block)

一般来说,不鼓励使用IDE或 ,SATA因为它们相对较慢。在其最佳实践指南中,Proxmox 建议使用 VirtIO SCSI,即SCSI连接到VirtIO SCSI控制器的总线(在最新的 Proxmox 版本上默认选择)。这是假设您在具有快速磁盘阵列的服务器上运行 Proxmox,稍后会详细介绍。

使用SCSIVirtIO。差异可以忽略不计,但两者都远远优于SATA。Proxmox 建议使用,SCSI因为它更新且维护得更好。

img

img

即local-lvm对应/dev/pve/data,/var/lib/vz/template/iso

默认存在local目录,对应/var/lib/vz

一些教程

PVE 安装 https://www.right.com.cn/forum/thread-8159418-1-1.html

PVE 的群晖安装 https://post.smzdm.com/p/a8x84l27/

https://www.cnblogs.com/mokou/p/17042705.html

https://post.smzdm.com/p/apv5xvk9/

群晖引导 https://github.com/fbelavenuto/arpl

https://wp.gxnas.com/12245.html

安装

准备工作

  • 确保符合安装软件的最低要求

    • CPU: 64bit (Intel EMT64 or AMD64)
    • Intel VT/AMD-V capable CPU/Mainboard for KVM full virtualization support
    • RAM: 1 GB RAM, plus additional RAM needed for guests
    • Hard drive with at least 16 GiB of space, plus additional space needed for guests
    • One network card (NIC)
  • 下载PVE的ISO镜像
    https://mirrors.tuna.tsinghua.edu.cn/proxmox/iso/
    https://www.proxmox.com/downloads

  • 准备一个u盘

  • 将ISO写入u盘

    • rufus
    • Win32DiskImager
  • 使电脑从u盘启动

  • 重启设备,正式进入安装流程

  • 这里有两种安装方式

    • 图形化界面安装 (Graphical)(首选,用户体验更佳,交互更简单)
    • 终端UI界面安装 (Terminal UI)(备选,兼容性强,遇到非常新、非常旧的cpu,第一种方法无法使用的情况下就可以选用这种方式)
  • 硬盘格式

  • 系统将会自动安装,安装后会自动重启

  • ping对应地址,重启后不久正常通信后即可访问pve ip:8006进入管理界面

  • 重启后,PVE显示器也会提示管理地址。

  • 至此安装结束

  • 推荐安装完成后再安装上一个PVETools。参考下文。

Cmd

虚拟机 操作指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 取得虚拟机当前状态
# pvesh get /nodes/<节点id>/qemu/<虚拟机id>/status/current
pvesh get /nodes/pve/qemu/107/status/current

# 关闭虚拟机
# pvesh create /nodes/<节点id>/qemu/<虚拟机id>/status/stop
pvesh create /nodes/pve/qemu/107/status/stop

# 启动虚拟机
# pvesh create /nodes/<节点id>/qemu/<虚拟机id>/status/start
pvesh create /nodes/pve/qemu/107/status/start





qm <命令> <vmid> [选项]
qm [create|set] <vmid> # 创建虚拟机
--memory <MBYTES> memory in MB (64 - 8192)
--sockets <N> set number of CPU sockets <N>
--cores <N> set cores per socket to <N>
--ostype NAME specify OS type
--onboot [yes|no] start at boot
--keyboard XX set vnc keyboard layout
--cpuunits <num> CPU weight for a VM
--name <text> set a name for the VM
--description <text> set VM description
--boot [a|c|d|n] specify boot order
--bootdisk <disk> enable booting from <disk>
--acpi (yes|no) enable/disable ACPI
--kvm (yes|no) enable/disable KVM
--tdf (yes|no) enable/disable time drift fix
--localtime (yes|no) set the RTC to local time
--vga (gd5446|vesa) specify VGA type
--vlan[0-9u] MODEL=XX:XX:XX:XX:XX:XX[,MODEL=YY:YY:YY:YY:YY:YY]
--ide<N> [volume=]volume,[,media=cdrom|disk]
[,cyls=c,heads=h,secs=s[,trans=t]]
[,cache=none|writethrough|writeback]
[,snapshot=on|off][,cache=on|off][,format=f]
[,werror=enospc|ignore|report|stop]
[,rerror=ignore|report|stop]
[,backup=no|yes]
--ide<N> <GBYTES> create new disk
--ide<N> delete remove drive - destroy image
--ide<N> undef remove drive - keep image
--cdrom <file> is an alias for --ide2 <file>,media=cdrom
--scsi<N> [volume=]volume,[,media=cdrom|disk]
[,cyls=c,heads=h,secs=s[,trans=t]]
[,snapshot=on|off][,format=f]
[,cache=none|writethrough|writeback]
[,werror=enospc|ignore|report|stop]
[,backup=no|yes]
--scsi<N> <GBYTES> create new disk
--scsi<N> delete remove drive - destroy image
--scsi<N> undef remove drive - keep image
--virtio<N> [volume=]volume,[,media=cdrom|disk]
[,cyls=c,heads=h,secs=s[,trans=t]]
[,snapshot=on|off][,format=f]
[,cache=none|writethrough|writeback]
[,werror=enospc|ignore|report|stop]
[,rerror=ignore|report|stop]
[,backup=no|yes]
--virtio<N> <GBYTES> create new disk
--virtio<N> delete remove drive - destroy image
--virtio<N> undef remove drive - keep image

qm monitor <vmid> # 连接到虚拟机控制监视器
qm start <vmid> # 启动实例
qm shutdown <vmid> # 优雅停止实例 发送关机命令
qm wait <vmid> [time] wait until vm is stopped
qm stop <vmid> # 停止实例 强制停止
qm reset <vmid> # 重启实例 相当于stop然后再start
qm suspend <vmid> # 暂停实例
qm resume <vmid> # 恢复实例
qm cad <vmid> #发送按键 ctrl-alt-delete
qm destroy <vmid> # 销毁实例(删除所有已使用/拥有的卷)
qm unlock <vmid> # 清除迁移/备份锁
qm status <vmid> # 显示实例状态
qm cdrom <vmid> [<device>] <path> set cdrom path. <device is ide2 by default>
qm cdrom <vmid> [<device>] eject eject cdrom
qm unlink <vmid> <volume> delete unused disk images
qm vncproxy <vmid> <ticket> open vnc proxy
qm vnc <vmid> start (X11) vncviewer (experimental)
qm showcmd <vmid> # 显示命令行(调试信息)
qm list # 列出所有虚拟机
qm startall # 启动所有虚拟机 当onboot=1时
qm stopall [timeout] # 停止所有虚拟机(默认超时为3分钟)

集群 操作指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看集群资源状况
pvesh get /cluster/resources



pvesr list # 列出存储复制作业
ha-manager status # 查看HA状态
pvecm nodes # 查看集群节点
pvecm status # 查看集群状态
pveperf
pve-firewall compile # 查看防火墙规则
pve-firewall localnet # 输出本地网络信息
pve-firewall restart # 重启防火墙
pve-firewall stop # 停止防火墙
pve-firewall start # 启动防火墙



Note

PVE Tools 的安装

Github地址:https://github.com/ivanhao/pvetools

安装软件出现 401 Unauthorized

1
E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/buster/InRelease  401  Unauthorized [IP: 212.224.123.70 443]
  • 在pve管理界面内,更新,存储库
    • 将带enterprise字样的库禁用。

apt update 订阅库不可用的问题

1
2
3
4
5
6
7
Err:5 https://enterprise.proxmox.com/debian/ceph-quincy bookworm InRelease  401  Unauthorized [IP: 51.79.228.122 443]
Hit:6 http://security.debian.org bookworm-security InRelease
Reading package lists... Done
E: Failed to fetch https://enterprise.proxmox.com/debian/ceph-quincy/dists/bookworm/InRelease 401 Unauthorized [IP: 51.79.228.122 443]
E: The repository 'https://enterprise.proxmox.com/debian/ceph-quincy bookworm In Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disa bled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

The apt package manager on the fresh Proxmox host is configured to download packages from Enterprise Repository by default. You must have a paid subscription to use this repo. If you don’t have paid subscription you should switch to No-Subscription Repository.

新 Proxmox 主机上的 apt 包管理器默认配置为从 Enterprise Repository 企业存储库 下载包。 您必须付费订阅才能使用此存储库。 如果您没有付费订阅,您应该切换到No-Subscription Repository 无订阅存储库

Either delete /etc/apt/sources.list.d/pve-enterprise.list file or comment all lines in this file with #.

Create new file /etc/apt/sources.list.d/pve-no-subscription.list with content:

1
2
3
4
5
6
deb http://download.proxmox.com/debian/pve buster pve-no-subscription

# PVE 8.0
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
# 镜像源
deb http://mirrors.ustc.edu.cn/proxmox/debian/pve/ bookworm pve-no-subscription

apt update 的时候 NO_PUBKEY 问题

1
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7BF2812E8A6E88E0
1
2
3
apt-get install gnupg2 -y
wget http://download.proxmox.com/debian/key.asc
apt-key add key.asc

修改PVE的管理地址

无法进入web管理界面

  1. 编辑 interface 文件

    1
    vi /etc/network/interfaces

    通过键盘上下左右移动到address这行的IP地址,按一次i进入修改状态,修改为新的IP地址,如果需要网关则修改gateway这行,修改完成确认无误后按一次ESC键输入“:wq”回车保存退出。

  2. 修改显示

    1
    vi /etc/issue

    通过键盘上下左右移动到https://这行的IP地址,按一次i进入修改状态,修改为新的IP地址,端口8006不要改,修改完成确认无误后按一次ESC键输入“:wq”回车保存退出。

  3. 修改 hosts 文件

    1
    vi /etc/hosts

    通过键盘上下左右移动到第2行的IP地址,按一次i进入修改状态,修改为新的IP地址,修改完成确认无误后按一次ESC键输入“:wq”回车保存退出。

  4. reboot,重启PVE!

可以进入web管理界面

如果是PVE版本大于等于6.1,则可以使用web管理页面的网络选项菜单中修改vmbr0的IP,修改完成后,点击应用配置生效即可。此操作无需重启服务器即可应用新IP。

img

修改显示的访问的链接地址。
重启后的提示语还是显示原来的https://旧IP:8006。这个要是以后忘了就容易出问题。可以更改/etc/hosts文件,也可以在web管理页面主机处修改,修改完记得保存。此操作修改完需要重启才可刷新显示提示语。

img

PVE 导入img磁盘文件 qm importovf qm importovf

1
2
3
4
5
6
7
# Create a new VM using parameters read from an OVF manifest
# An alias for qm disk import.
# <虚拟机ID> <清单> <存储> [选项]
qm importovf <vmid> <manifest> <storage> [OPTIONS]

# 示例
qm importdisk 102 /var/lib/vz/template/iso/openwrt.img local-lvm

qemu-img img转换为qcow2

1
2
3
4
5
# 转换
qemu-img convert -f raw -O qcow2 file.img tofile.qcow2

# 导入
qm importdisk 101 xxxfile.qcow2 local-lvm

pvetools工具安装省电后无法睿频

自动调整运行频率

网上有很多教程会修改vi /etc/default/grub文件,将driver改成acpi-cpufreq

我的CPU是J4125,在intel_cpufreq下也可以使用conservative ondemand userspace powersave performance schedutil这些模式。所有就没有去修改。

参考

1
2
3
4
5
6
7
8
9
10
11
12
# 安装
apt-get install cpufrequtils

# 查看cpu当前信息
cpufreq-info

# 查看可以使用的模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# 例如J4125这里会输出 conservative ondemand userspace powersave performance schedutil

# 查看当前运行的模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

cpu运行自动配置文件/etc/init.d/cpufrequtils

  • 这个文件在开机的时候会自动调用,自动运行
    • 这个文件主要的内容就是运行cpufreq-set指令调整运行模式和频率
    • 这个文件会优先读取和使用/etc/default/cpufrequtils文件的内容
  • 编辑这个文件vi /etc/init.d/cpufrequtils
    • 修改频率 模式 保存
  • 重启
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/sh
### BEGIN INIT INFO
# Provides: cpufrequtils
# Required-Start: $remote_fs loadcpufreq
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: set CPUFreq kernel parameters
# Description: utilities to deal with CPUFreq Linux
# kernel support
### END INIT INFO
#

DESC="CPUFreq Utilities"

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
CPUFREQ_SET=/usr/bin/cpufreq-set
CPUFREQ_INFO=/usr/bin/cpufreq-info
CPUFREQ_OPTIONS=""

# use lsb-base
. /lib/lsb/init-functions

# Which governor to use. Must be one of the governors listed in:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
#
# and which limits to set. Both MIN_SPEED and MAX_SPEED must be values
# listed in:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# a value of 0 for any of the two variables will disabling the use of
# that limit variable.
#
# WARNING: the correct kernel module must already be loaded or compiled in.
#
# Set ENABLE to "true" to let the script run at boot time.
#
# eg: ENABLE="true"
# GOVERNOR="ondemand"
# MAX_SPEED=1000
# MIN_SPEED=500

ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="0"
MIN_SPEED="0"

check_governor_avail() {
info="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
if [ -f $info ] && grep -q "\<$GOVERNOR\>" $info ; then
return 0;
fi
return 1;
}

[ -x $CPUFREQ_SET ] || exit 0

if [ -f /etc/default/cpufrequtils ] ; then
. /etc/default/cpufrequtils
fi

# if not enabled then exit gracefully
[ "$ENABLE" = "true" ] || exit 0

if [ -n "$MAX_SPEED" ] && [ $MAX_SPEED != "0" ] ; then
CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --max $MAX_SPEED"
fi

if [ -n "$MIN_SPEED" ] && [ $MIN_SPEED != "0" ] ; then
CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --min $MIN_SPEED"
fi

if [ -n "$GOVERNOR" ] ; then
CPUFREQ_OPTIONS="$CPUFREQ_OPTIONS --governor $GOVERNOR"
fi

CPUS=$(cat /proc/stat|sed -ne 's/^cpu\([[:digit:]]\+\).*/\1/p')
RETVAL=0
case "$1" in
start|force-reload|restart|reload)
log_action_begin_msg "$DESC: Setting $GOVERNOR CPUFreq governor"
if check_governor_avail ; then
for cpu in $CPUS ; do
log_action_cont_msg "CPU${cpu}"
$CPUFREQ_SET --cpu $cpu $CPUFREQ_OPTIONS 2>&1 > /dev/null || \
RETVAL=$?
done
log_action_end_msg $RETVAL ""
else
log_action_cont_msg "disabled, governor not available"
log_action_end_msg $RETVAL
fi
;;
stop)
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload}"
exit 1
esac

exit 0

pve 合并local-lvm和local分区

参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# lsblk 查看一下分区结构 
lsblk

# 备份一下 虚拟机的磁盘文件。。。 这一步我没做。。。。。 悲剧了


# 删除 local-lvm 千万注意备份一下 pve/data/ 目录下的 disk 虚拟磁盘文件 PVE8.2.2我照着这么操作直接把磁盘文件给删掉了,我人都傻了。。。。。
# 后面几个就是在删除磁盘文件
lvremove pve/data
Removing pool pve/data will remove 3 dependent volume(s). Proceed? [y/n]: y
Do you really want to remove active logical volume pve/vm-220-disk-0? [y/n]: y
Logical volume "vm-220-disk-0" successfully removed.
Do you really want to remove active logical volume pve/vm-300-disk-0? [y/n]: y
Logical volume "vm-300-disk-0" successfully removed.
Do you really want to remove active logical volume pve/vm-220-disk-1? [y/n]: y
Logical volume "vm-220-disk-1" successfully removed.
Do you really want to remove active logical volume pve/data? [y/n]: y
Logical volume "data" successfully removed.

# 扩展local
lvextend -l +100%FREE -r pve/root

# 查看状态
lsblk

在管理页面删除local-LVM

修改 local 的属性将local-lvm的功能加上去。

安装群晖

参考

  • 创建虚拟机
    • 操作系统
      • 不需要使用介质
    • 系统
      • 机型,这里大部分教程推荐使用 q35
        • q35比默认的i440fx机型更新,性能更好
        • 也有人说i440fx兼容性更好,有些小bug在i440fx上不会出现。
      • 其他默认即可
    • 磁盘
      • 这里需要注意群晖只支持sata,无法支持性能更强的scsi
      • 后面将引导转换为磁盘的时候也需要注意接口要是sata的。
    • CPU
      • 类型
        • host 代表使用和主机一样的CPU信息和架构(通用性差,性能更优)
    • 内存
    • 网络
      • 网络这里有些引导不支持VirtlO,就要要改为E1000
  • 添加引导
  • 硬盘直通
    • 。。。。。
1
args: -device 'qemu-xhci,addr=0x18' -drive 'id=synoboot,file=/root/synoboot.img,if=none,format=raw' -device 'usb-storage,id=synoboot,drive=synoboot,bootindex=1'

关闭虚拟机,编辑虚拟机配置文件 /etc/pve/qemu-server/100.conf ,100是对应虚拟机ID,在顶部添加大佬的这一段代码,img路径改成对应的路径。改完后WebUI没有显示的,禁用掉其他启动项,直接启动虚拟机即可

硬盘直通

参考资料:
Proxmox VE pve硬盘直通

PVE的直通分为两种

  • 直通控制器(sata控制器、nvme控制器)
    • 接近裸机性能,损耗非常低
    • 是一个物理磁盘,虚拟机可以获取真实硬盘信息,具有smart属性。
    • 磁盘由虚拟机管理,虚拟机可以获取磁盘控制权
    • 要求PVE系统不能安装在控制器下属磁盘内
  • 直通单个硬盘或者分区
    • CPU性能越好,越接近裸机性能,损耗较低
    • 硬盘会在虚拟机内会认为是一个qemu-hdd
    • 磁盘由PVE管理
    • 限制
      • sata最大6个
      • ide最大3个
      • scsi最大128个
      • virtio-blk最大32个

列出当前的所有磁盘
我们可以通过下面命令,列出当前的硬盘列表

1
ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part

nvme开头的是nvme硬盘,ata开头是走sata或者ata通道的设备。scsi是scsi设备-阵列卡raid或者是直通卡上的硬盘。

直通单个硬盘&分区

我们可以通过qm set <vmid> --scsi[n] /dev/disk/by-id/xxxxxxx 进行直通。qm set <vmid> --delete scsi[n]来取消直通。
vmid指的是虚拟机ID;–scsi[n]指的是接口(同样的还有scsi、sata、ide、virtio),n指的是端口号;/dev….指的是需要直通的硬盘&分区路径

实例:

1
2
3
4
qm set 220 --sata1 /dev/disk/by-id/ata-Netac_SSD_512GB_AA20230802512G645320

qm set 101 --scsi1 /dev/disk/by-id/nvme-INTEL_SSDPE2KX020T8_BTLJ039307142P0BGN

建议为scsi设备,这样性能理论上是最优秀的。

qm help set 可以获取帮助信息。

直通控制器

磁盘控制器直通之后,虚拟机可以获得全部的磁盘属性。

需要注意的是,你需要多个磁盘控制器,且Proxmox VE系统安装在非需要直通的硬盘控制器上,否则会将系统直通给虚拟机,导致系统崩溃。

1
2
3
4
5
6
7
8
# 查看PCI控制器
lspci

# 查看硬盘分布情况
# 有pve-root的,便是pve所在的硬盘
lsblk

ls -la /sys/dev/block/|grep -v loop |grep -v dm

需要按照这个教程开启硬件直通功能
https://foxi.buduanwang.vip/virtualization/pve/561.html/

开启后在控制面板直接添加PCI设备即可。


ProxmoxVE
https://www.oikiou.top/2023/52f35219/
作者
Oikiou
发布于
2023年8月24日
许可协议