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

0

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

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

a transferência ficou presa em arquivos diferentes em /proc , depois de adicionar --exclude=/proc rsync ficou preso em um arquivo em /sys/devices , o que me levou a desistir de testar & erro. Depois de ler man proc e sobre /sys ( Wikipedia ), percebo que é preciso mais pesquisa do que uma simples solução requer para eu encontrar isso. Espero que alguém possa ajudar. O sistema de raiz é o Ubuntu 14.04 amd64 (o sistema ao vivo também, mas sinta-se livre 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 essa é uma solução alternativa apenas para a pergunta.

    
por Karl Richter 23.10.2014 / 21:30

3 respostas

2

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

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

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 é necessário especificar os conjuntos zfs. Ainda vai criar os pontos de montagem, mas eles estarão vazios.

Se o seu / tmp não for a sua própria partição e você não quiser copiar esses arquivos, você ainda precisará manualmente --exclude it.

    
por 23.10.2014 / 21:53
2

Verifique se você está executando o LVM. Em caso afirmativo, você pode fazer instantâneos do sistema de arquivos usando o LVM e, em seguida, copiar de lá.

Estes 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 o problema de vários dispositivos, bem como o problema de arquivos temporários.

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 são uma tentativa de resolver esse problema também.

Nota: o btrfs tem uma forma superior de snapshot do sistema de arquivos, mas se você já estiver executando o ext4, então é tarde demais para isso agora.

    
por 24.10.2014 / 02:25
0

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

Mente-se ajustando seu fstab, especialmente se os UUIDs forem usados.

Considere usar "chroot / onde / o / new / root / is / mounted / bin / bash" para testar seu sistema de arquivos recém-replicado e, possivelmente, reinstalar o seu gerenciador de inicialização. Você pode ter que montar manualmente / proc e / sys sob o chroot.

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

Se você quiser jogar com o / dev, você pode preenchê-lo (no novo sistema de arquivos) com "MAKEDEV generic" - isso criará um conjunto de arquivos de dispositivos "abaixo" do ponto de montagem do udev que manterá seu sistema de travar com força na inicialização, caso o udev não seja funcional.

    
por 04.06.2017 / 02:21