我有一台双启动机器,其中安装了两个 Linux,一个是我的主系统,另一个是一种恢复安装,以防主安装出现问题(用于修复主安装甚至在紧急情况下使用它)。
由于我尝试使此辅助安装保持最新,因此需要定期更新软件包等。问题是,这需要不时启动它,这很耗时,更不用说,非常烦人。
为了解决这个问题,我设置了一个 VMware 客户机,它使用第二个安装物理磁盘作为其虚拟磁盘,这样我就可以将第二个安装作为后台任务进行维护(大多数时候)。
问题在于,在虚拟机上使用物理磁盘存在一些已知风险,其中最重要的是值得一提的风险:
- 在主操作系统安装了一个或多个分区时启动虚拟机的可能性,通常会导致损坏和数据丢失。
- 由于每次启动时内核无法保证设备统一命名,因此 VMware 可能会意外使用错误的物理磁盘。至少理论上,同一个磁盘可以
/dev/sdX
在不同的启动时分配给不同的节点。
我怎样才能防止这种情况发生?
为了解决该问题中提到的风险,我们将编写一条 udev 规则,以确保 VMware 始终使用正确的磁盘。此外,除非由用户明确挂载,否则它还确保其任何分区都不会被基于 udisks 的实用程序和环境自动挂载(通常在 下
/run/media/<user>/...
):您可以将以下文件另存为
/etc/udev/rules.d/70-persistent-vmdk.rules
然后,配置 VMware 以使用
/dev/vmdisk0
设备的规范名称(如/dev/sda
,,, .../dev/sdb
)/dev/nvme0n1p1
。请注意,如果您将符号链接指定为设备路径,vmware 最初将拒绝添加物理设备。没关系,首先使用其规范名称创建它,然后关闭 vmware并编辑 vmdk 文件。
那里应该有一行像这样的字:
仅替换设备名称,不要触碰其他任何内容:
当然,您可以增加这些 udev 规则,以根据序列号添加更多磁盘并命名它们
/dev/vmdisk2
,/dev/vmdisk3
...OBS:已在 VMWare Workstation 17.5 上测试
发布这个问题的主要目的是分享我开发的技术并帮助其他人,所以我在回答我自己的问题。
任何改进和其他补充答案都非常受欢迎。