
運行 FreeBSD 的伺服器自 2004 年左右開始投入生產。最近發生斷電,重新啟動後顯示錯誤訊息「...檔案系統已滿」。
當時它位於 40 GB 硬碟上,後來拿了一個 1 TB 來取代它。使用 dd 複製驅動器,然後嘗試 Gparted,但它似乎無法識別檔案系統。
問題 - 複製舊磁碟機並調整分割區大小以使用新磁碟機的全部空間的最簡單方法是什麼?
答案1
您需要使用gpart
(而不是 gparted)建立分割區,然後使用newfs
.然後使用dump | restore
或rsync
將資料複製到新磁碟。最後,用於gpart
確保磁碟機上有引導代碼。有關更多詳細信息,請參閱這些命令的手冊頁。
但要注意的是,考慮到這個問題,我猜作業系統自 2004 年以來就沒有更新過,並且不再受支持,也沒有獲得安全性更新。所以實際上,您最好在新磁碟上安裝新系統,然後使用dump | restore
或rsync
或cp
手動將相關資料複製到新磁碟。我不建議將 2004 年的作業系統重新投入生產。
答案2
我只是這樣做了,儘管磁碟大小相同,但/檔案系統稍小。我很確定該過程適用於更大的磁碟。
# newdisk=ada1
# echo $newdisk
ada1
# gpart create -s GPT $newdisk
# gpart add -t freebsd-boot -i 1 -a 4K -s 512K -l gptboot ${newdisk}
ada1p1 added
# gpart bootcode -p /boot/gptboot -i 1 ${newdisk}
partcode written to ada1p1
# gpart add -t freebsd-ufs -a 4K -s 70G -i 2 -l fbsdroot $newdisk
ada1p2 added
# gpart add -t freebsd-swap -a 4K -i 3 -l fbsdswap $newdisk
ada1p3 added
# gpart show
=> 34 156249933 ada0 GPT (75G)
34 1024 1 freebsd-boot (512K)
1058 148896768 2 freebsd-ufs (71G)
148897826 7352140 3 freebsd-swap (3.5G)
156249966 1 - free - (512B)
=> 40 156301408 ada1 GPT (75G)
40 1024 1 freebsd-boot (512K)
1064 156300384 2 freebsd-ufs (75G)
=> 40 156301408 diskid/DISK-5JVD21RN GPT (75G)
40 1024 1 freebsd-boot (512K)
1064 146800640 2 freebsd-ufs (70G)
146801704 9499744 3 freebsd-swap (4.5G)
# newfs -U /dev/ada1p2
...
# mkdir /mnt/newsys
Reboot system into single-user mode; it should come up read-only
# mount /dev/ada1p2 /mnt/newsys
# cd /mnt/newsys
dump -0 -f - /dev/ada0p2 | restore -r -Dv -f -
我原來的系統盤有不可恢復的壞塊;新系統很乾淨。我很幸運,因為壞塊位於 /var/db/freebsd-update/files/ 中未使用的檔案中,並且不再需要整個目錄(從 6 個月前的系統更新備份)。