如何恢复fsck后损坏的ext4文件系统?

我在软件raid5上有一个ext4文件系统。 这个文件系统在我开始用尽空间的时候已经运行了好几年了。 我在6x2T硬盘上有9T的容量。 我开始通过执行mdadm失败,删除,添加,重build,重复过程,直到我有一个更大的arrays升级到3T驱动器。 然后,我长大的容器,然后当我卸载,并试图resize2fs我被告知文件系统是脏的,需要e2fsck。

没有想到我只是做了e2fsck -y / dev / mapper / candybox,它开始喷出各种inode被删除的types的消息(不能准确记得)我杀了e2fsck,并试图重新安装文件系统备份我关心的数据。 当试图挂载在这一点上,我得到:

# mount /dev/mapper/candybox /candybox mount: wrong fs type, bad option, bad superblock on /dev/mapper/candybox, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so 

回顾一下我的旧日志,我注意到文件系统在每次启动机器时都出现这个错误:

 kernel: [79137.275531] EXT4-fs (dm-2): warning: mounting fs with errors, running e2fsck is recommended 

所以对我没有关注:(

然后,我尝试使用每个备份超级块(一个接一个)进行挂载,每次尝试都将其留在日志中:

 EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 0 failed (26534!=65440) EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 1 failed (38021!=36729) EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 2 failed (18336!=39845) ... EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 11911 failed (28743!=44098) BUG: soft lockup - CPU#0 stuck for 23s! [mount:2939] 

尝试重新启动e2fsck会导致:

 # e2fsck /dev/mapper/candybox e2fsck 1.41.14 (22-Dec-2010) e2fsck: Group descriptors look bad... trying backup blocks... candy: recovering journal e2fsck: unable to set superblock flags on candy 

在这一点上,我决定最好订购更多的驱动器,并使用ddrescue创build映像。现在两周后,我在.img文件中创build了一个映像分区。

 # ls -lh total 14T -rw-r--r-- 1 root root 14T Oct 25 01:57 candybox.img -rw-r--r-- 1 root root 271 Oct 20 14:32 candybox.logfile 

经过无数尝试,我可以在网上find我所能find的东西,所以我不能强制e2fsck在图像上做任何事情,所以我使用mkfs.ext4 -L candy candybox.img -m 0 -S并且我能够在没有日记和恢复960G的数据。 它给了各种各样的目录不存在的各种错误等,但我能够得到一些东西。 这给了我一些希望!

然后,我再次运行e2fsck,它不得不重新创buildroot inode,并给出了一个更正的组计数清单,我接受了根节点的创build,并对其他所有内容表示不接受,留下了一个完全空的文件系统。 再次运行,对所有问题都表示同意,但现在是一个“干净”但空的文件系统。

extundelete给了我0 recoverable inodes found.

而现在我又陷入了困境,除了下降到像photorec之类的东西外,我无法想出任何其他的方法,这会让我对文件系统的大小感到绝望。

我愿意重新复制原始数组中的图像,并重新开始,如果我可以得到任何build议或想法,以获得更多的文件。

我希望我可以提供已经运行的命令更详细的日志,但输出是长期滚动传递,除了什么被logging到系统日志和我的记忆是不是详细的,由于这发生的时间范围。

任何帮助是极大的赞赏!

10月27日更新

我已经完全重新复制图像,以再次开始testing,这里是迄今的输出。 复制过程:

 [root@gamma rescue]# nbd-client 172.16.10.204 2000 /dev/nbd0 Negotiation: ..size = 14307292MB bs=1024, sz=15002283540480 bytes [root@gamma rescue]# cryptsetup luksOpen /dev/nbd0 candybox Enter passphrase for /dev/nbd0: [root@gamma mnt]# pvcreate /dev/md5 Physical volume "/dev/md5" successfully created [root@gamma mnt]# pvscan PV /dev/md5 lvm2 [18.19 TiB] Total: 1 [18.19 TiB] / in use: 0 [0 ] / in no VG: 1 [18.19 TiB] [root@gamma mnt]# vgcreate vg-rescue /dev/md5 Volume group "vg-rescue" successfully created [root@gamma mnt]# lvcreate --size 15T --name lv-rescue vg-rescue Logical volume "lv-rescue" created [root@gamma mnt]# mkfs.xfs /dev/vg-rescue/lv-rescue log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB meta-data=/dev/vg-rescue/lv-rescue isize=256 agcount=33, agsize=125828992 blks = sectsz=512 attr=2 data = bsize=4096 blocks=4026531840, imaxpct=5 = sunit=128 swidth=640 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=521728, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@gamma mnt]# mount /dev/vg-rescue/lv-rescue rescue/ [root@gamma rescue]# ddrescue /dev/mapper/candybox candybox.img candybox.ddlog Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 0 B, errsize: 0 B, errors: 0 Current status rescued: 13194 GB, errsize: 1807 GB, current rate: 0 B/s ipos: 13194 GB, errors: 1, average rate: 73528 kB/s opos: 13194 GB, time from last successful read: 44 s ^Clitting failed blocks... Interrupted by user ## Network hung, had to try again here [regan@gamma ~]$ sudo nbd-client -d /dev/nbd0 Disconnecting: que, disconnect, Error: Ioctl failed: Invalid argument Exiting. [regan@gamma ~]$ sudo nbd-client 172.16.10.204 2000 /dev/nbd0 Negotiation: ..size = 14307292MB bs=1024, sz=15002283540480 bytes [root@gamma rescue]# ddrescue -r 2 /dev/mapper/candybox candybox.img candybox.ddlog Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 15002 GB, errsize: 7426 kB, errors: 60 Current status rescued: 15002 GB, errsize: 0 B, current rate: 77529 kB/s ipos: 15002 GB, errors: 0, average rate: 69297 kB/s opos: 15002 GB, time from last successful read: 0 s Finished [root@gamma rescue]# lvcreate -l 100%FREE -s -n rescue_snap /dev/vg-rescue/lv-rescue Logical volume "rescue_snap" created [root@gamma rescue]# cd .. [root@gamma mnt]# mount -o remount,ro rescue/ [root@gamma mnt]# mkdir rescue_snap [root@gamma mnt]# mount -o nouuid /dev/vg-rescue/rescue_snap rescue_snap [root@gamma mnt]# cd rescue_snap/ [root@gamma rescue_snap]# ls candybox.ddlog candybox.img 

凌乱的:

 [root@gamma rescue_snap]# mkfs.ext4 -L candy candybox.img -m 0 -S mke2fs 1.41.10 (10-Feb-2009) candybox.img is not a block special device. Proceed anyway? (y,n) y Filesystem label=candy OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 915668992 inodes, 3662666368 blocks 0 blocks (0.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 111776 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 2560000000 Skipping journal creation in super-only mode Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@gamma rescue_snap]# mount -o loop candybox.img /mnt2 [root@gamma rescue_snap]# df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 147G 138G 3.1G 98% / tmpfs 16G 5.7M 16G 1% /dev/shm /dev/md0 494M 199M 276M 42% /boot /dev/sdc1 1.8T 979G 763G 57% /mnt/macmirror /dev/sdj1 1.8T 970G 771G 56% /mnt/usbrescue /dev/mapper/vg--rescue-lv--rescue 15T 14T 1.4T 91% /mnt/rescue /dev/mapper/vg--rescue-rescue_snap 15T 14T 1.4T 91% /mnt/rescue_snap /mnt/rescue_snap/candybox.img 14T 15M 14T 1% /mnt2 ## Even though it says only 15M is used, I was able to rsync 960G to /mnt/usbrescue [root@gamma rescue_snap]# cd /mnt2/ [root@gamma mnt2]# ls -l ls: cannot access Fedora-19-x86_64-DVD: Input/output error ls: cannot access rsync_batch: Input/output error ls: cannot access shell1: Input/output error ls: cannot access New Folder (2): Input/output error ls: cannot access shell2: Input/output error ls: cannot access revolution: Input/output error ls: cannot access mail: Input/output error ls: cannot access testing: Input/output error ls: cannot access export: Input/output error ls: cannot access ben_backup_20130903: Input/output error total 160488672 drwxr-xr-x 2 regan regan 4096 Sep 3 20:16 100MEDIA drwxr-xr-x 19 regan regan 4096 Sep 26 05:18 android d?????????? ? ? ? ? ? ben_backup_20130903 -rw-rw-r-- 1 regan regan 12126 Jan 4 2013 durations.txt d?????????? ? ? ? ? ? export drwxrwxr-x 10 regan regan 4096 Dec 29 2012 family-pc_20121229 d?????????? ? ? ? ? ? Fedora-19-x86_64-DVD -rw-r--r-- 1 regan regan 72116729363 Sep 30 04:39 gamma_backup_20130928.tgz -rw-rw-r-- 1 regan regan 55606528323 Jul 27 2011 gamma_tar_20110727.tbz2 -rw-rw-r-- 1 regan regan 3839 Sep 27 2012 Good Quality2.plist -rw-rw-r-- 1 regan regan 4663 Oct 7 2012 Good Quality3.plist -rw-rw-r-- 1 regan regan 3852 Sep 26 2012 Good Quality.plist drwxr-xr-x 7 regan regan 4096 Nov 13 2012 grok d?????????? ? ? ? ? ? HardDisks -rwxr--r-- 1 regan regan 54248 Mar 16 2013 IMAG0868.jpg -rwxr--r-- 1 regan regan 51156 Mar 16 2013 IMAG0869.jpg -rwxr--r-- 1 regan regan 85912 Mar 16 2013 IMAG0870.jpg -rwxr--r-- 1 regan regan 76875 Mar 16 2013 IMAG0872.jpg -rwxr--r-- 1 regan regan 68451 Mar 16 2013 IMAG0873.jpg -rwxr--r-- 1 regan regan 59587 Mar 16 2013 IMAG0874.jpg -rwxr--r-- 1 regan regan 81232 Mar 16 2013 IMAG0875.jpg -rwxr--r-- 1 regan regan 44211 Mar 16 2013 IMAG0876.jpg -rwxr--r-- 1 regan regan 41660 Mar 16 2013 IMAG0877.jpg -rwxr--r-- 1 regan regan 36778 Mar 16 2013 IMAG0878.jpg -rwxr--r-- 1 regan regan 76964 Mar 16 2013 IMAG0879.jpg -rwxr--r-- 1 regan regan 81876 Mar 16 2013 IMAG0880.jpg -rwxr--r-- 1 regan regan 1568002 Mar 16 2013 IMAG0953.jpg -rwxr--r-- 1 regan regan 1548566 Mar 16 2013 IMAG0954.jpg -rwxr--r-- 1 regan regan 1351743 Mar 16 2013 IMAG0955.jpg -rwxr--r-- 1 regan regan 1750128 Mar 16 2013 IMAG0956.jpg -rwxr--r-- 1 regan regan 1694378 Mar 16 2013 IMAG0957.jpg -rwxr--r-- 1 regan regan 1277128 Mar 16 2013 IMAG0958.jpg -rwxr--r-- 1 regan regan 1467452 Mar 16 2013 IMAG0965.jpg -rwxr--r-- 1 regan regan 1595903 Mar 16 2013 IMAG0966.jpg -rwxr--r-- 1 regan regan 1372444 Mar 16 2013 IMAG0967.jpg -rwxr--r-- 1 regan regan 1698010 Mar 16 2013 IMAG0968.jpg -rwxr--r-- 1 regan regan 1550641 Mar 16 2013 IMAG0969.jpg -rwxr--r-- 1 regan regan 1333768 Mar 16 2013 IMAG0970.jpg -rwxr--r-- 1 regan regan 1432347 Mar 16 2013 IMAG1010.jpg -rwxr--r-- 1 regan regan 1668159 Mar 16 2013 IMAG1013.jpg -rwxr--r-- 1 regan regan 1657058 Mar 16 2013 IMAG1014.jpg -rwxr--r-- 1 regan regan 1496547 Mar 16 2013 IMAG1016.jpg -rwxr--r-- 1 regan regan 1609156 Mar 16 2013 IMAG1017.jpg -rwxr--r-- 1 regan regan 1604832 Mar 16 2013 IMAG1019.jpg -rwxr--r-- 1 regan regan 2048916 Mar 16 2013 IMAG1073.jpg -rwxr--r-- 1 regan regan 2006024 Mar 16 2013 IMAG1074.jpg -rwxr--r-- 1 regan regan 1926686 Mar 16 2013 IMAG1075.jpg -rw-r--r-- 1 regan regan 1583090 Jul 14 21:15 IMAG1565.jpg -rw-r--r-- 1 regan regan 1435031 Sep 22 05:19 IMAG1762.jpg -rw-r--r-- 1 regan regan 1531602 Sep 22 05:19 IMAG1763.jpg -rw-r--r-- 1 regan regan 1450926 Sep 22 05:19 IMAG1764.jpg -rw-r--r-- 1 regan regan 1336103 Sep 23 21:31 IMAG1765.jpg -rw-r--r-- 1 regan regan 1235885 Sep 23 21:32 IMAG1766.jpg -rw-r--r-- 1 regan regan 1224376 Sep 23 21:32 IMAG1767.jpg -rw-r--r-- 1 regan regan 1235229 Sep 23 21:32 IMAG1768.jpg drwxrwxr-x 2 regan regan 4096 Mar 9 2013 jakeanmal -rw-rw-rw- 1 regan regan 115228 Oct 29 2009 jj_nas drwx------. 2 root root 16384 Nov 8 2012 lost+found -rw-r--r-- 1 regan regan 3123877728 Nov 6 2010 luridmirror_20090806.tar.xz -rw-r--r-- 1 regan regan 2877033943 Mar 1 2013 macabre_20130301.tgz d?????????? ? ? ? ? ? mail -rw-r--r-- 1 root root 6771 Aug 10 2009 mail_mirror -rw------- 1 regan regan 21913047552 Apr 4 2013 mallorys_hdd.vbox.img d?????????? ? ? ? ? ? MSDN -rw-r--r-- 1 regan regan 8572 May 10 2010 Music d?????????? ? ? ? ? ? New Folder (2) drwxrwxrwx 24 regan regan 4096 Mar 22 2013 onyx drwxr-xr-x 231 regan regan 24576 Sep 30 09:29 ptp -rwxr--r-- 1 regan regan 483328 Jan 26 2013 putty.exe d?????????? ? ? ? ? ? revolution -rw-r--r-- 1 root root 6272757760 Oct 16 2012 root.tar d?????????? ? ? ? ? ? rsync_batch drwxrwxr-x 2 regan regan 12288 Oct 6 04:09 saber drwxrwxr-x 2 regan regan 188416 Sep 25 04:20 session_tmp d?????????? ? ? ? ? ? shell1 d?????????? ? ? ? ? ? shell2 d?????????? ? ? ? ? ? testing drwxrwxr-x 3 regan regan 4096 Oct 7 2012 tofix -rwxr--r-- 1 regan regan 64991966 Jan 2 2013 VIDEO0041.mp4 [root@gamma mnt2]# cd .. [root@gamma /]# umount /mnt2 [root@gamma /]# cd /mnt/rescue_snap/ [root@gamma rescue_snap]# e2fsck candybox.img e2fsck 1.41.10 (10-Feb-2009) Backing up journal inode block information. candy contains a file system with errors, check forced. Resize inode not valid. Recreate<y>? yes Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Root inode not allocated. Allocate<y>? yes /lost+found not found. Create<y>? yes Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: -(9252--9255) <Snip a few dozen MB of text> -(3662666237--3662666238) -3662666240 -(3662666242--3662666244) -(3662666247--3662666249) -3662666253 -(3662666255--3662666256) -3662666259 -3662666262 -3662666264 -(3662666268--3662666271) -3662666276 -3662666281 -3662666285 -3662666294 -(3662666296--3662666297) -3662666301 -3662666307 -3662666309 -3662666311 -3662666313 -3662666316 -(3662666318--3662666319) -3662666324 -(3662666326--3662666328) -(3662666331--3662666332) -3662666334 -(3662666341--3662666342) -3662666344 -(3662666346--3662666347) -3662666349 -(3662666351--3662666352) -3662666354 -3662666357 -3662666362 -(3662666366--3662666367) Fix<y>? yes Free blocks count wrong for group #0 (23517, counted=23516). Fix<y>? Free blocks count wrong (3605188902, counted=3605188901). Fix<y>? yes Free inodes count wrong for group #0 (8191, counted=8190). Fix<y>? yes Directories count wrong for group #0 (1, counted=2). Fix<y>? yes Free inodes count wrong (915668991, counted=915668990). Fix<y>? yes candy: ***** FILE SYSTEM WAS MODIFIED ***** candy: 2/915668992 files (0.0% non-contiguous), 57477467/3662666368 blocks [root@gamma rescue_snap]# mount -o loop candybox.img /mnt2 [root@gamma rescue_snap]# ls -l /mnt2 total 4 drwx------ 2 root root 4096 Oct 27 19:33 lost+found [root@gamma rescue_snap]# 

请注意,我现在在快照中有我的备份映像,所以如果有人有一些想法,我可以反复尝试理论…

我首选的文件系统数据恢复工具是UFS Explorer

我不知道LUKSencryption如何影响这个,但下载UFS Explorer的评估,并尝试正常的最佳做法。 运行它反对你的形象,看看事情似乎是更可恢复的。 该工具将为您提供目录结构的良好视图,并提供一些search数据的function。

另请参阅: 如何使用“超级块读取失败”恢复XFS文件系统