如果要更換硬碟時通常是會分割硬碟及更換sda的代表
fdisk本篇不介紹,以後再打一篇講
分割完及格式化後就要來掛載硬碟
cat /etc/fstab
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=d5e37ecd-75ba-4e9c-a212-fb53891deafb / ext4 acl,errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=abe3d527-aaf4-4cec-ad57-b921a31d56d3 none swap sw 0 0
從上面的資料來看我原本的硬碟uuid是
d5e37ecd-75ba-4e9c-a212-fb53891deafb
首先先解釋一下什麼是UUID:
UUID,Universally Unique Identifier,通用唯一識別碼,詳細請看wiki。
這是有點類似md5、或者hash(雜湊)的東西,是用來對某一組資料作數學運算,
而求得由英文與數字,搭配連接號所產生的唯一可以辨識這組資料的字串。
查詢uuid的指令為:
ls -l /dev/disk/by-uuid
lrwxrwxrwx 1 root root 10 5月 18 23:24 abe3d527-aaf4-4cec-ad57-b921a31d56d3 -> ../../sda5 lrwxrwxrwx 1 root root 10 5月 18 23:24 dbqasdg27-aee4-43ed-aad7-b135agdbee3 -> ../../sda2 lrwxrwxrwx 1 root root 10 5月 18 23:24 d5e37ecd-75ba-4e9c-a212-fb53891deafb -> ../../sda1
sda2是新的硬碟已經用dd指令將整個sda1的內容copy到裡面了內容完全一模一樣
vi /etc/fstab
將sda1的uuid替換掉即可
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=dbqasdg27-aee4-43ed-aad7-b135agdbee3 / ext4 acl,errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=abe3d527-aaf4-4cec-ad57-b921a31d56d3 none swap sw 0 0
存檔後,重新開機即可完成硬碟更換作業
從前的Grub (或其他開機引導程式,目前Windows的Boot Manager就是這樣用),
是利用磁碟內的的Jumper和分割區順序來判斷由哪個分割區啟動,
ex: (hd0,1) = 編號零的硬碟中編號一的分割區,
但是這樣會有個小問題,如果新接了一顆硬碟,而更動了Jumper,
這樣硬碟的順序就會改變,而bootloader不知道你已經改了它,
所以還是會傻傻的從錯誤的地方開機,導致開機失敗,
雖然這種問題不難修,但是久了也會惹人厭,
於是就產生了用 UUID 識別分割區的辨識方法,
這邊的應用,就是使用硬碟分割區的特徵 (比方說容量大小、建立日期等等),
產生出唯一可正確辨識該分割區的字串組,
在Linux內用一個資料夾 (也就是/dev/disk/by-uuid),
以 UUID 為連結名稱,再經由 軟連結 (Soft Link) 的方式,連結至真正的硬碟,
這樣因為這組資訊是獨一無二的,只要開機時對分割區再進行一次演算,
就可以知道真正的開機碟是哪一個,而不會發生因為Jumper更動,而開機失敗的情況。
參考資料:
http://blog.xuite.net/cpshisc/blog/22037044