歡迎大家留言討論交流,共同學習
背景介紹
由于近期固態硬盤國產化,迎來了大降價。作者一激動就買了一個2T的固態硬盤準備升級一下電腦。(買之前記得確認下主板是否支持)
電腦現狀
電腦目前安裝的是windows10 + linux(manjaro)雙系統,然后有兩塊硬盤:128G的固態硬盤ssd,1T的磁盤hd。之前雙系統安裝在ssd盤上,然后磁盤放的是windows的D+E盤,以及linux的 home分區。 由于之前的雙系統安裝比較費勁,同時使用也比較久,不想因為換硬盤重裝系統,因此就研究了一下如何不重裝系統升級替換硬盤。
當前雙系統現狀
筆者雙系統安裝的方案是UEFI + GPT方案,然后通過linux的grub2 分區引導雙系統啟動。
系統備份與恢復原理
首先要明白一點,我們是無法在系統運行狀態對系統磁盤進行完整備份的。因為此時系統可能正在讀寫修改相關數據,一邊修改一邊復制肯定是不可行的。 因此我們就需要借助一些U盤啟動盤或者其他第三方啟動盤啟動,然后將磁盤進行數據備份。
由于本人電腦老系統盤是SSD,而主板只有一個SSD插槽,所以只能采用方案二,通過移動硬盤作為中轉盤曲線救國。
開始替換
準備工作
- cloneZilla啟動盤:cloneZilla(再生龍):https://clonezilla.nchc.org.tw/intro/
將cloneZilla系統安裝到一個u盤上,如果是UEFI方式啟動,只需要將軟件簡單的解壓到u盤上即可。
- (可選)linux(manjaro)啟動盤
由于我這邊除了要將一塊系統盤拷貝到新硬盤上,還要將老的hd硬盤數據也同步到新磁盤上。因此需要對新硬盤進行分區調整。如果你只涉及一塊硬盤的遷移,理論上無需該步驟。
開始遷移
- 重啟進入cloneZilla啟動盤,進行硬盤備份
由于我的主板目前只能安裝一個固態硬盤,因此需要先將老的ssd硬盤整體備份到中轉磁盤上。注意中轉的目標磁盤分區會被完全格式化并覆蓋。
此時我們在中轉盤里就有個備份的image文件。
- 拷貝到新的ssd硬盤
將舊的系統盤取下來,新的固態硬盤安裝到主板上,然后繼續使用cloneZilla啟動,選擇恢復到硬盤的功能,即可將原來的系統盤恢復到新的硬盤上。
- 里程碑1 驗證系統復制情況
到上一步理論上我們就可以用新的硬盤啟動了。我們可以進入系統啟動項界面,選擇新的硬盤作為啟動項,進去驗證一下兩個系統是否可以正常啟動進入。
數據盤合并到新硬盤
由于我最終想要達到的效果是如圖所示,因此在執行完系統盤遷移后,我需要通過linux啟動盤啟動,對新硬盤分區進行重新調整,給數據盤遷移留出新的分區空間來。然后再次使用cloneZilla將數據盤遷移過來。
- linux啟動盤啟動并調整分區
通過linux啟動盤啟動,然后通過gparted軟件(我的manjaro系統自帶分區軟件KDE parted manager)對分區進行調整。留出和舊數據盤一樣個數的分區。
之所以必須用啟動盤啟動調整,原因和上邊表述的一樣。系統無法一邊運行一邊調整自己的分區。
- 再次使用cloneZilla進行數據盤拷貝工作
這一次我這里使用了cloneZilla的分區到分區的功能,直接將數據盤的分區,依次拷貝到新ssd的目標分區。
自此,整個系統遷移工作就完成了。
其他問題
由于我是遷移完系統盤后重新調整了相關分區,因此遷移完之后,使用命令fdisk /dev/nvme0n1
時,會提示分區表順序和其在磁盤順序不一致:Partition table entries are not in disk order。
上邊的提示不會有實際影響,但是也可以使用 fdisk的專家模式 fix 順序。
fdisk /dev/sda
Command (m for help): x
Expert command (m for help): m
Command action
f fix partition order
r return to main menu
w write table to disk and exit
Expert command (m for help): f
Done.
Expert command (m for help): r
Command (m for help): w
雖然網上說是如果你的系統啟動使用分區uuid的話不會有實際影響,但是我這邊重啟后發現會進入grub的rescue模式。
因此還是建議在執行完上述命令后,更新一下grub,具體原理由于相關知識有限,尚未明確。
update-grub
grub-install
參考資料
https://clonezilla.org/clonezilla-usage/clonezilla-live-usage.php