技术人能做到这一点,已经是巅峰了
微盟删库回顾: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 or 磁盘3?
这种情况不建议直接做磁盘分区相关操作,建议重启后查看磁盘管理器再操作。
经验:在磁盘管理器界面,操作之前请刷新页面,这样可以降低误操作和出现异常的风险。
2、包年包月云盘用一段时间后,快照≥文件系统大小不划算的情况
这种问题的解决思路(待验证):
①对原盘做快照,留待观察一段时间以备不时之需,记作"快照old"
②购买新的按量云盘,把文件系统里的数据拷贝过去,验证数据完整性没有问题后对新盘做快照,记作"快照new","快照new"肯定比"快照old"小
③再次review原盘的快照是否做成功,最好是用步骤①完成的快照新建一块按量云盘review下
④买一块相同大小的新盘进行相同的分区操作后,用diskgenius对原盘进行分区对拷,把原盘block变成新的没有存放过文件的block,这样操作后,再把步骤②中新盘文件系统里的文件拷贝回原盘,这样原盘再做快照就比原来的小一些。也可以直接拿②中已经拷贝过文件的新盘分区对拷到原盘分区(需确认源和目标的扇区信息完全一致)
磁盘写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 conv=noerror,sync bs=4k
以上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
但还是有一些值得注意的地方:
①vdb2的UUID变得跟vdb1一样了
②vdb2并没有vdb1那样的SEC_TYPE="ext2"
2个分区的uuid一样的话会有潜在问题,如果非得用硬盘/分区对拷,那一定要记得更新uuid
更新分区uuid为uuidgen命令新生成的uuid或更新为原来的uuid
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完成后打开磁盘管理器会提示初始化