Alguém redimensionou com sucesso um sistema de arquivos no Centos 7.x para mais de 16TB

1

Eu tenho um servidor Centos 6.5 conectado a um storage array. Tem um volume de 16 TB montado a partir do array. Se eu redimensionar o volume para 45 TB na matriz, não posso expandir o sistema de arquivos para usar esse espaço. Aparentemente, o Centos 7.x é certificado para sistemas de arquivos com até 50 TB de tamanho. Alguém já redimensionou com sucesso um sistema de arquivos existente em 7.x para mais de 16 TB?

[root@init105-12 hariharan]# lsblk /dev/mapper/3624a93708a6e42d13a7d45ae0001101f
NAME                                     MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
3624a93708a6e42d13a7d45ae0001101f (dm-2) 253:2    0  45T  0 mpath
[root@init105-12 hariharan]#
[root@init105-12 hariharan]# resize2fs /dev/mapper/3624a93708a6e42d13a7d45ae0001101f
resize2fs 1.41.12 (17-May-2010)
resize2fs: New size too large to be expressed in 32 bits
    
por Thiagarajan Hariharan 06.08.2017 / 16:35

3 respostas

2

O limite de ext4 é 16 TiB, então você não pode link

Se é um env de produção, você tem trabalho a fazer ...

Tente criar o mesmo servidor em um ambiente de teste com um sistema de arquivos XFS

    
por 06.08.2017 / 17:57
0

Deveria ter deixado claro que a questão é sobre o ext4 no Linux de 64 bits.

Se você pode considerar o redimensionamento depende de:

  • Tamanho atual, novo tamanho, se o FS tiver o recurso de 64 bits ativado
  • Se o tamanho atual e o novo forem < = 16TB, então deve ser seguro
  • Se o novo tamanho for > 16TB e FS já tem recurso de 64 bits ativado, deve ser seguro
  • Se o novo tamanho for > 16TB e FS não tem recurso de 64 bits, você primeiro precisa habilitar 64 bits. Você precisa executar resize2fs -b para ativá-lo seguido pelo real redimensionar. Mesmo o resize2fs que vem com o RHEL 7.x não aceita a opção -b. Você tem que construir as ferramentas ext4 de fontes para isso. Também -b aparentemente não é suportado pela Red Hat. assim não parece seguro redimensionar neste caso.
por 10.08.2017 / 18:07
0

FUNDO: Quando esta questão surge, muitas vezes há muita confusão sobre sistemas operacionais de 64 bits ou pessoas dizendo "sistema de arquivos de 64 bits". O que estamos falando é a tabela de inode em sistemas de arquivos ext4. O tamanho de bloco padrão no ext4 é 4k e os blocos são endereçados com uma tabela de inode de 32 bits, o que significa que o sistema de arquivos tem um limite de 2 ^ 32 * 4k bytes endereçáveis que é 16TiB. Por um longo tempo, o suporte ao ext4 no kernel do Linux suportou uma tabela de inodes de 64 bits (para um máximo de 1EiB usando blocos de 4k), mas as ferramentas e2fs que acompanham o CentOS 6 e 7 não suportam esse recurso. Se o teste "RedHat certified" for significativo para você, então a pergunta não foi suportada, mas a pergunta foi solicitada para o CentOS, então vamos continuar.

ISENÇÃO DE RESPONSABILIDADE: Eu habilitei tabelas de inodes de 64 bits para sistemas de arquivos ext4 maiores que 16TiB no CentOS 6 e 7, bem como Ubuntus mais antigo atualizando as ferramentas e2fs para que eu possa dizer que isso funciona, mas é claro que você deve fazer backup de dados antes de tentar isso. Esse processo envolve a compilação de ferramentas no nível do sistema operacional para que não seja para os fracos de coração. Além disso, li que o GRUB não suporta tabelas de inodes de 64 bits, portanto não faça isso em sua partição de boot (ou no sistema de arquivos raiz se você continuar / boot lá, mas não é assim que o CentOS 6 ou 7 é instalado). Você foi avisado.

Faça o download da versão 2.43.9 do e2fsprogs e construa-a. Existem versões mais recentes disponíveis, mas esta versão é compatível com o CentOS 6 e 7 e suporta todos os recursos que precisamos, enquanto o código mais recente usa recursos não suportados pela versão do gcc que acompanha o CentOS 6. Nota dupla, este processo requer gcc você não quer um compilador instalado em um servidor de produção, eu recomendo construir em outra caixa com a mesma distro Linux e então mover as ferramentas construídas para o seu ambiente de produção. Para começar, use os seguintes comandos:

wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.43.9.tar.gz
tar zxvf e2fsprogs-1.43.9.tar.gz
cd e2fsprogs-1.43.9
./configure
make

Neste ponto, você pode executar "make install" como root (os comandos anteriores NÃO devem ter sido executados como root / sudo) se você estiver no sistema com a partição que deseja expandir. Isso substituirá as ferramentas e2fs existentes no seu sistema. Se você não quiser fazer isso, você pode simplesmente executar os binários que você acabou de construir, o que assumirei que você está fazendo no futuro. Vamos começar examinando o sistema de arquivos em questão. Usarei /dev/mapper/vg_data-lv_data em meus comandos de exemplo, mas você pode ter /dev/sdb1 ou algo assim como seu destino. Esse comando e todos os comandos a seguir que operam no sistema de arquivos requerem permissão de root para serem executados.

./misc/tune2fs -l /dev/mapper/vg_data-lv_data | grep "features"

Este comando listará todos os recursos do sistema de arquivos ativados. Se ele tem "64 bits" na lista, então você já está pronto e eu não sei porque você está lendo isso! Antes de continuar, você provavelmente precisará fazer um e2fsck e desmontar o sistema de arquivos. Espero que você saiba como desmontar o sistema de arquivos (o que requer que todas as alças de arquivos dos arquivos no sistema de arquivos sejam fechadas). Para fazer o fsck, o comando é:

./e2fsck/e2fsck -f /dev/mapper/vg_data-lv_data

Isso pode demorar um pouco se o sistema de arquivos já estiver bem grande. Em seguida, podemos (finalmente) atualizar a tabela de inode para 64 bits:

./resize/resize2fs -b /dev/mapper/vg_data-lv_data

Observe que isso não redimensiona o sistema de arquivos. Você deve executar o comando novamente sem a opção -b para fazer o real redimensionamento. Executar o comando resize sem especificar um tamanho usará automaticamente todo o espaço disponível, que normalmente é o que você deseja fazer:

./resize/resize2fs /dev/mapper/vg_data-lv_data

Agora você pode montar o disco e aproveitar o espaço extra! Você também pode executar tune2fs novamente para verificar se a lista de recursos do sistema de arquivos mostra essa doce "64 bits" agora.

Dica final: se você quiser criar essas ferramentas em uma caixa e movê-las para o servidor de produção, a maneira mais fácil de fazer isso é fazer isso (não como raiz):

./configure --prefix=$HOME/local
tar zcvf e2fsprogs.tar.gz $HOME/local

Em seguida, copie o e2fsprogs.tar.gz para o seu servidor de produção. Você encontrará os binários que foram criados na pasta sbin. Com eles no seu servidor de produção, você pode executá-los diretamente de onde quer que você os extraiu ou você pode mover as pastas extraídas para local para / usr (como root) para substituir as ferramentas e2fs que acompanham o seu SO.

    
por 17.08.2018 / 21:40

Tags