Leitura curta ao tentar abrir / dev / sda2

2

Acabei de redimensionar um .vdi do meu host de 15,5G para 120G. Eu tentei redimensionar a partição do convidado (servidor ubuntu) usando resize2fs

root@ubuntu:~# sudo resize2fs /dev/sda2 115G
resize2fs 1.42.13 (17-May-2015)
resize2fs: Attempt to read block from filesystem resulted in short read while trying to open /dev/sda2
Couldn't find valid filesystem superblock.

Agora, de acordo com minha compreensão da situação, /dev/sda2 está corrompido. No entanto, meu servidor VM ainda funciona bem e não tem problemas em execução na partição. fdisk -l /dev/sda de saídas:

Disk /dev/sda: 120 GiB, 128849018880 bytes, 251658240 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: 0x32955267

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M 83 Linux
/dev/sda2       1001470 33552383 32550914 15.5G  5 Extended
/dev/sda5       1001472 33552383 32550912 15.5G 8e Linux LVM

Agora, a minha pergunta: isso é normal e saudável para o servidor e, se não, como faço para corrigir isso?

    
por Addi 31.07.2016 / 11:48

1 resposta

0

resize2fs e outras ferramentas no pacote e2fsprogs assumem que a chamada de sistema read retorna um erro ao tamanho total solicitado dos encontros. Isso não é verdade em geral: read tem permissão para retornar menos, você deve chamar isso em um loop. Eu acho que o kernel Linux garante que read retorna todos os dados dos dispositivos de bloco em algumas circunstâncias, mas eu fui mordido por isso no passado, com e2fsprogs fazendo suposições erradas no kernel.

O fato de o e2fsprogs não fazer um loop em torno de read é realmente um bug. Na melhor das hipóteses, é uma limitação: talvez a forma como o código é escrito está correta para algumas versões do kernel do Linux ao acessar um dispositivo de bloco. Mas essa limitação não está documentada em nenhum lugar. O código é definitivamente defeituoso ao acessar um arquivo de imagem.

Verifique os logs do kernel em busca de erros. Se o kernel reportar um erro, então o problema não é um bug no resize2fs (ou, pelo menos, nada mais do que um pobre relatório de erros).

Se o kernel não reportar erros de disco, execute

strace -o resize2fs.strace sudo resize2fs /dev/sda2 115G

e verifique as chamadas do sistema read .

read(3, "…", REQUESTED)                = READ

Existe uma breve leitura se REQUESTED READ . Se você observar isso e puder reproduzi-lo, valeria a pena fazer um relatório de bug. Explicar exatamente como você acionou isso: a versão exata do kernel, como o kernel foi compilado, a versão exata do resize2fs, qual driver de hardware gerencia /dev/sda , em qual software de máquina virtual está sendo executado. Eu recomendo relatar o bug para o Ubuntu ao invés de para o upstream, já que o upstream geralmente não é bom em falar com não-especialistas.

    
por 01.08.2016 / 01:38