A maneira mais rápida de converter um disco formatado em ext4 para LVM com ext4?

12

Atualmente, estou cp -aRcopiando dados do meu disco formatado ext4 de 1 TB (99% cheio) para um novo disco LVM-com-ext4-on-it. Está demorando para sempre.

Existe alguma maneira de tentar "converter" o disco no lugar? Estou no EC2, então o backup leva minutos.

Ou, como alternativa, existe alguma maneira mais rápida do cpque copiar diretamente o sistema de arquivos ext4 para o disco LVM?

Máx.
fonte

Respostas:

22

Escrevi blocos (née lvmify) que fazem essa conversão no local. Ele funciona diminuindo um pouco o sistema de arquivos, movendo o início do sistema de arquivos para o final da partição e copiando um superbloco LVM (pré-configurado com o PV / LV / VG correto) em seu lugar.

Gabriel
fonte
isso parece realmente interessante! Estou pensando em fazer backup de meus 500 GB para a outra partição (que já é lvm) apenas para experimentá-lo!
Aquarius Power
1
@ Gabriel, isso funcionará no live fs? Quero dizer, eu preciso desmontar o FS e, em seguida, ele o instala, ou funcionará no FS raiz raiz montada em ar / w?
precisa
1
@AmrMostafa: "Pretty" sólido? Eu tenho esta coisa sobre meus sistemas de arquivos, eu preciso deles para ser rocha sólida ... :-)
TJ Crowder
3
Os usuários do Ubuntu Trusty + terão dificuldade em instalar o python 3.3 necessário. Apenas 3.4 está disponível e os blocos não são atualizados desde dezembro de 2014: /
bksunday
1
Apesar do fato de ter sido atualizado há 5 ouvidos, ele trabalha em aço. Confirmado no esquema de partição NVMe SSD, GPT. Nota: use melhor o Python 3.6.
tosh
2

Não tenho certeza de como converter o disco ao vivo, mas acho que o rsync será uma maneira melhor e mais segura de copiar seus dados. Isso permitirá que você retome e mantenha os dados intactos no caso de a transferência parar.

Eu encontrei um processo semelhante concluído por alguém adicionando uma unidade externa ao sistema local como um LVM. Não há muita informação, mas acho que será suficiente para você começar:

"Então, hoje eu descobri o incrível que é o LVM. Instalando o Debian, selecionei" LVM - Usar disco inteiro ". Mas a unidade principal era uma unidade de laptop lenta e pequena de 5200 rpm. Hoje eu inseri minha unidade sobressalente de 1,5 TB e inicializei. o sistema nesta unidade maior e mais rápida.

Abordagem LVM: adicione / dev / sdc ao grupo de volumes e execute "pvmove / dev / sda". Isso move todos os dados do sda para outras unidades (apenas sdc disponível). Não é necessário reiniciar, não é necessário desmontar. Enquanto escrevo isso, os dados estão sendo movidos.

Posteriormente, faça "vgreduce megatron / dev / sda" para remover a unidade lenta do grupo de volumes e pronto. Dados movidos. (megatron é o nome do grupo de volumes e do meu computador). Isso pode ser uma notícia antiga para muitos, mas eu apenas achei isso muito legal :) "

Concedido que isso foi feito localmente, mas acho que com pesquisas adicionais, talvez você consiga fazer isso.

fonte

bmurtagh
fonte
2

Não existe método para fazer essa conversão LVM "on the fly".

Na verdade, o LVM reside no seu sistema de arquivos para expandi-lo por vários dispositivos físicos, ou distribuí-lo ou espelhá-lo etc. A etapa final na criação de um volume lógico é colocar um sistema de arquivos em cima dele. Aqui estão exemplos do RHEL6.

O que você precisará fazer é fazer backup ou arquivar os dados nesse dispositivo, destruir o sistema de arquivos existente, criar um volume lógico e recolocar um sistema de arquivos no topo. Se este for um sistema de arquivos raiz em um sistema operacional Linux, considere fazer uma reinstalação. Pode ser mais rápido.

Para cópias mais rápidas, gosto dd, mas não as uso com frequência. Cometer um erro ddé perigoso. Uma coisa que você pode tentar é tar czv <source fs> | (cd <destination fs>; tar x)transferir um arquivo tar compactado em tempo real.

Boa sorte!

dafydd
fonte
1
Usar compactação na operação tar não faz nenhum sentido. O único local em que os dados serão compactados é na memória, conforme são canalizados; é descompactado imediatamente novamente antes de ser gravado no disco. Somente agora, a operação gera várias vezes mais carga de CPU, porque é ao mesmo tempo compacta e descompacta, inutilmente, rapidamente. Além disso, para qualquer operação como essa que envolva sistemas de arquivos inteiros, você desejará pelo menos tar cSf - | tar xvpf - manipular arquivos e permissões esparsos. Possivelmente --selinuxtambém (se o volume de destino posteriormente substituir a fonte).
FeRD
Esse é um bom ponto se os dispositivos de origem e destino estiverem no mesmo host ou se você não tiver ciclos de CPU de sobra. Esses são pontos a serem considerados caso a caso. Eu gosto das opções "S" e "p" e do argumento "--selinux".
Dafydd 10/10
Bem, se alguém está clonando um sistema de arquivos canalizando uma operação tar on-the-fly através de um link de rede, então (a) é uma alma mais corajosa que eu, mas (b) você NÃO pode querer -p, a menos que os hosts compartilhem nomes de usuário / UIDs (embora a página de manual me lembre que -pé o padrão para o tar GNU quando executado como root) e --selinuxestá repleta de ainda mais perigos - provavelmente é melhor fazer uma restorecon -Rv(ou -Rp) sobre a coisa toda depois que ela estiver montada no final ( ) localização.
Ferd
O dd é a ferramenta adequada para esta operação, pois você está copiando uma partição. O dd fará uma cópia exata na nova partição e, em seguida, altere o fstab para carregar a partir da nova partição, em vez da antiga. Quando terminar de mover todas as partições da unidade antiga, você poderá destruir o sistema de arquivos e adicionar a unidade ao grupo de discos físicos do LVM e, em seguida, usar o espaço para expandir as partições da maneira que desejar.
Xalorous