为什么fstab使用UUID而不是实际的文件系统名称?


21

例如,这是my的第一行/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
  1. 从二是它没关系推断,UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a表示/dev/vda鉴于第一列fstab<file system>

  2. 因此,如果我/etc/fstab对此进行修改,可以吗?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. 编辑:如果是(对于上述问题),为什么sudo blkid命令显示的UUID不同/dev/vda

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    我在这里想念什么?

    答:我认为(3)是主机云中的错误。因此,是的,blkid(或ls -l /dev/disk/by-uuid)报告的UUID 应该与中使用的UUID 相同/etc/fstab


使用sudo blkid命令检查UUID 。
Avinash Raj

@AvinashRaj嗯,奇怪的是,该sudo blkid命令为输出了另一个UUID /dev/vda。这使我更加困惑。:)(更新的问题。)
its_me 2014年

blkid命令显示不同的UUID并不是一个好兆头-请使用`ls -l / dev / disk / by-uuid'检查当前的UUID。从vda开始,可能是基础VM基础架构发生了变化吗?
liquidat

@liquidat这是我得到的输出:lrwxrwxrwx 1 root root 9 Jun 18 11:04 6f469437-4935-44c5-8ac6-53eb54a9af26 -> ../../vda。至于您的其他问题,我将与网络托管人联系。
its_me 2014年

我要说的是,由于fstab条目是完全错误的,因此计算机可能不会重新引导。可能是克隆的磁盘或其他东西。我认为没有其他设备在fstab中提供UUID吗?
liquidat

Answers:


22

使用UUID的优点是,它与操作系统为您的硬盘提供的实际设备号无关。

假设您向系统中添加了另一个硬盘,由于某种原因,操作系统决定您的旧磁盘现在sdb不是sda

如果fstab指向设备名称,则启动过程将会搞砸。但是对于UUID,这很好。

有关UUID的更多详细信息,也可以在博客文章“ UUID和Linux:您需要知道的一切”中找到。


是的 即使没有添加新磁盘,内核也可能决定一天只交换两个驱动器的开发挂载。参见wiki.archlinux.org/index.php/Persistent_block_device_naming
Tommy

如果我要将映像克隆到另一个具有不同UUID的磁盘,会发生什么?
aloplop85

在至少一种情况下,UUID不太有用:如果克隆整个磁盘,然后重新启动,则可能会从任一磁盘或错误的磁盘装入分区。
6

没错-检查链接的博客文章,甚至在不使用它们的时候都有一节。
Liquidat

如果克隆磁盘,则应更改新磁盘上的UUID。tune2fs xfs_admin或reiserfstune可以执行此操作,具体取决于您的文件系统。
steveayre

3

在那种情况下,我可以将/ etc / fstab修改为此吗?

可以并且可能会没事,但是最有可能离开UUID会更好。

在这种情况下,UUID是任意字符串,用于标识块设备上的分区。它与分区本身一起存储,并且可以根据需要分配一个不同的地址(类似于MAC地址)。

使用UUID的优点是它是无误的,而/dev/vda不是。它发生,它最终是在开机的时候不同的驱动器,虽然这可能是在上下文中完全理论(例如,因为你只需要一个特定类型的一个驱动器)。

使用设备名称可能导致问题的另一个更微妙的示例是最近在某些系统上切换为使用一致的网络设备名称。如果这是作为升级而发生的,并且您在某处的网络脚本中使用了硬编码的设备名称,则它将中断。一个并行的示例WRT块设备可能是更改命名方案的内核或udev升级。

UUID的要点是使此类事情变为可能且轻松自在。因此,尽管可以使用设备名称,但是这样做没有任何优势,除非(例如)您有一个用于交换不同驱动器的系统。换句话说,如果您没有充分的理由这样做,请坚持使用UUID


好的。那么,什么解释了/dev/vdain /etc/fstab和报告的不同UUID blkid?(如果尚未,请查看更新的问题。)
its_me 2014年

5
而不是提出更新,您应该提出一个单独的问题(“为什么我安装的分区UUID与fstab中的分区UUID不同?”)。
goldilocks 2014年

2

您可以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-idby-pathby-uuid其中所有似乎是同一设备的替代名称。


在那种情况下,问题(在我的问题中进行了更新)是我得到了两个不同的UUID /dev/vda。请再看一次这个问题。
its_me 2014年

1
如果我回答了原始问题,将其标记为“已回答”并写一个新问题可能是个好主意,这样您就不会收集不相关的答案,这些答案只适用于原始问题,而不适用于修改后的问题。
Bruce Ediger 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.