問題描述
在 Linux 虛擬機內,將附加的多塊數據磁盤以設備名(/dev/sdxx)的方式創建文件系統,并將之寫入 /etc/fstab 文件中實現啟動自動掛載功能。但是在虛擬機重啟之后,會隨機出現設備名和實際的文件系統不一致的問題。
問題分析
由于 Azure 虛擬機在啟動過程中,隨機分配數據磁盤的 SCSI 地址,導致了數據磁盤在附加后,獲取的 SCSI 地址會隨機變化。比如原來的數據磁盤 A,初始的設備名為 /dev/sdc ,在重啟之后,會隨機的被分配為 /dev/sdd ,原來的數據磁盤 B,初始的設備名為 /dev/sdd,在重啟之后,被分配為 /dev/sdc。這樣的話,如果客戶通過設備進行自動掛載的話,那么會看到掛載點下的實際數據是不一致的。
解決方案
為了避免上述的設計導致自動掛載時出現故障,建議使用 UUID 來代替設備名。不同文件系統的 UUID 是不會隨著重啟而改變的。這樣,就可以確保每次自動掛載都能將正確的文件系統掛載到正確的掛載點。
按照以下命令獲取文件系統的 UUID :
復制
# blkid
/dev/sdb1: UUID="f788cc09-fad5-4df9-9360-ffe39d82****" TYPE="ext4"
/dev/sda1: UUID="9bb6e11f-4697-476a-9e71-0ebfff61****" TYPE="xfs"
/dev/sda2: UUID="445d96a9-aeb1-4623-a2db-be133bdf****" TYPE="xfs"
按照以下格式寫入 /etc/fstab 文件 :
復制
# cat /etc/fstab
…
…
UUID=445d96a9-aeb1-4623-a2db-be133bdf**** /? ? ? ? ? ? ? ? ? ? ? xfs? ? defaults? ? ? ? 0 0
UUID=9bb6e11f-4697-476a-9e71-0ebfff61**** /boot? ? ? ? ? ? ? ? ? xfs? ? defaults
立即訪問http://market.azure.cn