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

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

例如,這是我的第一行/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/vdafstab<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(或)報告的 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-pathby-uuid它們似乎都是同一設備的備用名稱。

相關內容