防止创建 /dev/sda*、sdb*,同时保持 /dev/disk/by-uuid/* 或 /dev/disk/by-label/* 完好无损

防止创建 /dev/sda*、sdb*,同时保持 /dev/disk/by-uuid/* 或 /dev/disk/by-label/* 完好无损

如果我想阻止在我的系统中创建/dev/sd{a,b,c,...}{,1,2,3,...}设备,但仍然拥有/dev/disk/by-uuid/*/dev/disk/by-label/*为这些磁盘创建,我可以这样做,理智/干净地(特别是不必重做每次我升级时都会这样)?

或者设备的创建是/dev/sd*一个默认的内核事物,很难覆盖(理解“不合理”的主观性)?

至于为什么,是因为我真的想通过标签或 UUID 来完成我所有的 ZFS 工作,并且不想在将来迷惑或诱惑自己(或我团队的其他成员)。

我还没有构建服务器,但我可以自信地说启动/根目录将位于专用的 HPE Smart Array 控制器上(因此假设/dev/cciss/*- 请随时纠正我);并且所有 ZFS 池成员都将位于单独的 HBA (HPE H241) 上(如果这有助于隔离设备)。

/dev/sda如果任何连接的 USB 继续被发现为、等,则奖励道具sdb,但当然不是必需的。

出于“商业原因”以 Ubuntu 16.04 为目标,但也会对其他发行版感兴趣。

(交叉发布自:https://askubuntu.com/questions/944584/preventing-dev-sda-sdb-from-being-created-while-leaving-dev-disk-by-uuid,几周后没有兴趣......)

答案1

这需要更新供应商提供的 udev 规则。当供应商推出更新或有人因“问题”重新安装该包时正在更新的规则集。说实话,这是一条你不想遵循的道路,因为它可以用于解决真正的问题,而不是一些装饰性的东西。

至于 H241,Ubuntu 16.04 没有出现在 HPE 的支持列表中。您需要检查一下,否则 CentOS 7 应该是一个选项,因为如果您没有支持合同,它应该与 RHEL 7“二进制兼容”。

答案2

我知道这可能不是最好的答案,但如果您可以有一些停机时间,那么通过 ID 更改驱动器非常简单。我倾向于通过 /dev 创建,然后切换到 id,这样我就可以识别磁盘并在需要时移动它们。

# zpool export poolname

# zpool import -d /dev/disk/by-id/ poolname (same poolname as was export)

我相信这也适用于 uuid,但我不使用它,所以我从未测试过它。

相关内容