LINUX.ORG.RU

Избранные сообщения XopmoH

Восстановление файлов с повреждённой F2FS

Форум — General

Всем привет! На свою голову решил попробовать файловую систему F2FS, создал раздел на 250 гб на своём SSD, поставил на него арч, вроде всё летало.. Решил перенести все свои файлы на раздел с F2FS, не оставив резервных копий. Потом я решил создать SWAP-файл на этом разделе ибо оперативки в ноуте всего 2 гб... Создавал файл через dd + mkswap, но после команды swapon программы перестали запускаться, при попытке выполнить любую команду в терминале был segfault.. Короче у меня такие же симптомы были когда я по приколу решил выполнить rm -rf /* Решил кнопкой reset перезапустить ноут и в итоге попал в панель восстановления initramfs... Оказалось что файловая система почему-то повредилась и fsck.f2fs разных версий отказывается восстановить раздел. Так как сама ФС создавалась в f2fs-tools версии 1.13.0, то показываю результат работы fsck.f2fs именно этой версии:

dev@dev-laptop:~$ sudo fsck.f2fs -d 10 -f /dev/sda1
Info: Debug level = 10
Info: Force to fix corruption
Info: [/dev/sda1] Disk Model: Samsung SSD 850 
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 515735552 (251824 MB)
Info: MKFS version
  "Linux version 5.3.1-arch1-1-ARCH (builduser@heftig-3999379) (gcc version 9.1.0 (GCC)) #1 SMP PREEMPT Sat Sep 21 11:33:49 UTC 2019"
Info: FSCK version
  from "Linux version 5.3.0-20-generic (buildd@lgw01-amd64-029) (gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)) #21-Ubuntu SMP Wed Oct 23 16:20:37 UTC 2019"
    to "Linux version 5.3.0-20-generic (buildd@lgw01-amd64-029) (gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)) #21-Ubuntu SMP Wed Oct 23 16:20:37 UTC 2019"
Info: superblock features = 0 : 
Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000

+--------------------------------------------------------+
| Super block                                            |
+--------------------------------------------------------+
magic                         		[0xf2f52010 : 4076150800]
major_ver                     		[0x       1 : 1]
volum_name                    		[]
minor_ver                     		[0x       d : 13]
log_sectorsize                		[0x       9 : 9]
log_sectors_per_block         		[0x       3 : 3]
log_blocksize                 		[0x       c : 12]
log_blocks_per_seg            		[0x       9 : 9]
segs_per_sec                  		[0x       1 : 1]
secs_per_zone                 		[0x       1 : 1]
checksum_offset               		[0x       0 : 0]
block_count                   		[0x 3d7b000 : 64466944]
section_count                 		[0x   1ea67 : 125543]
segment_count                 		[0x   1ebd7 : 125911]
segment_count_ckpt            		[0x       2 : 2]
segment_count_sit             		[0x       a : 10]
segment_count_nat             		[0x      6e : 110]
segment_count_ssa             		[0x      f6 : 246]
segment_count_main            		[0x   1ea67 : 125543]
segment0_blkaddr              		[0x     200 : 512]
cp_blkaddr                    		[0x     200 : 512]
sit_blkaddr                   		[0x     600 : 1536]
nat_blkaddr                   		[0x    1a00 : 6656]
ssa_blkaddr                   		[0x    f600 : 62976]
main_blkaddr                  		[0x   2e200 : 188928]
root_ino                      		[0x       3 : 3]
node_ino                      		[0x       1 : 1]
meta_ino                      		[0x       2 : 2]
cp_payload                    		[0x       0 : 0]
crc                           		[0x       0 : 0]
version                       Linux version 5.3.0-20-generic (buildd@lgw01-amd64-029) (gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)) #21-Ubuntu SMP Wed Oct 23 16:20:37 UTC 2019
Info: total FS sectors = 515735552 (251824 MB)
	Invalid CP CRC offset: 0
	Invalid CP CRC offset: 0
[f2fs_do_mount:3273] Can't find valid checkpoint

Новее версии f2fs-tools просто нет, я собирал последнюю мастер-версию с kernel.org Я проверил, файлы в этом разделе вроде на месте, с нодами вроде тоже всё ок... Я написал небольшой скрипт на php для проверки наличия в этом разделе любой ценной информации, вот его вывод:

root@dev-laptop:~# ./why.php /dev/sda1 10
00000000000000000000

..........


ADDR = 0x400 [1024]
1020f5f201000d0009000000030000000c0000000900000001000000010000000000000000b0d7030000000067ea0100d7eb0100020000000a0000006e000000f600000067ea0100000200000002000000060000001a000000f6000000e2020003000000010000000200000012cef9f64385490b85f7b592a115650600000000000000000000

 .............................g........n......g...........................CIe..........


ADDR = 0x87c [2172]
240000006d70000000000000776d0000000000006f670000000000006a7000000000000061766900000000006d347600000000006d347000000000006d6b7600000000006d6f7600000000007765626d0000000077617600000000006d3461000000000033677000000000006f70757300000000666c6163000000006769660000000000706e670000000000737667000000000077656270000000006a61720000000000646562000000000069736f0000000000677a000000000000787a0000000000007a737400000000007064660000000000707963000000000074746300000000007474660000000000657865000000000061706b0000000000636e74000000000065786f00000000006f646578000000007664657800000000736f000000000000646200000000000000000000

$...mp......wm......og......jp......avi.....m4v.....m4p.....mkv.....mov.....webm....wav.....m4a.....3gp.....opus....flac....gif.....png.....svg.....webp....jar.....deb.....iso.....gz......xz......zst.....pdf.....pyc.....ttc.....ttf.....exe.....apk.....cnt.....exo.....odex....vdex....so......db..........


ADDR = 0xa84 [2692]
4c696e75782076657273696f6e20352e332e302d32302d67656e6572696320286275696c6464406c677730312d616d6436342d3032392920286763632076657273696f6e20392e322e3120323031393130303820285562756e747520392e322e312d397562756e7475322929202332312d5562756e747520534d5020576564204f63742032332031363a32303a333720555443203230313900000000000000000000

Linux version 5.3.0-20-generic (buildd@lgw01-amd64-029) (gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)) #21-Ubuntu SMP Wed Oct 23 16:20:37 UTC 2019..........

и так дальше... там и файлы есть, но инфы на диске 250 гб, а метаинформацию с названиями файлов, их размером и расположением на диске хз где и как правильно искать. В общем диск на первый взгляд в норме, тогда почему он не монтируется и fsck.f2fs ругается на CRC? Есть ли какой-то способ пофиксить это или хоть найти и достать файлы оттуда без написания тысячи строк кода??? Буду благодарен за любую информацию по этому поводу!

 ,

XopmoH
()