如何在使用fio写入之后恢复磁盘

问题描述:

我正在使用CentOS 6.6版。今天,我想在/dev/sdc上测试磁盘写入速度到500 GB的磁盘。如何在使用fio写入之后恢复磁盘

我用这个命令:

fio -filename=/dev/sdc -direct=1 -iodepth 1 -thread -rw=randwrite \ 
    -ioengine=psync -bs=16k -size=1G -numjobs=5 -runtime=15 -group_reporting \ 
    -name=mytest 

当我使用命令df -h看看盘,我得到

Filesystem   Size Used Avail Use% Mounted on 
9.0Z 9.0Z  0 100% /data 

/data,我用ls,但我不能看到任何数据。该磁盘是ext4。

我该如何恢复它?

+0

'/ dev/sdc'挂载在'/ data'上吗?挂在'/'上吗?因为如果是这样的话,指定'-filename =/dev/sdc'和'-rw = randwrite'会将所有的东西都用随机位破坏掉,这使得恢复几乎不可能。抱歉。 – PaSTE

+0

@PaSTE我mount了/ dev/sdc/data。对我没有任何希望吗?我的天啊! – taoyantu

+0

卸载文件系统,然后使用/ dev/sdc上的grep查看是否可以找到之前存在的任何数据。如果有数据,至少可以将其恢复到另一个磁盘上。 –

当您告诉fio使用1 GB随机数据写入/dev/sdc时,您可能已经重写了分区表(以及磁盘上第一个物理分区的一些重要部分)。更可能的是,你永远不会再看到第一个1GB。但是,如果你小心并且幸运,你可能能够恢复其他499 GB。

在开始搞乱磁盘之前,应该将数据原样备份到某个外部驱动器并保持安全。使用dd等工具来确保从驱动器复制原始位,而不是以任何方式将驱动器作为块设备进行安装。

恢复分区表可能无法通过自动方式进行,但如果您知道以前如何分区磁盘,则可以使用parted以相同方式重新分区磁盘。例如,如果整个磁盘包含一个ext4格式的分区,则可以执行parted -s /dev/sdc -- mklabel gpt mkpart primary ext2 0 -1s

一旦分区表已被重建但在您创建新分区之前,请尝试运行fsck.ext4。您可能需要指定-b标志并将程序指向可用的备份超级块,因为主超级块可能位于被覆盖的第一个GB磁盘中的某处。对于大多数现代系统,备份超级块通常在块32768处,但是ymmv。

作为最后努力(如果你感觉幸运的话),make a new ext4 filesystemmkfs.ext4 -S分区试图重建超级块而不擦除任何东西。

,并确保readthemanpages,并保持该备份方便,所以你可以重新开始。如果这些建议不工作或导致更多的数据损坏!