![我如何阻止 Freenas 为来自不同 SATA 控制器的两个磁盘分配相同的设备号?](https://linux22.com/image/744345/%E6%88%91%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20Freenas%20%E4%B8%BA%E6%9D%A5%E8%87%AA%E4%B8%8D%E5%90%8C%20SATA%20%E6%8E%A7%E5%88%B6%E5%99%A8%E7%9A%84%E4%B8%A4%E4%B8%AA%E7%A3%81%E7%9B%98%E5%88%86%E9%85%8D%E7%9B%B8%E5%90%8C%E7%9A%84%E8%AE%BE%E5%A4%87%E5%8F%B7%EF%BC%9F.png)
我在 XCP-NG 中的虚拟机中运行 Freenas。我按照指南操作,并使用 PCI 直通为其专用了一个 SATA 控制器。Freenas 正确地发现了它的启动磁盘(虚拟的)和两个通过 SATA 控制器连接的物理磁盘。不幸的是,Freenas 将虚拟启动磁盘和第一个物理磁盘都识别为 ada0。
以下是我跑步时得到的geom disk list
Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 8589934592 (8.0G)
Sectorsize: 512
Mode: r1w1e2
descr: (null)
ident: (null)
rotationrate: unknown
fwsectors: 0
fwheads: 0
Geom name: cd0
Providers:
1. Name: cd0
Mediasize: 0 (0B)
Sectorsize: 2048
Mode: r0w0e0
descr: QEMU QEMU DVD-ROM
ident: (null)
rotationrate: unknown
fwsectors: 0
fwheads: 0
Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 4000787030016 (3.6T)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r1w1e2
descr: WDC WD40EZRZ-00WN9B0
lunid: 50014ee20d58de88
ident: WD-WCC4E5SLVZV7
rotationrate: 5400
fwsectors: 63
fwheads: 16
Geom name: ada1
Providers:
1. Name: ada1
Mediasize: 4000787030016 (3.6T)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r1w1e2
descr: WDC WD40EZRX-22SPEB0
lunid: 50014ee2b6e06d20
ident: WD-WCC4E4EN0Y9S
rotationrate: 5400
fwsectors: 63
fwheads: 16
如您所见,ada0 出现了两次。这对 ZFS 造成了各种破坏,如果我运行zpool import
或尝试在物理磁盘上加载现有池,它就会发生核心转储。
这是我在研究这个问题的过程中学到的一些东西。
如果我运行 Linux 而不是 Freenas,则磁盘将被检测为 xvda、sda 和 sdb。
如果我将启动磁盘的位置从 0 更改为 2,它就会变成 ada2,并且池导入可以工作,但这是不可行的,因为我计划拥有更多物理磁盘。
我无法告诉 XCP-NG 为启动盘分配一个不会与任何物理磁盘冲突的高数字,因为这样虚拟机就无法启动。看来启动盘需要位于位置 3 或更低。
在 YouTube 视频中,其他执行此操作的人使用了 SAS 控制器,并将物理磁盘标记为 da0、da1 等,从而避免了冲突。-https://www.youtube.com/watch?v=yrRLm_iHkRM
有什么方法可以强制 Freenas 以不同的方式对第二个控制器的磁盘进行编号?我可以强制它使用 da0 吗?我可以强制它从不同的偏移量开始,例如 ada1 吗?我可以诱使它为虚拟磁盘赋予不同的设备名称吗?我可以让 XCP-NG 从任意位置的磁盘启动吗?除非我购买 SAS 控制器,否则我就会陷入困境吗?