记得以前看见过介绍UUID的相关资料,当时觉得对自己来说很少用得上,所以也一直没关心,一直到上个礼拜的分区错乱事件。
那天无聊,突然很怀念Gentoo,于是在hda9上安装了Gentoo,装好之后决定将原本在hda7和hda8的arch删掉,直接进Windows将hda7和hda8删除,将两个分区合并为一个,然后满心欢喜的准备进Gentoo了,结果……我想不用说,大家也猜到了。这个时候也终于知道UUID的作用有多大了。
下面的内容来自RHEL手册,简要的说明了UUID,后半部分介绍如何使用Devlabel。
每个硬盘驱动器都有一个独特的标志,叫做 UUID。要解决设备名称的变动问题,devlabel 允许你使用用户定义的设备名称来关联这些 UUID。一个符号链接会被创建来连接用户定义的设备名称和实际的设备名称。如果实际的设备名称改变了,这个符号链接会被更新,并根据驱动器的 UUID 来指向同一驱动器。因此,IDE 和 SCSI 贮存设备都可以使用它们的用户定义的名称被引用。
Devlabel 还允许你自动挂载热插入的设备,如可移硬盘和数码照相机的内存卡之类的 USB 设备。如果被配置成自动挂载,设备被插入后,它就会使用用户定义的设备名称被挂载。
用户定义的设备名称可以根据设备名称、分区名称、或驱动器的 UUID 来被添加。
使用以下语法来为贮存设备添加用户定义的设备名称。所指定的设备可以是整个设备,也可以是设备上的单个分区。
devlabel add -d <device> -s <symlink>
例如:要添加 /dev/work 这个符号链接来代表 /dev/hdb1 分区,使用以下命令:
devlabel add -d /dev/hdb1 -s /dev/work
如果该命令成功,以下输出会被显示:
Created symlink /dev/work -> /dev/hdb1
Added /dev/work to /etc/sysconfig/devlabel
要根据设备的 UUID 来添加设备名称,使用以下语法:
devlabel add -u <uuid> -s <symlink>
要使用 devlabel 来检索设备的 UUID(或确保它的存在),使用以下命令:
devlabel printid -d <device>
符号链接名称必须独特。如果试图添加一个已经存在的链接,配置文件不会被修改,以下输出会被显示:
The file /dev/work already exists.
Failure. Could not create a symlink.
要从 devlabel 列表中删除符号链接,使用以下命令:
devlabel remove -s <symlink>
项目从配置文件中被删除,符号链接被删除。
要判定 devlabel 符号链接的状态,使用以下命令:
devlabel status
它返回的输出和以下相仿:
lrwxrwxrwx 1 root 9 Apr 29 13:20 /dev/work -> /dev/hdb1
lrwxrwxrwx 1 root 9 Apr 29 13:41 /dev/tcf -> /dev/hda1