Reduzindo um RAID1 para liberar espaço no HDD para uma nova partição RAID1

0

Eu configurei um servidor web há algum tempo e cometi um erro. Eu tenho o seguinte:

/dev/md0 swap  (made from sda1 and sdb1)
/dev/md1 /boot (made from sda2 and sdb2)
/dev/md2 /     (made from sda3 and sdb3)
/dev/md3 /home (made from sda5 and sdb5)

(sda4 e sdb4 são as partições estendidas)

Eu digitei errado ao configurar o RAID (estava usando um script de instalação) e terminei com os seguintes tamanhos:

swap   10GB
/boot  500MB
/      50GB
/home  The Rest (About    1,8TB)

Tudo funcionou bem .. até que eu carreguei cerca de 80GB de arquivos em / var / www, e a transferência caiu na metade do caminho. Tudo ficou maluco. Depois de um tempo eu descobri que eu simplesmente preenchi a partição / que travou o servidor MySQL, e imediatamente reconheci que fazer / tão pequeno era burro (ou pelo menos eu deveria ter colocado / var / www em uma partição diferente). Bem, o servidor está em uso agora há algum tempo e eu realmente não estou interessado em configurar tudo novamente. Eu respaldo tudo, apenas no caso, mas como todos sabem, a criação de um servidor é trabalho, e configurá-lo para um estado conhecido ao usar backups é ainda mais trabalho. então eu gostaria de resolver o problema.

O que eu gostaria de fazer agora é o seguinte:

  • reduza a partição / home para cerca de 1TB
  • adicione uma nova partição no espaço agora livre
  • mover / var / www
  • monte a nova partição nesse local

Então, meu plano era o seguinte:

  1. desmontar / home
  2. faça um e2fsck em / dev / md3
  3. resize2fs / dev / md3 para um tamanho de cerca de 990 GB para ter 10 GB como margem de segurança
  4. mdadm redimensiona / dev / md3 para 1TB
  5. resize2fs sem nomear um tamanho para aumentar o máximo disponível no novo md

(até aí tudo bem, tudo até este ponto funcionou)

  1. adicione novas partições sda / b6 no espaço agora livre
  2. faça deles um ataque
  3. monte-o em / mnt
  4. copiar sobre / var / www
  5. diff / var / www e / mnt apenas para garantir que
  6. rm -rf * em / var / www
  7. monte / dev / md4 em / var / www e inclua uma entrada correspondente no fstab para torná-lo permanente.

Agora estou preso em não. 6: O ataque é reduzido, / dev / md3 tem um tamanho de cerca de 1TB, tudo está perfeitamente bem, mas as partições / dev / sda5 e / dev / sdb5 ainda são do tamanho antigo. O que eu senti falta? As partições não deveriam ter encolhido com o MD? Como faço para reduzi-los sem quebrar o ataque?

    
por damaltor 20.06.2018 / 21:41

2 respostas

1

Diminuir o RAID não diminui as partições - você precisa fazer isso manualmente.

Isso não é 100% trivial, já que seu ataque MD pode conter um superbloco RAID no início OU no final.

Se o superbloco de RAID estiver no início (versão 1 e posterior), não deve ser menos complicado: fdisk ou a ferramenta de sua escolha e excluir (sim: quero dizer excluir) sda5 depois de notar seu bloco inicial , então recrie-o com o mesmo bloco inicial e espaço suficiente. Você pode criar sda6 no espaço restante. Eu recomendo que você reinicie para garantir que tudo funcione como planejado, antes de repetir o processo com sdb .

Se o superbloco RAID estiver no final (versão 0.9), as coisas ficam muito confusas - eu recomendo que você use mdadm --detail , então mdadm --stop e finalmente mdadm --create ... --metadata=1.0 para movê-lo para o início do dispositivo e prosseguir como acima.

EDITAR

Eu não indiquei (como erroneamente assumi que estava claro), que você precisa mdadm --stop ... primeiro: Ao sair, fdisk instrui o kernel a reler a tabela de partição, que marca uma metade do ataque como não atualizado.

    
por 20.06.2018 / 21:55
1

Infelizmente isso é mais difícil do que parece. Os dispositivos de bloco MD usam partições nos discos subjacentes - e esses discos precisam ter o tamanho correto - e blocos contíguos de espaço.

NOTA: Operações de disco desse tipo são arriscadas. Faça o backup primeiro.

Como o seu diretório home vem depois do diretório www, encolhendo ele libera espaço no final do disco - mas você precisa do espaço no início do disco. Você pode usar o gparted para mover o / sda3, sda5, sdb3 e sdb5 para o final do disco, mas não tive muita sorte com essa ferramenta.

A maneira que eu faria (se não começar do zero por razões abaixo) seria mover / home para / www temporariamente (ou para armazenamento externo se já é muito grande), usando fdisk, delete sda3,5 e sdb3 , 5 então delete sda2 e sdb2 e recrie com o mesmo bloco inicial mas terminando o bloco certificando-se de definir o tipo de partição (para fd para RAID), então recrie sda3,5 e sdb3,5 (ou apenas sdb3 - se tiver certeza você não precisará de mais de 4 partições) com o espaço restante.

Depois disso, reinicialize e expanda o RAID, recrie md3, / home e copie os dados de volta. Você também precisará modificar o fstab.

Dito isto, eu consideraria seriamente começar de novo usando apenas 2 partições RAID - uma pequena para boot, e uma grande para todo o resto. Eu usaria o LVM em cima da grande partição RAID para dividi-la em blocos como / www, / home - porque usar o LVM fornece muita flexibilidade, incluindo a capacidade de redimensionar partições independentemente da geometria subjacente, adicionar discos e tirar instantâneos .

    
por 20.06.2018 / 23:17