如何在 Linux 名称 /dev/sdx/ 下挂载 UUID

如何在 Linux 名称 /dev/sdx/ 下挂载 UUID

在我的工作站启动后,有时 Linux 中同一硬盘的名称会从 更改为/dev/sdg/ 我该如何修复这个问题,例如,/dev/sdi/
使 UUID 与名称完全一致地安装?/dev/sda

问题来自于从原始文件创建虚拟机:

VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/win7.vmdk -rawdisk /dev/sdg -partitions 2,3 -mbr ~/.VirtualBox/FAKE.mbr -relative

如果现在名称/dev/sdg更改为/dev/sdi我的虚拟机将无法启动......

答案1

使用 /dev/disk/by-uuid/someUUID 而不是 /dev/sdaXN


您可以使用 UUID 来设备/dev文件系统中的符号链接:

$ ls -l /dev/disk/by-uuid/fc48808f-8f06-47fc-a1fe-5d08ee9e0a40
lrwxr[...] 14:15 /dev/disk/by-uuid/fc48808f-8f06-47fc-a1fe-5d08ee9e0a40 -> ../../sdd1

该链接可以像

... -rawdisk /dev/disk/by-uuid/fc48808f-8f06-47fc-a1fe-5d08ee9e0a40 ...

除了 UUID,标签也可以以相同的方式使用 - 例如,标签“数据“:

$ ls -l /dev/disk/by-label/data 
lrwxrwxrwx 1 root root 10 Sep  4 14:15 /dev/disk/by-label/data -> ../../sde1

尝试

ls -l /dev/disk/by-uuid 
ls -l /dev/disk/by-label


独立于此,UUID也可以在 中使用 或 标签/etc/fstab,代替/dev/sdXN设备文件。(使用 列出标签sudo lsblk -o NAME,LABEL

答案2

答案是使用 udev 规则:

KERNEL=="sd[a-z][0-9]", SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}=="Crucial_CT480M50", SYMLINK+="bootdevice%n"
KERNEL=="sd?", SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}=="Crucial_CT480M50", SYMLINK+="bootdevice"

在文件 /etc/udev/rules.d/mybootdevice.rules 中

(如何调整属性以适合您的设备,请参见此处:这里

然后重新启动udev:

sudo udevadm trigger

然后会有一个 /dev/bootdevice

每次启动后都会持续存在!

相关内容