Como montar sistemas de arquivos com tamanhos de bloco> 4KB?

18

Eu tenho um disco rígido de 3 TB retirado de um WD Mybook Live NAS. A tabela de partição é a seguinte:

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

Então, eu estou tentando acessar a partição 4 (a grande!):

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

Saída Dmesg:

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

Isso é justo o suficiente. Até onde eu sei, meu kernel não está configurado para suportar tamanhos de bloco acima de 4K.

Minha pergunta é: qual símbolo devo procurar na minha configuração do kernel para permitir que partições maiores do tamanho de um bloco sejam montadas? Eu procurei no google por isso e pensei ter visto a opção antes, mas não consigo encontrar nenhuma menção a ela na última fonte estável do kernel.

Edit : Informações completas sobre o disco rígido da hdparm aqui: http://pastebin.com/hDdbUzjd

Edit : saída 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
John Hunt
fonte
Observe que passar um tamanho de bloco para o comando mount não faz nada: mount -t ext4 -o bs = 65536 / dev / sdb4 / mnt .... a opção bs é suportada apenas em alguns sistemas de arquivos (e não nos ext. .)
John Hunt
Qual é a dumpe2fs -hsaída para esse volume? Minha página do manual de 2012 para mke2fs diz: "Os valores válidos do tamanho do bloco são 1024, 2048 e 4096 bytes por bloco". Muito um salto de 4096 para 65536.
Hauke Laging
@HaukeLaging - acrescentaram que a produção, graças :)
John Hunt
@jofel que na verdade não oferece uma solução, apenas um raciocínio vago.
John Hunt

Respostas:

19

Woohoo, eu resolvi isso :)

A resposta curta é que você não pode montar dispositivos> 4k de tamanho de bloco em máquinas Linux x86, até onde eu sei, sem alguns hackers graves do kernel.

No entanto, existe uma solução alternativa .. usando o fuse-ext2 para montar o disco:

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

(você provavelmente precisará apt-get fuseext2 primeiro ..)

funciona perfeitamente na primeira vez!

Basicamente, será assim que as pessoas poderão recuperar seus discos MyBook Live.

Como postar no blog aqui: http://john-hunt.com/2013/04/25/recovering-data-from-a-wd-mybook-live-2tb-3tbor-similar/

John Hunt
fonte
Sim, o cache da página do kernel limita o tamanho do bloco ao tamanho da página da CPU; portanto, para i386 / amd64, você não pode montar um fs com mais de 4k de tamanho de bloco. Outra alternativa é usar o e2tools.
psusi
1
Obrigado! Consegui acessar uma unidade NAS Seagate Central dessa maneira.
Tobia
Eu tento dessa maneira em 2 máquinas (kubuntu 14.04 x86 e 15.10 x64), mas obtenho congelamento e uso da CPU 100% por fuseext2 na pasta de montagem aberta. Alguém pode me dizer por que?
Yura Shinkarev 11/02
Estou tendo uma experiência semelhante ao YShinkarev - travar ao tentar acessar o suporte fuseext2, também congela quando tento desmontá-lo. Ctrl + c não tem efeito ...
Adam Griffiths
Enquanto isso não responder à pergunta, por si só, você pode recuperar os dados usando debugfs /dev/sdXXonde você pode executar comandos básicos como lse rdumppara copiar os arquivos para um local seguro. Fonte: n-dimensional.de/blog/2012/05/01/wd-mybook-live-data-rescue Eu usei esse método porque o fuseext2 congela ( bugs.debian.org/cgi-bin/bugreport.cgi?bug= 776248 )
Alecz