了解 UUID 分配
UUID(通用唯一標識符)是一個 128 位程式碼,用於標識塊(儲存)設備。首先,這是所有 UUID 的用途嗎?
設備如何獲取其 UUID?
它會改變嗎?例如,在每次啟動時?安裝新作業系統時?
UUID 是如何生成的?是隨機的嗎?
大多數電腦的儲存設備不超過 10 個。為什麼需要這麼多不同的名字?
RFC 4122中描述了這個概念,它定義了生成UUID的各種算法。變體 4 使用隨機數並且是最常見的。
UUID 在很多場景中都有使用,一些例子是:
- 標記分區和文件系統是 Linux 中最常見的用法
- 網路管理器使用它們來辨識網路設備和連接
- 虛擬機管理程序,例如 Virtual Box 和 Qemu-KVM,使用它們來辨識虛擬機
- 在 Microsoft Windows 中使用,它們被稱為GUID
- 它們用於數據庫中的唯一性
- 它們用於軟體開發
在 Linux 中,所有發行版都附帶該
util-linux
軟體包,其中包括uuidgen
生成 UUID 的命令。這是一個前端libuuid
,預設情況下生成隨機 UUID,如果沒有足夠的熵可用,則基於時間。您用於創建分區或文件系統的實用程序將生成 UUID,該 UUID 將保留在該分區/文件系統中,直到您重新創建它們或顯式更改 UUID(例如使用
tune2fs
)UUID 與文件系統和分區一起使用,以便為它們提供一致的名稱(儘管名稱很長)。這避免了雙硬碟系統中 UEFI 韌體的 BIOS 列出硬碟的情況,以便您的系統磁碟
/dev/sda
在一次啟動時分配/deb/sdb
並在下一次啟動時分配(可能第一個磁碟在第二次啟動時啟動速度較慢)。使用傳統的命名方法,這將導致您的
/etc/fstab
文件受到嚴重破壞,因為您的系統會在錯誤的磁碟中查找要掛載的分區。例如,這是我的交換條目:/dev/sda4 none swap defaults 0 0
如果磁碟在引導時分配不同,我的系統不會
swap
在非系統磁碟上找到第四個類型的分區(好吧,我在筆記型電腦上,所以它沒有第二個磁碟,但是你得到點),我的交換會失敗。通過使用 UUID 標記它們,並使用其中的 UUID,
/etc/fstab
可以保證始終掛載正確的文件系統。例如:UUID=d8ab8967-f2de-4c76-902f-d8d9707c399e /media/files ext4 defaults 0 0
/media/files
無論 BIOS(或 UEFI 韌體)在引導時標記它們的順序如何,都將始終掛載具有該 UUID 的分區。