會硬盤分區後uuid會變動,導致linux掛載硬盤出錯。
什麼是uuid?
UUID,全稱Universally Unique Identifier
它是一個128位,16字節的值,並確保在時間和空間上唯一。它把硬件地址、時間以及隨機數結合在一下起來確保其唯一性的。一般情況下,生成算法用計算機網卡的地址和一個60位的timestamp生成,時間是以100ns為時間間隔。例如,一台300PL 6862的計算機,主板集成的網卡的MAC地址為00-04-AC-2E-B7-DC,而UUID的最後六個字節也會是0004AC2EB7DC.
uuid會在硬盤分區調整後,發生變化
查各分區對應的uuid ls -l /dev/disk/by-uuid
修改linux的uuid分配表 sudo vi /etc/fstab
Ubuntu現在默認使用UUID值表示硬盤分區,在/etc/fstab中我們很容易看到:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/hda1
UUID=6286feb3-3037-4893-b0f1-8c9edba3c447 / ext3 defaults,errors=remount-ro 0 1
# /dev/hda5
UUID=45bdb727-57db-46c2-8b33-e2dc813c0e18 /media/mydoc ext3 defaults 0 2
# /dev/hda7
UUID=1bfc17a2-b39c-451b-8ce8-2b3bc13bf6e8 none swap sw 0 0
/dev/hdd /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/ /media/floppy0 auto rw,user,noauto 0 0
在GRUB啟動項中也有這樣的表示
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=6286feb3-3037-4893-b0f1-8c9edba3c447 ro
quiet splash locale=zh_CN
與以前使用hda*相比,使用UUID的好處是只要分區大小沒有調整,它的UUID值就是固定的,也就是說,即使把其他分區全刪掉,也不影響這一分區的掛載。
那麼,如果分區改變了怎麼辦?有時侯需要調整分區大小,這樣它的UUID值也就發生了變化,此時需要在/etc/fstab中將該分區的UUID值修改為當前值,否則無法自動掛載。
查詢分區UUID值可以使用下面的命令:
ls -al /dev/disk/by-uuid
結果是如下的形式:
總用量 0
drwxr-xr-x 2 root root 100 2007-04-06 20:09 .
drwxr-xr-x 5 root root 100 2007-04-06 20:09 ..
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 1bfc17a2-b39c-451b-8ce8-2b3bc13bf6e8 -> ../../sda6
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 6286feb3-3037-4893-b0f1-8c9edba3c447 -> ../../sda1
lrwxrwxrwx 1 root root 10 2007-04-06 20:09 8c6640b5-9c65-44d7-8f09-771b8c589922 -> ../../sda5
這是我的硬盤分區的UUID,可見,sda5調整大小後,UUID發生了變化,將fstab中對應的部分該掉,各種硬盤格式參數如下:
#ext3
# Entry for /dev/sda3 :
UUID=b5105255-3d75-46bf-8836-ca69f3ae6ee6 / ext3 defaults,errors=remount-ro 0 1
# ntfs
# Entry for /dev/sda1 :
UUID=2290D8F490D8D001 /media/sda1 ntfs-3g defaults,locale=zh_CN.UTF-8 0 1
# fat 32
# Entry for /dev/sda6 :
UUID=471E-29DD /media/sda6 vfat defaults,utf8,umask=007,gid=46 0 1
# swap
# Entry for /dev/sda8 :
#UUID=D2B82509B824EDA3 none swap sw 0 0