Linux和Windows下硬盤/分區對拷和硬盤/分區寫0是怎麼回事

  • 2020 年 3 月 13 日
  • 筆記

技術人能做到這一點,已經是巔峰了

微盟刪庫回顧:https://mp.weixin.qq.com/s/MFhnc4qPpxxxZY1O-uTk1

裏面提到的「硬盤對拷」怎麼回事?其實並不難,只是操作的時候要非常小心。下面以實際例子來讓你get Linux和Windows下硬盤/分區對拷和硬盤/分區寫0是怎麼回事。

磁盤操作需要膽大心細、快照先行

1、卸載掉若干個磁盤,又掛載上若干個新的磁盤,怎樣操作穩妥一些

有這樣一種情況

Windows系統

磁盤0:系統盤

磁盤1:數據盤1

磁盤2:數據盤2

當從操作系統脫機磁盤1並從控制台卸載磁盤1後,又添加一塊新的磁盤,那這個新磁盤在磁盤管理器里是磁盤1/磁盤2/磁盤3?而原來的磁盤2此時是磁盤1還是磁盤2?

這種情況不建議直接做磁盤分區相關操作,建議重啟後查看磁盤管理器再操作。

經驗:在磁盤管理器界面,操作之前請刷新頁面,這樣可以降低誤操作和出現異常的風險。

2、包年包月雲盤用一段時間後,快照≥文件系統大小不划算的情況

這種問題的解決思路:

①對原盤做快照,留待觀察一段時間以備不時之需,記作"快照old"

②購買新的按量雲盤,把文件系統里的數據拷貝過去,驗證數據完整性沒有問題後對新盤做快照,記作"快照new","快照new"肯定比"快照old"小

③再次review對原盤的快照是否做成功,最好是用步驟①完成的快照新建一塊按量雲盤review下

④對原盤所有扇區做寫0操作,這樣操作後,原盤相當於一塊未初始化的新盤,對原盤重新分區,再把步驟①中新盤文件系統里的數據拷貝回原盤,這樣原盤再做快照就比原來的小一些。也可以不用對原盤做寫0操作,直接拿新盤對拷到原盤(需確認源和目標的扇區信息完全一致)

磁盤寫0的注意事項:

Linux里實現的命令比較簡單

  • 假如需要寫0的盤是/dev/vdb

執行這條命令就可以,執行前一定做好備份,沒有後悔葯

dd if=/dev/zero of=/dev/vdb耐心等待完成後console會有回顯

執行hexdump /dev/vdb如下圖,跟新盤執行hexdump一樣的效果

  • 假如新盤是/dev/vdc 、原盤是/dev/vdb,且新盤裡已經複製好數據,那用新盤覆蓋原盤的命令如下,執行前一定做好備份

dd if=/dev/vdc of=/dev/vdb

以上2種情況舉例如下:

新盤vdb我剛拿到時,執行hexdump /dev/vdb如上圖,全0

我對vdb分了相同大小的2個分區vdb1、vdb2,分別格式化成ext3和ext4

在vdb1里放了111文件

在vdb2里放了222文件

執行dd if=/dev/vdb1 of=/dev/vdb2 相當於用vdb1覆蓋vdb2,建議先umount再執行dd

blkid查看效果:vdb2的分區類型會從ext4變成ext3,並且裏面的文件會從222變成111

但還是有一些值得注意的地方:

①vdb1、vdb2的UUID變一樣了

②vdb2並沒有vdb1那樣的SEC_TYPE="ext2"

2個分區的uuid一樣的話會有潛在問題,如果非得用硬盤/分區對拷,那一定要記得更新uuid

更新分區uuid為uuidgen命令新生成的或更新為原來的

tune2fs /dev/vdb2 -U $new_uuid或$old_uuid

  • Windows磁盤寫0注意事項

一個沒有初始化的磁盤裡就真的沒有數據嗎?非也,打開bootice這個軟件→實用工具→磁盤填充→填充對象:物理磁盤、起始扇區=0要填充的扇區數目=總扇區數、以00填充→

點開始填充,會告知失敗,馬上你會發現磁盤分區丟失、顯示磁盤未初始化

好在用diskgenius可以找回磁盤分區、分區里數據完好無損。

操作中,出現了一次下面這種情況,我後來沒有復現出來,但是有截圖為證

注意看:C盤在HD0下,E盤在HD1下,找回的D盤分區是孤立的,它本該在磁盤HD2下才對。這種情況我沒有找到復現步驟,但我知道,因為D盤分區不在HD2下,一重啟機器,這個D盤分區應該是會消失的,果然我重啟機器後D盤分區就不見了。用diskgenius重新找了一遍,D盤又回到HD2下面了,然後再重啟機器觀察分區還在、數據還在。

總之,第三方磁盤分區軟件操作不當或軟件本身存在bug可能會導致丟失分區表。

這時再來看這個問題:如果磁盤顯示未初始化,難道磁盤裏面就真的沒有數據嗎?不盡然。

Windows下我試了很多工具,目前diskgenius自帶的清除扇區數據的功能我試用了,真的是全部寫0,寫0完成後,打開磁盤管理器時提示初始化。

右擊點「清楚扇區數據」

寫0完成後,在HD2上右擊,點"打開16進制扇區編輯"查看,如下圖,全0,跟新盤一模一樣

寫0完成後打開磁盤管理器會提示初始化