mudando para uma unidade maior no linux

7

Eu tenho uma caixa linux que está ficando sem espaço, em uma unidade de volume não-raiz. Qual é a melhor maneira de mudar para uma unidade maior?

Eu acho que inicializo no modo de usuário único, formato, montei a nova unidade, fiz algum comando de cópia mágica que preserva links, permissões, datas de arquivos e tudo mais, desmonte a unidade antiga, monte a nova como o nome antigo e reinicie.

Isso soa certo? Estou esquecendo de algo? Sugestões? Dicas? Alguém sabe o que seria o comando cp?

Esta é uma máquina Ubuntu.

    
por Stu 29.07.2009 / 21:28

6 respostas

10

Se você forneceu o layout atual (a saída de fdisk -l será suficiente se você não usar o LVM, a saída de " fdisk -l ", " pvdisplay -C ", " vgdisplay -C " e "% co_de" % "se você usar o LVM) e a unidade / partição que você deseja desenvolver, poderíamos dar uma resposta mais precisa.

Assumindo que por "unidade de volume não raiz" você quer dizer uma unidade com uma única partição que contém o volume que você deseja transformar em um novo disco, que o disco antigo aparece como sdb (e a partição nele sdb1), a partição existente é um sistema de arquivos ext2 ou ext3, que o novo disco está em e particionado como um único volume (digamos, sdc1), e que você deseja mover completamente para o novo disco se livrando do antigo, o seguinte funcionará:

  1. Backup dos dados, apenas no caso de
  2. interrompe todos os serviços e outros processos que estão acessando o volume / dev / sdb1
  3. desmontar
  4. lvdisplay -C
  5. dd if=/dev/sdb1 of=/dev/sdc1
  6. fsck /dev/sdc1 -C 0
  7. Ajustar quaisquer ponteiros para o dispositivo antigo (ou seja, em / etc / fstab) para o novo
  8. Remontar e reiniciar serviços
  9. Remova a unidade antiga na próxima vez que a máquina for desligada. Você pode querer mantê-lo por um tempo como um backup de emergência, caso a nova unidade se torne um fracasso

edite: o "-C 0" no fsck e "-p" no resize2fs dizem aos respectivos utilitários para produzirem informações de progresso enquanto eles fazem suas tarefas. A operação de redimensionamento deve ser bem rápida (normalmente, leva muito tempo se o volume ficar menor, pois mais dados precisam ser movidos nesse caso). Se você tiver pv instalado, então você pode fazer o passo 3 dar-lhe informações de progresso, substituindo a chamada para dd com " pv / dev / sdb1 > / dev / sdc1 "

edite 2: esta é uma boa opção para volumes bastante completos, já que copia bloco por bloco no começo, então não precisa virar cabeças de unidade por causa de estruturas de sistema de arquivos (então a cópia acontecerá tão rápido quanto o mais lento "a velocidade que a unidade antiga pode ler em massa" e "a velocidade que a nova unidade pode gravar em massa" e não tem nenhuma confusão com links físicos, nós de dispositivos ou qualquer outra coisa especial pode estar no sistema de arquivos - para volumes que são bastante vazios, você encontrará um dos métodos baseados em cp / cpio muito mais rápido, já que eles não estarão copiando todos os blocos vazios de disco para disco

    
por 29.07.2009 / 21:50
4

Eu prefiro o rsync para este tipo de trabalho, porque se algo interromper o processo de cópia, você pode simplesmente rodar o rsync novamente e ele vai continuar de onde parou, não no começo novamente.

você também pode executar o rsync enquanto o sistema está funcionando normalmente (embora seja mais lento enquanto o rsync estiver copiando arquivos). então, quando você estiver pronto para passar para a nova unidade, desligue tudo que está gravando na unidade antiga (incluindo processo do usuário, daemon, agendador de tarefas, etc) OU reinicie a unidade modo de usuário e execute o rsync novamente, para sincronizar a nova unidade com quaisquer alterações que ocorreram enquanto o rsync inicial estava sendo executado.

processo é aproximadamente:

  • instalar nova unidade
  • particione e formate-o com seu sistema de arquivos preferido
  • monte-o
  • rsync antigo fs para novo fs
  • reinicialize no modo de usuário único
  • rsync novamente
  • edite o / etc / fstab para montar novos fs no lugar dos antigos
  • reinicialize novamente (ou desligue e remova a unidade antiga primeiro)

se é provável que isso aconteça novamente no futuro, ou se você quiser usar a capacidade da unidade antiga e da nova, convém considerar o uso do LVM para a nova unidade ... em seguida, rincronize os dados para e edite fstab como acima. Depois de ter o sistema em execução no grupo de volumes LVM, você pode adicionar a unidade antiga (e / ou qualquer unidade extra nova) ao grupo de volume e redimensionar a fs.

    
por 29.07.2009 / 23:51
1

Meu sistema de arquivos favorito copy-fu:

(cd /src; tar cf - .) | (cd /dst; tar xpf -)

Estou curioso para ver o que os outros sugerem, no entanto. Como você está movendo todo o sistema de arquivos, é provável que haja melhores escolhas. Ah, o sistema de arquivos original está em um volume LVM?

    
por 29.07.2009 / 21:42
0

Eu sempre fui parcial para mim mesmo:

cd /src; find . -print | cpio -dpum /dst

    
por 29.07.2009 / 21:44
0

Se não for a raiz e não houver nada usando a unidade ( /usr/sbin/lsof | grep '/path/to/mount/point ), não será necessário inicializar no modo de usuário único.

Eu faria cp -a , se não fosse LVM. Mas, pelo que me lembro, o Ubuntu (versão 9, pelo menos) requer o disco de instalação alternativo. Eu não sei sobre outras versões.

    
por 29.07.2009 / 21:45
0

Se você tem lvm, pode fazê-lo em tempo real, sem reiniciar / interromper nenhum serviço; se o seu sistema suportar a conexão automática das unidades, você também poderá substituir as unidades. - particionar o novo disco - pvcreate a nova partição - pvcreate new_disk - estenda seu grupo de volumes para a nova partição vgextend datavg new_disk - pvmove old_disk new_disk

    
por 29.07.2009 / 22:04