2

Я сделал образ (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.

1 ответ1

2

Ошибки из-за плохого образа диска

Похоже, вы видите ошибки на изображении, вызванные неисправным диском. Вместо этого я бы использовал gddrescue , он пытается обработать ошибки чтения.

Руководство Gddrescue информативно, это раздел 10. Небольшое руководство с примерами начинается с

Пример 1: Полностью автоматическое восстановление всего диска с двумя разделами ext2 в /dev /sda в /dev /sdb.
Примечание: вам не нужно предварительно разбивать /dev /sdb, но если таблица разделов в /dev /sda повреждена, вам нужно как-то воссоздать ее в /dev /sdb.

ddrescue -f -r3 /dev/sda /dev/sdb mapfile
fdisk /dev/sdb
e2fsck -v -f /dev/sdb1
e2fsck -v -f /dev/sdb2

Вместо спасения непосредственно на устройство (/dev/sdb) работает файл. И вместо того, чтобы начинать с -r 3 чтобы повторить неудачные секторы 3 раза, возможно, используйте значения по умолчанию (0) и -n / --no-scrape для "Пропустить фазу очистки", чтобы сначала получить как можно больше.

Есть также пакет ddrescueview , который дает графическое представление файла карты gddrescue, что может быть интересно:

И мониторинг syslog или dmesg должен был показывать ошибки чтения раньше, я бы отслеживал их при использовании этого диска.

Есть ли так много важных файлов для резервного копирования?

Если файлы по-прежнему доступны для чтения и особенно если важные файлы, которые вы хотите сделать резервную копию, намного меньше, чем весь диск, просто скопируйте только эти файлы и забудьте обо всем образе диска. ОС легко переустанавливать.

Монтирование полных образов дисков

Похоже, losetup -P создает соответствующие устройства с циклическим разделением или, возможно, partprobe или gnome-disk-image-mounter , в дополнение к kpartx .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .