Maneira correta de remapear uma partição para um novo disco?

2

Eu atualmente corro um servidor web rodando Debian. Eu tenho um disco de 1GB com uma única partição ext4 mapeada para / e um disco de 8GB com uma única partição ext4 mapeada para /var/www .

O disco de 1 GB está 70% cheio sem um banco de dados instalado. Uma vez que eu coloquei o psql, meu /var provavelmente vai encher o disco de 1GB.

Então, o que eu quero fazer é redimensionar o ext4 no disco de 8GB para 4GB e criar outra partição usando o espaço livre.

Agora, em minha mente, desenvolvi o seguinte conjunto de etapas:

  1. umount e use resize2fs (ou parted ) para redimensionar a partição no disco de 8 GB.
  2. parted para criar uma nova partição de 4 GB no espaço livre.
  3. mount da nova partição para dizer /media/new
  4. cp -a para copiar meu /var da partição de 1 GB para a nova partição de 4 GB. (ou devo usar tar para isso?)
  5. adicione uma entrada para a nova partição em fstab
  6. exclua o material redundante, como /var do meu disco de 1 GB e /var/www para a nova partição.

Eu nunca fiz algo assim antes, então alguém poderia verificar meus passos e ver se estou perdendo alguma coisa?

PS. Eu fiz um du --max-depth=1 , e parece que, além dos 200MB ocupados por /var , há também um 300MB alocado para /usr e 200MB para /lib . Devo mexer isso também?

    
por Pentos 25.12.2011 / 05:15

1 resposta

4

Na verdade, você não precisa reparticionar seu disco para fazer isso. Uma solução alternativa é usar mount -o bind .

  1. Pare todos os serviços em execução no servidor e confirme que não há identificadores abertos para / var com lsof | grep /var - se houver, elimine os processos que os mantêm.
  2. Desmonte sua unidade de 8 GB (/ var / www) e monte-a em outro lugar (por exemplo, / mnt)
  3. Em seu disco de 8 GB, mova todo o conteúdo para uma única pasta - vamos chamá-lo de "www".
  4. Mova o / var / para sua unidade de 8 GB (talvez você queira copiar e renomear o original para ter um pouco de segurança) (Então, agora você tem duas pastas / mnt / www e / mnt / var)
    • (Como / var / www está em var, é mais simples movê-lo até esse ponto (por exemplo, mv /mnt/www /mnt/var/ , embora você possa configurar montagens aninhadas)
  5. Montar ligação / var: mount -o bind /mnt/var /var
  6. Anexar ao fstab:

    /mnt/var  /var    bind     defaults,noatime,bind        0   0
  7. Verifique se tudo está funcionando e retome as operações normais

Essa abordagem deve oferecer a mesma funcionalidade, com um risco menor (sem reparticionar / redimensionar os sistemas de arquivos) e mais flexibilidade - se você quiser adicionar mais duas ou três pastas, não precisará continuar fazendo novas partições.

Como um aparte, mover a totalidade de / var para um segundo disco não seria minha primeira escolha, eu preferiria mover os diretórios que armazenam dados em vez daqueles que armazenam programas, como os seguintes: provavelmente acha que / var / log e / var / lib usam a maioria do espaço em / var de qualquer forma).

  • / var / log
  • / var / lib / pgsql
  • / var / spool / mail (e / ou / var / vmail)
  • / var / www (que você já moveu)

O mesmo procedimento pode ser aplicado à maioria dos diretórios (exceto algo como / boot). Além disso, você pode considerar o uso de rsync em vez de cp, se alguns arquivos estiverem bloqueados, etc. e você tiver que executá-lo uma segunda vez, pode ser mais indulgente.

    
por 25.12.2011 / 08:16