一個 UUID(通用唯一識別符)是一個 128 位元代碼,用於識別區塊(儲存)設備。首先,這是所有 UUID 的用途嗎?
設備如何取得其UUID?
它會改變嗎?例如,在每次啟動時?安裝新作業系統時?
UUID是如何產生的?是隨機的嗎?
大多數計算機沒有超過 10 個儲存設備。為什麼需要這麼多不同的名稱?
答案1
該概念描述於RFC 4122它定義了產生的各種演算法通用唯一識別符s。變體 4 使用隨機數,是最常見的。
UUID 在許多場景中都有使用,以下是一些範例:
- 標記分割區和檔案系統是 Linux 中最常見的用法
- 網路管理器使用它們來識別網路設備和連接
- Virtual Box 和 Qemu-KVM 等虛擬機管理程式使用它們來識別虛擬機
- 它們在 Microsoft Windows 中使用,被稱為GUIDs
- 它們用於內部的唯一性資料庫
- 它們用於軟體開發
在 Linux 中,所有發行版都附帶該util-linux
軟體包,其中包含uuidgen
產生 UUID 的命令。這是一個預設產生隨機 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 標記它們並使用它們,/etc/fstab
可以保證始終安裝正確的檔案系統。例如:
UUID=d8ab8967-f2de-4c76-902f-d8d9707c399e /media/files ext4 defaults 0 0
將始終掛載具有該 UUID 的分割區,/media/files
無論 BIOS(或 UEFI 韌體)在啟動時標記它們的順序為何。