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完成后打开磁盘管理器会提示初始化