例如,這是我的第一行/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
它們似乎都是同一設備的備用名稱。