- 慘案發生經過
a. 要把一顆 M 牌的 500G SSD (上面是一個 Windows 10 NTFS) 弄到 I 牌的 480G SSD
b. 原來想用 dd
把原來的 SSD dump 出來再硬給他塞到新的 SSD 上
c. 結果空間不夠,也讀不到 partition
d. 後來想用 gparted
處理,結果發現原來的有做休眠,還有 MFT/Bitmap 一堆錯,無法在 GUI 裡頭縮小 partition
e. 用 usb 界面接到一台 Windows 10 修復他 (chkdsk /f /r
)
f. 終於可以縮小 partition 了
g. 用 clonezilla 備份還原 (因為如果還要 dd
的話又是 500G 了)
h. 他說我的 GPT/MBR 有問題,不給備份
i. 用 gdisk
修復,GG 了
j. 然後想想,好吧,用 dd
倒回原來的 SSD
k. 啥,檔案空間已滿??? (原來的路回不去了)
l. 我現在有的就是一個壞的 SSD,一個不知道能不能用的 dd
image,一個新的 SSD 但檔案系統有問題
- 最後的 workaround
a. 把 dd
image 丟到 loop
上面 (先前要備份這個 dd
image)
sudo losetup /dev/loop0 /path/to/disk.img
b. 把這個 device 接到 pve 的 VM 裡 (該 Host 是原來作 dd
的機器)
sudo qm set 100 -virtio2 /dev/loop0
c. 在 VM 100 那台先跑個 chkdsk
修復
d. 讓 /dev/loop0
脫離 VM
e. gparted /dev/loop0
f. 讓 partition 變小
g. 備份還原 MBR (/dev/sdi
是新硬碟)
dd if=/dev/loop0 of=/dev/sdi bs=446 count=1
d. 讓 /dev/loop0
的 partition 跟 /dev/sdi
配置差不多 (因為有變小),那些系統內建的不要變大小
e. ntfsclone -s -o /media/BACKUP/backupX.img /dev/loop0pX
依序備份
f. ntfsclone -r -O /dev/sdiX /media/BACKUP/backupX.img
依序還原
g. 用 USB 插到 Windows 看看檔案還在不在
h. 插回原來的機器開機看看
i. 沒問題就能把 loop0
拿掉了
sudo losetup --detach /dev/loop0