Filesystems

為什麼 fstab 使用 UUID 而不是實際的文件系統名稱?

  • May 22, 2019

例如,這是 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
  1. **編輯:**如果是(對上述問題),為什麼該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 應該與/etc/fstab.

使用 UUID 的優點是它獨立於作業系統為您的硬碟提供的實際設備編號。

想像一下,您向系統添加了另一個硬碟,並且由於某種原因作業系統決定您的舊磁碟現在sdb不是sda.

fstab如果指向設備名稱,您的啟動過程將被搞砸。但在 UUID 的情況下,這很好。

有關 UUID 的更多詳細資訊也可以在部落格文章“UUID 和 Linux:您需要知道的一切”中找到

在這種情況下,我可以將 /etc/fstab 修改為這個嗎?

可以,而且可能沒問題,但很可能最好保留 UUID。

UUID是任意字元串,在這種情況下,用於標識塊設備上的分區;它與分區本身一起儲存,並且可以根據需要分配一個不同的分區(類似於 MAC 地址)。

使用 UUID 的優點是它是明確無誤的,而/dev/vda不是;它可能會在啟動時最終成為不同的驅動器,儘管這在上下文中可能完全是理論上的(例如,因為您只有一個特定類型的驅動器)。

使用設備名稱可能導致問題的另一個更微妙的例子是最近在某些系統上切換到使用一致的網路設備名稱。如果這是作為升級發生的,並且您在某處的網路腳本中使用了硬編碼的設備名稱,它就會中斷。並行範例 WRT 塊設備可能是更改命名方案的核心或 udev 升級。

UUID 的一個特點是使這類事情成為可能且無痛。因此,雖然您可以使用設備名稱,但這樣做沒有任何好處,除非(例如)您有一個可以交換不同驅動器的系統。換句話說,如果您沒有充分的理由這樣做,請堅持UUID

引用自:https://unix.stackexchange.com/questions/137862