Я сделал образ (dd) диска, и я пытаюсь запустить проверку файловой системы на нем: Тип файловой системы: ext3
Вот оригинальная ошибка от fsck:
fsck -fv -z ./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.undo.$(date
+"%Y-%m-%d.%H.%M.%S").und /dev/loop2
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Overwriting existing filesystem; this can be undone using the command:
e2undo ./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.undo.2019-01-17.13.31.41.und /dev/loop2
The filesystem size (according to the superblock) is 122063840 blocks
The physical size of the device is 121604515 blocks
Either the superblock or the partition table is likely to be corrupt!
Информация от fdisk -l /dev /sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000794ac
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 32 8191 8160 4M 4 FAT16 <32M
/dev/sda2 262144 976773119 976510976 465.7G 83 Linux
Информация от fdisk -l./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img
Disk ./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img: 464 GiB, 498226311168 bytes, 973098264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000794ac
Device Boot Start End Sectors Size Id Type
./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img1 * 32 8191 8160 4M 4 FAT16 <32M
./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img2 262144 976773119 976510976 465.7G 83 Linux
Я сделал петлевое устройство для раздела, используя:
losetup --offset $((512*262144)) /dev/loop2 ./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img
Из blockdev --getbsz /dev /loop2
4096
Из blockdev --getsz /dev /loop2
972836120
Из dumpe2fs /dev /loop2:
Filesystem UUID: f68ccb5a-bcfa-4e8a-8876-45adaa6e6b85
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean with errors
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 30523392
Block count: 122063840
Reserved block count: 6103192
Free blocks: 96939245
Free inodes: 30462657
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 994
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Filesystem created: Sat Apr 26 21:28:22 2014
Last mount time: Wed Jan 16 15:59:22 2019
Last write time: Thu Jan 17 18:16:50 2019
Mount count: 17
Maximum mount count: -1
Last checked: Sat Apr 26 21:28:22 2014
Check interval: 0 (<none>)
Lifetime writes: 10 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 162d0daa-7968-48f9-8370-f095c9e19f58
Journal backup: inode blocks
Journal features: journal_incompat_revoke
Journal size: 128M
Journal length: 32768
Journal sequence: 0x000059bd
Journal start: 0
Вслед за этим много:
Group 0: (Blocks 0-32767)
Primary superblock at 0, Group descriptors at 1-30
Reserved GDT blocks at 31-1024
Block bitmap at 1025 (+1025)
Inode bitmap at 1026 (+1026)
Inode table at 1027-1538 (+1027)
4 free blocks, 8179 free inodes, 2 directories
...
(SKIPPING TO END)
...
Group 3725: (Blocks 122060800-122063839)
Block bitmap at 122060800 (+0)
Inode bitmap at 122060801 (+1)
Inode table at 122060802-122061313 (+2)
0 free blocks, 8192 free inodes, 0 directories
Закончено с:
dumpe2fs: /dev/loop2: error reading bitmaps: Can't read a block bitmap
Теперь я могу просто монтировать /dev /sda2 и читать файлы, которые я не могу монтировать /dev /loop2
mount -t ext3 /dev/loop2 ./DriveImage/
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
Я получаю ту же ошибку при попытке монтирования непосредственно из образа, используя:
mount -o loop,offset=$((512*262144)) ./Seagate.ST3500320NS.SN-9QM5ZHHR.500GB.465GiB.img ./DriveImage
Теперь согласно dumpe2fs суперблок прав!
И согласно математике:
Superblock says:
122063840
Filesystem says:
121604515
block size:
4096
Math: Sectors * Sector Size = Size / Block Size = Blocks
Partition 1:
8160 * 512 = 4177920 / 4096 = 1020
Partition 2:
[From fdisk]
976510976 * 512 = 499973619712 / 4096 = 122063872
[From blockdev with /dev/loop2]
972836120 * 512 = 498092093440 / 4096 = 121604515
fdisk сообщает довольно близко к нужным блокам ...(Еще 32 блока) Но в моей книге fsck получает информацию о размере своего блока точно так же, как это делает blockdev (или использует ее), но согласно dumpe2fs и проверке фактической таблицы разделов, суперблок на самом деле правильный, как и таблица разделов.
Из-за боязни потерять исходные данные на диске (семейные фотографии / видео и важные файлы за 10 лет) я не хочу запускать эти данные на исходном диске. Таким образом, я сделал копию диска для этого изображения, а затем, в случае, если я что-то испортил, я также сделал копию изображения. (Не волнуйтесь, у меня есть место на диске для этого).
Что я здесь не так делаю? и как я могу это исправить?
ПРИМЕЧАНИЕ. Из-за сбоя старого диска (предположительно, у меня возникли некоторые проблемы), поэтому я делаю это.
ТАКЖЕ, по какой-то причине диск потерял свою таблицу разделов, и мне пришлось использовать тестовый диск для его восстановления. После того, как он был восстановлен, я смог смонтировать большой раздел и прочитать все мои данные.
Так что я предположил, что либо testdisk понял это правильно, либо чертовски близко, так как он есть.
(ОБНОВЛЕНИЕ № 1) Я должен также отметить, что когда я запускаю fsck на исходном диске, я не получаю эту ошибку ...
fsck -nfv /dev/sda2
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
60735 inodes used (0.20%, out of 30523392)
1510 non-contiguous files (2.5%)
49 non-contiguous directories (0.1%)
# of inodes with ind/dind/tind blocks: 23779/2425/0
25124595 blocks used (20.58%, out of 122063840)
0 bad blocks
1 large file
56022 regular files
4704 directories
0 character device files
0 block device files
0 fifos
0 links
0 symbolic links (0 fast symbolic links)
0 sockets
------------
60726 files
(ОБНОВЛЕНИЕ № 2) Я обнаружил, что файл изображения не совпадает с диском, файл изображения меньше.
Размер диска: 500107862016 (здесь произошла ошибка, я получил только размер второго раздела, обновлен до правильной информации)
Размер изображения: 498226311168
В файле изображения отсутствуют 1881550848 байт, более 1,88 ГБ данных. (Это исправлено также)
Похоже, что dd не получил все, и что я могу быть прав, что у накопителя есть проблемы, есть ли способ заставить dd заполнять ошибки чтения пустым пространством, чтобы у меня был подходящий размер?
Я запускаю fsck на устройстве loop, чтобы посмотреть, что оно делает. Думаю, если я все испорчу, я просто восстановлю заднее изображение.
ДРУГОЕ ВАЖНОЕ ПРИМЕЧАНИЕ: Это система безголового сервера, без графического интерфейса, просто CLI.