真是傻逼一个啊,从网上看了资料,直接复制别人的命令,而没有理解,造成全部磁盘的文件丢失了!!
起因:想测试下linux下磁盘的性能,找到一篇傻逼的不负责任的文章,更多是自己傻逼!
fio -filename=/dev/sdb1 -direct=1
开始执行 read 测试,没有问题,然后执行 write 测试,测试的是 / 所在的分区,显示写入速度只有 0
df -h 查看,所有被 fio 查过的6个磁盘,使用率显示 100%,然后想执行 reboot,提示 找不到 reboot。按机箱重启按钮,启动不起来,才意识到出大问题了。
于是搜 fio 命令参数, fio -filename=/dev/sdb1 这个的意思是从 分区 sdb1 的第一个扇区开始写入随机数据,去判断这个磁盘的写入速度。 网上大部分文章都是这么写的,不知道坑死多少人!!!
百度搜 “fio 磁盘丢失”,发现几个人差不多的问题。于是开始研究 ext4 分区的结构。
http://www.cnblogs.com/xuczhang/archive/2010/02/26/1674111.html
搜索 “ext4 分区恢复”,看到一个 testdisk 工具
http://www.cgsecurity.org/wiki/TestDisk_Download
https://www.cgsecurity.org/testdisk-7.1-WIP.linux26-x86_64.tar.bz2
解压执行 ./testdisk_static 有个 superblock 菜单,显示出了找到的superblock
superblock 819200, blocksize=4096 []
superblock 884736, blocksize=4096 []
superblock 1605632, blocksize=4096 []
superblock 2654208, blocksize=4096 []
superblock 4096000, blocksize=4096 []
superblock 7962624, blocksize=4096 []
superblock 11239424, blocksize=4096 []
superblock 20480000, blocksize=4096 []
superblock 23887872, blocksize=4096 []
superblock 71663616, blocksize=4096 []
mke2fs -n /dev/sdb1
显示 Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000
第一个备份是在 32768,但是testdisk 没有发现,说明被损坏了。
fsck.ext4 -y -B 4096 -b 819200 /dev/sdb1
-y 表示全部问题自动按y
-B block的大小,各人磁盘不同,在 mke2fs -n /dev/sdb1 有显示
-b 备份的superblock的位置