真是傻逼一個啊,從網上看了資料,直接複製別人的命令,而沒有理解,造成全部磁盤的文件丟失了!!
起因:想測試下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的位置