Usando resize2fs com deslocamento do sistema de arquivos

3

A montagem tem a opção offset para especificar que um sistema de arquivos não inicia no início de um dispositivo, mas sim uma quantidade específica de bytes depois. Como posso usar resize2fs , que não tem essa opção, para redimensionar um sistema de arquivos que não inicia no início do dispositivo?

    
por Manuel Faux 04.04.2015 / 08:09

2 respostas

3

A opção offset de mount não é passada para montagem diretamente, mas para losetup que configura um dispositivo de loop que se refere ao local de deslocamento do dispositivo de bloco subjacente. O Mount então realiza suas operações nesse dispositivo de loop em vez do próprio dispositivo de bloco bruto.

Você também pode usar losetup para fazer resize2fs reproduzir quais sistemas de arquivos:

# losetup --offset=<offset> --find --show /dev/<device>
/dev/loop0
# resize2fs /dev/loop0 <newsize>
# losetup --detach /dev/loop0

(O exemplo pode não estar completo em operações resize2fs)

losetup procura o primeiro dispositivo de loop livre (nesse exemplo / dev / loop0) à medida que --find foi passado. --show envia esse dispositivo de loop para STDOUT.

    
por 04.04.2015 / 08:09
1

Antes de eu estender um sistema de arquivos ext4 do espaço livre do início do dispositivo de bloco, fiz uma pesquisa para ver como os outros fizeram e parece que sua pergunta foi a correspondência mais próxima que encontrei. Mas a resposta fornecida não é exatamente o que você pediu ou eu precisei. Como acabei de redimensionar / crescer com sucesso desde o início do disco, decidi compartilhar meus pensamentos.

O procedimento em poucas palavras: 1.) O sistema de arquivos a ser expandido / expandido: sistema de arquivos ext4 em uma partição começando no setor 1026048 e terminando no final do dispositivo de bloco ( /dev/sdb no meu caso) 2.) Para alocar os setores não utilizados no início do dispositivo de bloco para este sistema de arquivos, eu tive que mover os dados usando dd para o início do meu futuro / nova partição 3.) Exclua a partição antiga e recrie-a com o novo setor de inicialização 4.) resize2fs para estender para o novo tamanho da partição

Comandos usados e detalhes sobre o método:

Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

(informações acima reveladas por fdisk -l /dev/sdb .)

Calcule dd buscar e pular deslocamentos e bs (no nosso caso, bs corresponde ao tamanho do setor):

# dd seek=2048 skip=1026048 if=/dev/sdb bs=512 of=/dev/sdb

Portanto, queremos mover nossos dados do setor 1026048 para iniciar no setor 2048, onde nossa nova partição será iniciada. Nós não poderíamos perder nada, pois quanto mais lemos da entrada, mais nós ficamos, então quando começarmos a sobrescrever com a saída (ela acabará alcançando o setor 1026048), teríamos copiado o que estava lá na entrada. início do dispositivo e seguir em frente.

Em seguida, use fdisk para excluir a partição antiga e recriá-la para iniciar no setor 2048.

Uma vez feito isso, você pode executar:

# partprobe /dev/sdb or
# blockdev --rereadpt /dev/sdb
# resize2fs /dev/sdb<num>

para estender o sistema de arquivos.

Por favor, sempre faça backups de seus dados antes de fazer procedimentos de baixo nível como esse. A falha em algumas das etapas ou falha do sistema ou falha de energia resultará em perda de dados. Este é um exemplo que descreve uma única partição em um dispositivo de bloco. Suas configurações podem variar, então não use como está. Aprenda e entenda como funciona, depois teste e, se obtiver os resultados esperados, gere seus dados ao vivo a seu próprio risco!

Espero que ajude os outros também. Feedback e onde melhorar / tornar mais detalhado é bem-vindo.

Obrigado!

    
por 07.09.2016 / 23:33