Como migrar um sistema de arquivos raiz para outra partição dentro do sistema em execução?

Como migrar um sistema de arquivos raiz para outra partição dentro do sistema em execução?

Tento migrar um sistema de arquivos raiz do ext4 para outro tipo de partição (zfs) e comecei com um simples

rsync -a --exclude=/boot --exclude=/mnt --exclude=/media --exclude=/tmp 
--exclude=[all zfs pools with default mountpoint] 
/ /target/directory/mountpoint/

então a transferência travou em arquivos diferentes /proc, após a adição --exclude=/proc rsynctravou em um arquivo em /sys/devices, o que me levou a desistir de tentativa e erro. Depois de ler man proce sobre /sys(Wikipédia) Sei que é preciso mais pesquisa do que uma solução simples para encontrá-la. Espero que alguém possa ajudar. O sistema raiz é o Ubuntu 14.04 amd64 (o sistema live também, mas fique à vontade para fazer sugestões se isso for um problema limitante).

É claro que é fácil inicializar em um sistema ativo e copiar os dados lá, mas esta é uma solução alternativa apenas para a questão.

Responder1

Vou começar com um aviso de isenção de responsabilidade, pois não tenho um sistema que possa usar para testar se a inicialização realmente funcionará. Esta resposta é baseada no meu entendimento e você só deve tentar isso em um sistema de desenvolvimento até confirmar que funciona.

Como todos os sistemas de arquivos virtuais são sistemas de arquivos virtuais, acho que o sistema operacional deve criar seu conteúdo na inicialização /dev. Se isso for verdade, você deverá ser capaz de fazer:/sys/proc

rsync -ax / /target/directory/mountpoint

O -x diz ao rsync para não cruzar os limites do sistema de arquivos, portanto, ele ignorará os sistemas de arquivos virtuais e não será necessário especificar os pools zfs. Ainda criará os pontos de montagem, mas eles estarão vazios.

Se o seu /tmp não for sua própria partição e você não quiser copiar esses arquivos, ainda será necessário copiá --exclude-lo manualmente.

Responder2

Verifique se você está executando o LVM. Nesse caso, você pode fazer instantâneos do sistema de arquivos usando LVM e depois copiar a partir daí.

Eles foram inventados porque os backups precisam ser criados a partir de um sistema de arquivos inativo ou o backup não é muito útil. Os instantâneos resolverão tanto o problema entre dispositivos quanto o problema de arquivo transitório.

Observe que se você tiver arquivos grandes, como bancos de dados, que estão ativos, o rsync e outros backups provavelmente produzirão versões inconsistentes, pois partes do arquivo serão copiadas antes de uma alteração no banco de dados e outras copiadas depois. Os instantâneos também são uma tentativa de resolver esse problema.

Nota: o btrfs possui uma forma superior de captura instantânea do sistema de arquivos, mas se você já estiver executando o ext4, desta vez será tarde demais para isso.

Responder3

Adjunto: Se puder (você pode se estiver no console local, não pode se estiver conectado via ssh ou precisar manter o sistema totalmente funcionando), mude para o nível de execução 1 ("modo de usuário único", o comando é "init 1") antes de fazer tal coisa. Isso interromperá todos os processos não essenciais que possam alterar as coisas no sistema de arquivos enquanto você o copia.

Lembre-se de ajustar seu fstab, especialmente se UUIDs forem usados.

Considere usar "chroot /where/the/new/root/is/mounted /bin/bash" para testar seu sistema de arquivos recém-replicado e, possivelmente, para reinstalar seu carregador de boot. Talvez seja necessário montar manualmente /proc e /sys no chroot.

Se estiver reinstalando um gerenciador de inicialização a partir do chroot, certifique-se de que /etc/mtab (no sistema com chroot) não contenha lixo que confunda o instalador do carregador. Se for grub 1.x , talvez seja necessário excluir o (novo) arquivo /boot/device.map.

Se você quiser jogar pelo seguro com /dev, você pode preenchê-lo (no novo sistema de arquivos) com "MAKEDEV genérico" - isso criará um conjunto de arquivos de dispositivo "abaixo" do ponto de montagem do udev que evitará que seu sistema trave fortemente na inicialização, caso o udev não esteja funcionando.

informação relacionada