FIO命令一般用于测裸盘的IO速度,有数据的硬盘不能用!!!
一、背景
由于任务需要测试硬盘的IO随机读取和写入速度,因此上网找到了FIO命令,搜出来都是怎么用这个命令去测试硬盘,而并没有人强调这个FIO命令对硬盘的写入是覆盖写入,意思就是写入的地方,原先硬盘那里的数据便被破坏了,我在4个硬盘上无脑执行了FIO,结果就悲剧了,硬盘使用变100%,容量变64z。
二、处理过程--数据恢复
1、将磁盘卸下来
umout /dev/sdb1
( 假如卸载不下,可重启,必检测出硬盘有问题,选S跳过 )
2、硬盘检测和修复工具--testdisk
testdisk可检测所有磁盘(无论磁盘有无挂载),以下为安装过程:
wget https://www.cgsecurity.org/testdisk-7.1-WIP.linux26-x86_64.tar.bz2tar -jxvf testdisk-7.1-WIP.linux26-x86_64.tar.bz2# 执行testdisk,(需要sudo权限):sudo ./testdisk-7.1-WIP/testdisk_static
选择Create,创建必记录日志。
以上为检测出的硬盘,找到已被损耗的硬盘,并进入。
此步为自行检测磁盘的分区类型,默认就好。
点击Analyse分析,进入后点击quick search
搜索到内容后,p进入
发现并没有文件,提示文件系统已经被破坏,此时就必须进行磁盘修复了:
拿q回到Analyse,选择下一项Advanced进入,选择SuperBlock:
可看到下方有修复文件系统的命令fsck.ext4,可通过man fsck.ext4详细了解这个命令(当然我已经了解过了,毕竟已经踩了一个大坑,不应该再坑里继续跳坑)。
命令行执行:
fsck.ext4 -y -B 4096 -b 819200 /dev/sdb1# -y 所有交互默认yes,代替图中的-p选项# -B block的大小,各人磁盘不同,在 mke2fs -n /dev/sdb1会显示# -b superBlock位置,可一个个试
三.处理结果
4个盘都执行了修复,其中两个盘完完全全复原(EFI GPT),而另外两个盘(Inter)修复出来还有一点瑕疵,下面为修复出来的文件截图:(利用testdisk查看)
testDisk查看的到文件,说明磁盘已经修复完整,则可将磁盘挂载查看:
mount -t ext4 /dev/sdb1 /ssd1
挂载后查看文件,进入文件夹前需要将文件夹的权限修改为你,不然进不去
sudo chown you:you lost+found
再将里面的文件权限修改为你:
sudo chown you:you *
再执行du -h,发现在列出文件的过程,就会看到你的文件啦(或者配个samba,在windows下用鼠标点击更加直观),接下来只需要将这些怪胎改个名字即可。