Как я могу смонтировать файловые системы с размером блока> 4 КБ?

18

У меня есть жесткий диск объемом 3 ТБ, извлеченный из WD Mybook Live NAS. Таблица разделов выглядит следующим образом:

Model: ATA WDC WD30EZRS-11J (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 3      15.7MB  528MB   513MB                primary
 1      528MB   2576MB  2048MB  ext3         primary  raid
 2      2576MB  4624MB  2048MB  ext3         primary  raid
 4      4624MB  3001GB  2996GB  ext4         primary

Поэтому я пытаюсь получить доступ к разделу 4 (большой!):

root@john-desktop:~/linux-3.9-rc8# mount -t ext4 /dev/sdb4 /mnt/
mount: wrong fs type, bad option, bad superblock on /dev/sdb4,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Вывод Dmesg:

[ 2058.085881] EXT4-fs (sdb4): bad block size 65536

Это достаточно справедливо. Насколько я могу судить, мое ядро ​​не настроено на поддержку блоков размером более 4K.

У меня вопрос: какой символ мне нужно искать в конфигурации ядра, чтобы разрешить монтирование разделов большего размера? Я искал Google для этого, и я думал, что видел вариант раньше, но я не могу найти упоминания об этом в последнем стабильном исходном коде ядра.

Изменить : Полная информация о жестком диске от hdparm здесь: http://pastebin.com/hDdbUzjd

Редактировать : вывод dumpe2fs:

Mount count:              0
Maximum mount count:      30Last checked:             Wed May 30 15:22:14 2012Check interval:           15552000 (6 months)Next check after:         Mon Nov 26 14:22:14 2012Lifetime writes:          319 GBReserved 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:      cd7a28a0-714c-9942-29f4-83bca1209130
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             2048M
Journal length:           32768
Journal sequence:         0x00010146
Journal start:            0
Джон Хант
источник
Обратите внимание, что передача размера блока в команду mount ничего не делает: mount -t ext4 -o bs = 65536 / dev / sdb4 / mnt .... Опция bs поддерживается только для нескольких файловых систем (но не для ext). .)
Джон Хант
Каков dumpe2fs -hвыход для этого объема? Моя справочная страница 2012 года для mke2fs гласит: «Допустимые значения размера блока - 1024, 2048 и 4096 байт на блок». Совершенно скачок с 4096 до 65536.
Хауке Лагинг
@HaukeLaging - добавили этот вывод, спасибо :)
Джон Хант
@jofel, который на самом деле не предлагает решения, просто смутные рассуждения.
Джон Хант

Ответы:

19

Woohoo, я решил это :)

Краткий ответ: вы не можете монтировать устройства размером более 4 тыс. Блоков на Linux-машинах x86, насколько я могу судить, без серьезного взлома ядра.

Тем не менее, есть обходной путь .. использование fuse-ext2 для монтирования диска:

fuseext2 -o ro -o sync_read /dev/sdb4 /mnt/

(вам, вероятно, нужно сначала получить apt-get fuseext2 ..)

работает отлично с первого раза!

По сути, именно так люди смогут восстановить свои диски MyBook Live.

Сообщение в блоге о том, как это сделать: http://john-hunt.com/2013/04/25/recovering-data-from-a-wd-mybook-live-2tb-3tbor-s Similar/

Джон Хант
источник
Да, кеш страницы ядра ограничивает размер блока до размера страницы процессора, поэтому для i386 / amd64 вы не можете смонтировать fs с размером блока более 4k. Другой альтернативой является использование e2tools.
psusi
1
Спасибо! Таким образом я смог получить доступ к дисководу Seagate Central NAS.
Тобиа
Я пробую этот способ на 2-х машинах (kubuntu 14.04 x86 и 15.10 x64), но получаю 100% зависание и загрузку процессора с помощью fuseext2 в папке открытого монтирования. Кто-нибудь может мне сказать, почему?
Юра Шинкарев
Я получаю аналогичный опыт с YShinkarev - зависает при попытке получить доступ к горе fuseext2, также зависает, когда я пытаюсь размонтировать его. Ctrl + c не имеет никакого эффекта ...
Адам Гриффитс
Хотя это само по себе не отвечает на вопрос, вы можете восстановить данные, используя те места, debugfs /dev/sdXXгде вы можете выполнять базовые команды, такие как lsи rdumpкопировать файлы в безопасное место. Источник: n-dimensional.de/blog/2012/05/01/wd-mybook-live-data-rescue Я использовал этот метод, потому что fuseext2 зависает ( bugs.debian.org/cgi-bin/bugreport.cgi?bug= 776248 )
Алек