如果要更換硬碟時通常是會分割硬碟及更換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

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料