AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 669642
Accepted
Teatree
Teatree
Asked: 2021-09-19 18:39:38 +0800 CST2021-09-19 18:39:38 +0800 CST 2021-09-19 18:39:38 +0800 CST

LVM: Como clonar o volume lógico criptografado de vários discos?

  • 772

Estou executando o Arch Linux. Desejo clonar um volume lógico criptografado de 2 discos em um único grupo de volumes (LUKS no LVM). Há uma ligeira captura. Eu quero trocar algumas das unidades.

Eu tenho:

  • VG1: LV: PV(OldDrive1) + PV(OldDrive2)
sda (OldDrive1)
    -vg1-luks_encrypted_lv
sdb (OldDrive2)
    -vg1-luks_encrypted_lv

Eu tenho duas outras unidades (NewDrive1 e NewDrive2). Eu quero criar um VG2 que é um clone do VG1. No entanto, eu quero trocar algumas unidades ao redor. Então eu quero:

  • VG1: LV: PV(OldDrive1) + PV(NewDrive1)
  • VG2: LV: PV(OldDrive2) + PV(NewDrive2)
sda (OldDrive1)
    -vg1-luks_encrypted_lv
sdb (OldDrive2)
    -vg2-cloned_luks_encrypted_lv
sdc (NewDrive1)
    -vg1-luks_encrypted_lv
sdd (NewDrive2)
    -vg2-cloned_luks_encrypted_lv

Meu plano atual é clonar cada unidade. Eu estava pensando anteriormente em usar dd, mas depois de alguma leitura talvez eu precise usar pvmove?:

  • OldDrive1 -> NewDrive1
  • OldDrive2 -> NewDrive2

Eu poderia então trocar as unidades físicas no LVM, porque as unidades são clones bit a bit? Estou preocupado que estou perdendo alguma coisa. Como eu incorporaria as unidades de notícias no LV? Gostaria de receber alguns conselhos, porque não quero perder nenhum dado. Obrigado.


Editar:

A resposta do @telcoM funcionou muito bem. Muito obrigado. Usei o método online. Se alguém quiser fazer algo semelhante, há poucas coisas dignas de nota.

Na Etapa 7 :

O lvconvert -mpadrão agora é raid1, não o próprio sistema de espelhos do lvm. Leia man lvconvertpara mais detalhes. Como eu queria dividir imediatamente o espelho, era muito mais fácil usar apenas o espelho legado do lvm com o mirrorlog armazenado na memória:

lvconvert --type mirror -m +1 --mirrorlog core vg1/luks_encrypted_lv OldDrive2 NewDrive2

Basta lembrar que --mirrorlog corecoloca o mirrorlog na memória. Portanto, não desligue seu computador antes de executar lvconvert --splitmirrorsou você perderá seu arquivo mirrorlog.

Na Etapa 9 :

Antes disso, vgsplitvocê precisa desmontar o sistema de arquivos e desativar o volume lógico .

Na Etapa 11 :

A maioria das pessoas provavelmente percebe isso, mas você precisa atribuir um UUID $uuidantes de executar o cryptsetup luksUUID --uuid $(uuid) /dev/mapper/VG2-LVx. Execute algo como uuid=$(uuidgen)primeiro.

lvm encryption
  • 2 2 respostas
  • 349 Views

2 respostas

  • Voted
  1. Best Answer
    telcoM
    2021-09-20T04:10:38+08:002021-09-20T04:10:38+08:00

    "Necessidade" é uma palavra forte - há mais de uma maneira de alcançar o que você deseja.

    Com pvmove, você pode fazer isso on-line, enquanto o LV criptografado está em uso.

    1.) pvcreateNova Unidade1

    2.)vgextend VG1 NewDrive1

    3.) pvmove OldDrive2(significa efetivamente: "mova qualquer extensão alocada ao LVM do OldDrive2 para qualquer outra unidade no VG1 para que o OldDrive2 fique completamente não alocado, se possível." Isso levará algum tempo: talvez você queira executá-lo em um screen/ tmuxsession com uma -vopção erbose.)

    4.) Use pvsou pvdisplay OldDrive2para certificar-se de que OldDrive2 agora está completamente não alocado.

    5.)pvcreate NewDrive2

    6.)vgextend VG1 NewDrive2

    7.) para cada LV em VG1: lvconvert -m +1 VG1/LVx OldDrive2 NewDrive2("criar um espelho de VG1/LVx, alocando espaço para o espelho de OldDrive2 e NewDrive2"). Se não houver espaço para o log de espelho no disco, talvez seja necessário usar a --mirrorlog coreopção aqui.

    8.) uma vez que os espelhos estejam sincronizados, para cada LV no VG1: lvconvert --splitmirrors 1 --name LVcopyx VG1/LVx OldDrive2 NewDrive2("Divida um espelho do LVx localizado em OldDrive2 e/ou NewDrive2 e nomeie-o como "LVcopyx" para evitar um conflito de nomes.)

    9.) vgsplit VG1 VG2 OldDrive2 NewDrive2("Divida OldDrive2 e NewDrive2 do VG1, levando seus LVs com eles, e nomeie o novo VG resultante como VG2.")

    10.) para cada LV no VG2: lvrename VG2 LVcopyx LVxpara restaurar o(s) nome(s) do LV original, agora que as cópias foram separadas em seu próprio VG e não há mais conflito. Agora você tem um novo VG2 que contém cópias dos LVs do VG1 como eles existiam no ponto de divisão dos espelhos LV na etapa 8.).

    11.) Antes de realmente usar o VG2, você precisará vgchange -ay VG2e, em seguida, cryptsetup luksUUID --uuid $(uuid) /dev/mapper/VG2-LVxdar a ele um UUID exclusivo distinto de sua contraparte VG1, e depois de desbloquear a criptografia, você também deve fornecer ao sistema de arquivos dentro dele um novo UUID também. Para BtrFS, isso é vital ( btrfstune -u /dev/mapper/VG2-LVx-crypt); para outros sistemas de arquivos, isso é essencialmente apenas uma conveniência para que a montagem baseada em UUID funcione.


    Se você pode ter o VG off-line e pode desconectar/reconectar discos, você também pode:

    1.) Desmonte cryptsetup luksClosee desative o VG ( vgchange -an VG1). Para evitar a ativação automática indesejada na inicialização ou no momento do hot-plug, marque-o também como exportado ( vgexport VG1).

    2.) Clone as unidades conforme planejado.

    3.) Desconecte as unidades para que o sistema veja apenas OldDrive2 e NewDrive2. Se o seu hardware permite fazer isso a quente, use echo 1 > /sys/block/<device name>/device/deletepara uma desconexão a quente graciosa.

    4.) Inicialize o sistema ou execute vgscanapós um hot-unplug gracioso. Em seguida, importe e renomeie o VG: vgimport VG1, depois vgrename VG1 VG2. Use vgchange --uuid VG2para dar ao novo VG2 uma nova identidade distinta do antigo VG1 e use pvchange --uuid OldDrive2e pvchange --uuid NewDrive2para fazer o mesmo no nível PV. Após importar e renomear, lembre-se de que você precisará ativar o VG antes de poder montá-lo ou fazer qualquer outra operação nele: vgchange -ay VG2.

    5.) Depois de ativar o VG, use cryptsetup luksUUID --uuid=$(uuid) /dev/mapper/VG2-LVxpara dar ao contêiner LUKS uma nova identidade distinta e, depois de desbloquear a criptografia, use uma ferramenta específica do sistema de arquivos para fazer o mesmo no nível do sistema de arquivos também. ( isso é especialmente importante para BtrFS btrfstune -u /dev/mapper/VG2-LVx-crypt :)

    6.) Agora você pode conectar OldDrive1 e NewDrive1 novamente (use vgscanse você fizer hot-plug) e vgimport VG1"novamente" e ativá-lo com vgchange -ay VG1. Agora você tem dois VGs totalmente separados que você pode usar como achar melhor.

    • 2
  2. brt
    2021-09-20T04:08:17+08:002021-09-20T04:08:17+08:00

    se você conseguir fechar o contêiner LUKS durante o dd clonig, as etapas podem ser as seguintes:

    • adicionar NewDrive1 a VG1
    • use "pvmove OldDrive2 NewDrive1"
    • remover OldDrive2 de VG1
    • crie VG2 usando OldDrive2 + NewDrive2
    • crie seu LV desejado no VG2
    • use dd VG1/LV -> VG2/LV

    se você planeja usar ambas as cópias na mesma máquina, você também terá que alterar o UUID do contêiner LUKS e o sistema de arquivos que o contém! obrigado a @telcoM por apontar isso!

    • 0

relate perguntas

  • Como usar o pv para mostrar o progresso da criptografia/descriptografia do openssl?

  • Confuso sobre o sal no arquivo de criptografia openssl

  • lvm e uma questão de particionamento

  • Redimensionando um volume físico LVM no dispositivo /dev/sdb

  • snap /dev/loop em 100% de utilização -- sem espaço livre

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve