Você está tentando redimensionar um sistema de arquivos criado antes da -O 64bit
opção se tornar padrão. É possível atualizar o sistema de arquivos ext para endereços de 64 bits, permitindo a abrangência de volumes significativamente maiores (1024 PiB em vez de 16 TiB).
Supondo que seu dispositivo de destino seja chamado /dev/mapper/target-device
, é isso que você precisa fazer:
Pré-requisitos
- Esse tamanho de volume deve ser suportado pelo RAID. Erros de disco regulares irá causar danos de outra forma.
- Ainda assim, o RAID não é um backup . Você deve ter seus objetos de valor armazenados em outro lugar também.
- Primeiro redimensione e verifique todos os volumes ao redor (tabelas de partição, criptografia, lvm).
- Após alterar a configuração de RAID do hardware, o linux pode ou não reconhecer imediatamente o novo tamanho máximo. Verifique
$ cat /proc/partitions
e reinicie, se necessário.
Use um kernel estável recente e e2fsprogs
- Verifique se
uname -r
você está executando um kernel que pode lidar adequadamente com sistemas de arquivos ext4 de 64 bits - você deseja usar um 4.4.x
kernel ou posterior (padrão Ubuntu 16 e superior).
Adquira e2fsprogs de pelo menos versão 1.43
Ubuntu 16.04
(2016-04-21) foi lançado com e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(17/05/2016) é o 1º lançamento capaz de atualizar o tamanho do endereço extfs.
Ubuntu 18.04
(2018-04-26) é enviado com e2fsprogs 1.44.x
(bom!)
Se você está ligado 16.04
e não pode atualizar para uma versão mais recente do Ubuntu, precisará habilitar o suporte ao pacote fonte e instalar uma versão mais recente manualmente:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Redimensionar
Etapa 1: Desmontar adequadamente o sistema de arquivos
$ sudo umount /dev/mapper/target-device
Etapa 2: Verifique o sistema de arquivos quanto a erros
$ sudo e2fsck -fn /dev/mapper/target-device
Etapa 3: ativar o suporte a 64 bits no sistema de arquivos
Consulte man tune2fs
e man resize2fs
- você pode alterar alguns sinalizadores do sistema de arquivos.
$ sudo resize2fs -b /dev/mapper/target-device
Em um RAID HDD típico, são necessários 4 minutos de alta carga de IO e CPU.
Etapa 4: redimensionar o sistema de arquivos
$ sudo resize2fs -p /dev/mapper/target-device
Se você não passar um tamanho na linha de comando, o resize2fs assumirá "aumentar para todo o espaço disponível" - normalmente é exatamente isso que você deseja. O -p
sinalizador ativou as barras de progresso - mas essas somente são exibidas após algumas etapas iniciais.
Em um RAID HDD típico, são necessários 4 minutos de alta carga de IO e CPU.
Verifique novamente
Verifique o sistema de arquivos novamente
$ sudo e2fsck -fn /dev/mapper/target-device
O e2fsck de versões mais recentes pode sugerir a correção de carimbos de data / hora ou extensão de árvores que as versões anteriores trataram mal. Isso não indica nenhum problema sério e você pode optar por corrigi-lo agora ou mais tarde.
Se ocorrerem erros, não entre em pânico e não tente gravar no volume; consulte alguém com amplo conhecimento do sistema de arquivos, pois operações adicionais provavelmente destruiriam dados!
Se nenhum erro ocorrer, remonte o dispositivo:
$ sudo mount /dev/mapper/target-device
Sucesso!
Você não precisará de nenhuma versão não-Ubuntu do e2fsprogs para continuar a operação do sistema de arquivos atualizado - o kernel os suporta há algum tempo. Só foi necessário iniciar a atualização.
Para referência, há uma mensagem de erro semelhante que o mke2fs imprimirá se for solicitado que você crie um dispositivo enorme com opções inadequadas:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.