例如,这是我的第一行/etc/fstab
:
UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a / ext4 errors=remount-ro 0 1
这是命令的输出df -h
(报告可用磁盘空间):
honey@bunny:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/vda ext4 30832636 4884200 24359188 17% /
none tmpfs 4 0 4 0% /sys/fs/cgroup
udev devtmpfs 498172 12 498160 1% /dev
tmpfs tmpfs 101796 320 101476 1% /run
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 508972 0 508972 0% /run/shm
none tmpfs 102400 0 102400 0% /run/user
鉴于第一列是,从这两个可以推断出
UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a
代表吗?/dev/vda
fstab
<file system>
/etc/fstab
那么,如果我修改成这样可以吗?/dev/vda / ext4 errors=remount-ro 0 1
编辑:如果是(对于上述问题),为什么该
sudo blkid
命令显示不同的 UUID/dev/vda
?$ sudo blkid /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
我在这里缺少什么?
回答:我的结论是(3)是我的主机云中的一个错误。所以是的,
blkid
(或)报告的 UUIDls -l /dev/disk/by-uuid
应该与 中使用的 UUID 相同/etc/fstab
。
答案1
使用 UUID 的优点是它独立于操作系统为硬盘提供的实际设备编号。
想象一下,您向系统添加了另一个硬盘,并且由于某种原因,操作系统决定您的旧磁盘现在sdb
而不是sda
.
fstab
如果指向设备名称,您的引导过程将会被搞砸。但对于 UUID 来说,那就没问题了。
有关 UUID 的更多详细信息也可以在博客文章中找到“UUID 和 Linux:你需要知道的一切”
答案2
那么,我可以将/etc/fstab修改为这个吗?
你能它将大概没问题,但很可能最好保留 UUID。
UUID在本例中,是用于标识块设备上的分区的任意字符串;它与分区本身一起存储,并且可以根据需要分配不同的分区(类似于 MAC 地址)。
使用UUID的优点是它是明确无误的,反之则/dev/vda
不然;它可以碰巧它在启动时最终成为不同的驱动器,尽管这在上下文中可能完全是理论上的(例如,因为您只有一个特定类型的驱动器)。
另一个使用设备名称可能导致问题的更微妙的例子是最近在某些系统上切换到使用一致的网络设备名称。如果这是作为升级发生的,并且您在某个网络脚本中使用了硬编码的设备名称,那么它就会崩溃。并行示例 WRT 块设备可能是更改命名方案的内核或 udev 升级。
UUID 的一点就是让这些事情变得可能并且轻松。所以当你能使用设备名称,这样做没有任何好处除非(例如)您有一个可以交换不同驱动器的系统。换句话说,如果您没有充分的理由这样做,坚持使用 UUID。
答案3
您可以man fstab
对文件的内容和语义进行相当简洁的阅读/etc/fstab
。在我的 x86 上,相当最新的 Arch Linux 服务器上,man fstab
给了我这个:
The second field ... describes the mount point for the filesystem.
所以,是的,/dev/vda
显然是某些设备的众多名称之一,UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a
因为这两个名称似乎都安装在“/”上。
如果您查看该目录,/dev/disk/by-uuid/
您可以看到指向我的服务器上的/dev/sda1
,之类的符号链接。/dev/sdb1
这可能是检验你的假设的另一种方法。/dev/disk
有子目录by-id
, by-path
,by-uuid
它们似乎都是同一设备的备用名称。