江苏省吴江市双板桥路3号兴源网络

0512-63028342

ly@wjxy.net.cn

Proxmox-ve pve sata6硬盘限制

在将“args”添加到 VM conf 之后。文件驱动器在启动时出现在 VM 中,但不在 proxmox VM 的硬件部分。

使用“args”行添加额外的 SATA 设备,它们不会出现在硬件下。SATA 设备的软限制为 6,这反映在硬件配置页面中,手动添加到 VM 配置文件的 args 行只是一种变通方法。

args: -device ahci,id=ahci1,multifunction=on,bus=pci.0,addr=0xb -drive 'file=/dev/disk/by-id/ata-ST500DM009-2F110A_ZA480LWF,if=none,id=drive-sata6,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.1,drive=drive-sata6,id=sata6

http://www.nasyun.com/thread-78388-1-1.html?mobile=2

威联通 QNAP


板凳r-MT Lv.6

2022-7-17 19:16 来自 中国江苏无锡

pve默认把sata接口0-5(最多6个)挂载PCI Bridge—PCI-PCI bridge下面,2层全是pci,造成qnap无法找到sata硬盘,解决办法有下列几种,各取所需吧

 

一。修改pve的控制文件

比较简单

 

pve通过

/usr/share/perl5/PVE/QemuServer.pm和/usr/share/perl5/PVE/QemuServer/PCI.pm

2个文件来控制虚拟机pci/pcie设备的建立

感兴趣的 可以研究一下里面其他的

这里只说说sata

 

先备份

/usr/share/perl5/PVE/QemuServer.pm

 

找到

my $pciaddr = print_pci_addr(“ahci$controller”, $bridges, $arch, $machine_type);

把pci改成pcie

my $pciaddr = print_pcie_addr(“ahci$controller”, $bridges, $arch, $machine_type);

 

 

或者直接在pve的shell下面执行

cp /usr/share/perl5/PVE/QemuServer.pm /usr/share/perl5/PVE/QemuServer.pm.bak

sed -i ‘s/print_pci_addr(“ahci/print_pcie_addr(“ahci/g’ /usr/share/perl5/PVE/QemuServer.pm

 

 

先备份

/usr/share/perl5/PVE/QemuServer/PCI.pm

在sub get_pcie_addr_map段

找到# win7 is picky about pcie assignments这行在下面添加一行

# win7 is picky about pcie assignments

ahci0 => { bus => ‘pcie.0’, addr => 23 },

 

 

 

或者直接在pve的shell 执行

cp /usr/share/perl5/PVE/QemuServer/PCI.pm /usr/share/perl5/PVE/QemuServer/PCI.pm.bak

sed -i “/picky/a ahci0 => { bus => ‘pcie.0’, addr => 23 },” /usr/share/perl5/PVE/QemuServer/PCI.pm

 

 

重启PVE

 

这样以后pve建立的虚拟机的sata全部在00.17.0.0上了,也就是model.conf里面的DEV_BUS = B0023:F0

 

这个办法缺点也有,每次pve升级后都要自己手动修改一下,同时其他所有的虚拟机里面的sata接口也被改变到pcie上了

 

 

二.另外一种方法替换pve的加载sata命令,改成args: 来执行,比较繁琐

 

比如先建了虚拟机 ID=100 ,80G的sata硬盘

在pve的shell 执行

qm showcmd 100 –pretty

找到类似这三行复制下来,

-device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’

-drive ‘file=/mnt/pve/wd500g/images/100/vm-100-disk-0.qcow2,if=none,id=drive-sata0,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on’

-device ‘ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0’

 

然后在虚拟机硬件里面把该80G磁盘分离,不要删除

 

修改三行 前面加上args: ,删掉每行后面的 修改成如下

args: -device ‘ahci,id=ahci1,multifunction=on,bus=pcie.0,addr=0x17’

-drive ‘file=/mnt/pve/wd500g/images/100/vm-100-disk-0.qcow2,if=none,id=drive-sata6,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on’

-device ‘ide-hd,bus=ahci1.0,drive=drive-sata6,id=sata6’

 

 

ps:这里新建一个ahci1,在pcie 17.00.0上,使用sata6.(pve默认的sata占用satat0-5,使用的ahci0)

然后合并成一行

args: -device ‘ahci,id=ahci1,multifunction=on,bus=pcie.0,addr=0x17’ -drive ‘file=/mnt/pve/wd500g/images/100/vm-100-disk-0.qcow2,if=none,id=drive-,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on’ -device ‘ide-hd,bus=ahci1.0,drive=drive-sata6,id=sata6’

添加到/etc/pve/qemu-server/100.conf成为第一行

 

 

启动虚拟机,sata磁盘就到pcie 00:17.0上了

 

 

 

 

 

如果需要添加第二个sata硬盘

先在web页面添加第二个sata硬盘50G

pve的shell里面执行

qm showcmd 100 –pretty

找到如下三行,复制出来

-device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’

-drive ‘file=/mnt/pve/wd500g/images/100/vm-100-disk-1.qcow2,if=none,id=drive-sata0,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on’

-device ‘ide-hd,bus=ahci0.0,drive=drive-sata0,id=sata0’

然后分离掉刚才50G磁盘,

前面已经建立个ahci1了,所以第一行就不要了,也不要加args:,去掉,修改成如下

-drive ‘file=/mnt/pve/wd500g/images/100/vm-100-disk-1.qcow2,if=none,id=drive-sata7,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on’

-device ‘ide-hd,bus=ahci1.1,drive=drive-sata7,id=sata7’

 

合并成一行

继续添加到/etc/pve/qemu-server/100.conf第一行的结尾

 

进工具 hwinfo –disk

2个磁盘都在00:17.0下了

 

 

设置比较繁琐,pve以后升级可以不管

 

 

三。其他pve里面虚拟U盘引导qnap

把img引导盘上传到pve里面

/etc/pve/qemu-server/100.conf

第一行 添加

args: -device ‘usb-ehci,addr=0x14’ -drive ‘id=qnapboot,file=/var/lib/vz/template/iso/x72-5.0.0.1932-dom.img,if=none,format=raw’ -device ‘usb-storage,id=qnapboot,drive=qnapboot,bootindex=1’

 

就直接usb引导了

 

其中

-device ‘usb-ehci,addr=0x14’

也就是usb-ehci里面usb2.0对应model.conf

[Boot Disk 1]

DEV_BUS = B0020:F0

IN_HUB = 0

DEV_PORT_NS = 1

如果用-device ‘qemu-xhci,addr=0x14’ ,也就是usb3.0

[Boot Disk 1]

DEV_BUS = B0020:F0

IN_HUB = 0

DEV_PORT = 1

发表回复