Laboratório: configurando lvm, raid no linux

Uma pequena digressão: este l \ r é sintético.


Algumas das tarefas descritas aqui podem ser muito mais fáceis, mas como a tarefa de l / r é familiarizar-se com a funcionalidade raid, lvm, algumas operações são artificialmente complicadas.


Requisitos para ferramentas para executar l \ r:


  • Ferramentas de virtualização como o Virtualbox
  • Imagem de instalação do Linux como o Debian9
  • Disponibilidade da Internet para baixar vários pacotes
  • Conexão via ssh à VM instalada (opcional)

ATENÇÃO


Esse trabalho de laboratório está associado a questões delicadas como a segurança dos dados - essa é uma área que permite que você perca todos os seus dados devido ao menor erro - uma letra ou número extra.


Como você está fazendo um trabalho de laboratório, não está em perigo, a menos que precise começar a fazê-lo novamente.


Na vida real, tudo é muito mais sério, portanto, você deve digitar com muito cuidado os nomes dos discos, entendendo exatamente o que está executando com o comando atual e com quais discos trabalha.


O segundo ponto importante é a nomeação de discos e partições: dependendo da situação, os números dos discos podem diferir daqueles valores que são apresentados nos comandos do laboratório.
Portanto, por exemplo, se você remover a unidade sda ​​da matriz e adicionar uma nova unidade, a nova unidade será exibida no sistema com o nome sda. Se você reiniciar antes de adicionar um novo disco, o novo disco será chamado sdb e o antigo será chamado sda


O trabalho de laboratório deve ser feito sob superusuário (root), pois a maioria dos comandos requer privilégios elevados e não faz sentido elevar privilégios constantemente por meio do sudo.


Materiais de estudo


  • RAID
  • LVM
  • Nomeação de disco do Linux
  • O que é uma seção
  • O que é uma tabela de partição e onde ela é armazenada
  • O que é grub

Utilitários Utilizados


  1. Exibir informações do disco:
    • lsblk -o NOME, TAMANHO, FSTYPE, TYPE, MOUNTPOINT
    • fdisk -l
  2. Exibir informações e trabalhar com LVM
    • pvs
    • pvextend
    • pvcreate
    • pvresize
    • vgs
    • vgreduce
    • lvs
    • lvextend
  3. Veja informações e trabalhe com RAID:
    • cat / proc / mdstat
    • mdadm
  4. Pontos de montagem:
    • montar
    • umount
    • cat / etc / fstab
    • cat / etc / mtab
  5. Re-particionando o disco:
    • fdisk / dev / XXX
  6. Copiando seções:
    • dd se = / dev / xxx de = / dev / aaaa
  7. Trabalhe com a tabela de partição:
    • partx
    • sfdisk
    • mkfs.ext4
  8. Trabalhe com o carregador de inicialização:
    • grub-install / dev / XXX
    • update-grub
  9. misc
    • lsof
    • apto
    • rsync

O trabalho de laboratório consiste em 3 partes:


  • Configurando um sistema íntegro usando lvm, raid.
  • Emulação de falha de uma das unidades.
  • Substituição de discos dinamicamente, com a adição de novos discos e transferência de partição.

Tarefa 1 (Instalando o SO e Configurando LVM, RAID)


  1. Crie uma nova máquina virtual com os seguintes recursos:


    • 1 gb de ram
    • 1 CPU
    • 2 hdd (nomeie-os ssd1, ssd2 e atribua tamanho igual, marque as caixas hot swap e ssd)
    • Controlador SATA configurado em 4 portas:

      selecionar discos ssd

  2. Comece a instalar o Linux e vá para a escolha de discos rígidos, faça o seguinte:


    • Método de particionamento: manual, após o qual você deverá ver a seguinte imagem:

      discos de partição
    • Configurando uma partição separada em / boot: selecione o primeiro disco e crie uma nova tabela de partições:
      • Tamanho da partição: 512M
      • Ponto de montagem: / boot
    • Repita a configuração para o segundo disco, mas como você não pode montar / inicializar 2 vezes ao mesmo tempo, selecione o ponto de montagem: none e, finalmente, obtenha o seguinte (imagem com um batente, refaz a preguiça):

      discos de partição
    • Configuração de RAID:
    • Selecione o espaço livre no primeiro disco e configure o volume físico para RAID como o tipo de partição.
    • Selecione "Concluído configurando a partição"
    • Repita exatamente a mesma configuração para o segundo disco, resultando no seguinte:

      discos de partição
    • Selecione "Configurar RAID de software"
      • Criar dispositivo MD
      • Tipo de dispositivo RAID de software: selecione uma matriz espelhada
      • Dispositivos ativos para a matriz RAID XXXX: selecione as duas unidades
      • Dispositivos de reposição: deixe 0 como padrão
      • Dispositivos ativos para a matriz RAID XX: selecione partições que você criou em RAID
      • Concluir
    • No final, você deve obter esta imagem:

      discos de partição
    • Configuração do LVM: Selecione Configurar o Logical Volume Manager
    • Mantenha o layout atual da partição e configure o LVM: Sim
    • Criar grupo de volumes
    • Nome do grupo de volumes: sistema
    • Dispositivos para o novo grupo de volumes: Escolha o RAID criado
    • Criar volume lógico
      • nome do volume lógico: raiz
      • tamanho do volume lógico: 2 \ 5 do tamanho do seu disco
    • Criar volume lógico
      • nome do volume lógico: var
      • tamanho do volume lógico: 2 \ 5 do tamanho do seu disco
    • Criar volume lógico
      • nome do volume lógico: log
      • tamanho do volume lógico: 1 \ 5 do tamanho do seu disco
    • Escolhendo Exibir detalhes da configuração, você deve obter a seguinte imagem:

      discos de partição
    • Depois de concluir a configuração do LVM, você deverá ver o seguinte:

      discos de partição
    • Particionamento: por sua vez, selecione cada volume criado no LVM e particione-os, por exemplo, para raiz como esta:
      • Use como: ext4
      • ponto de montagem: /
    • O resultado da marcação da partição raiz deve ser o seguinte:

      discos de partição
    • Repita a operação de marcação para var e log selecionando os pontos de montagem apropriados (digite manualmente / var e / var / log), obtendo o seguinte resultado:

      discos de partição
    • Escolha Concluir particionamento
    • Você será solicitado a fazer algumas perguntas sobre o fato de ainda ter uma partição desmontada e o swap não estar configurado. Ambas as perguntas devem ser respondidas de forma negativa.
    • O resultado final deve ficar assim:

      discos de partição

  3. Conclua a instalação do sistema operacional instalando o grub no primeiro dispositivo (sda) e inicialize o sistema.


  4. Copie o conteúdo da partição / boot da unidade sda ​​(ssd1) para a unidade sdb (ssd2)


    dd if=/dev/sda1 of=/dev/sdb1 

  5. Instale o grub no segundo dispositivo:


    • Veja as unidades no sistema:


       fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • Liste todos os discos que o comando anterior emitiu para você e descreva que tipo de disco é.
    • Localize a unidade na qual o grub não foi instalado e conclua esta instalação:


       grub-install /dev/sdb 

    • Veja o ataque atual com cat / proc / mdstat e anote o que viu.
    • Veja a saída dos comandos: pvs, vgs, lvs, mount e anote exatamente o que você viu.


Descreva com suas próprias palavras o que você fez e qual resultado obteve como resultado da tarefa concluída.


Depois de concluir esta tarefa, é recomendável fazer backup da pasta com a máquina virtual ou criar uma caixa vaga .


Resultado: uma máquina virtual com discos ssd1, ssd2.


Tarefa 2 (emulando a falha de uma das unidades)


  1. Se você marcou a caixa de seleção hot swap, é possível excluir discos em tempo real:
    • Exclua a unidade ssd1 nas propriedades da máquina.
    • Localize o diretório em que os arquivos da sua máquina virtual estão armazenados e exclua ssd1.vmdk.
  2. Verifique se sua máquina virtual ainda está em execução.
  3. Reinicie a máquina virtual e verifique se ela ainda funciona
  4. Verifique o status da matriz RAID: cat /proc/mdstat
  5. Adicione um novo disco do mesmo tamanho na interface da VM e chame-o de ssd3.
  6. Realize operações:
    • Veja o novo disco que chega ao sistema com o fdisk -l
    • Copie a tabela de partição do disco antigo para o novo: sfdisk -d /dev/XXXX | sfdisk /dev/YYY sfdisk -d /dev/XXXX | sfdisk /dev/YYY
    • Veja o resultado com fdisk -l
    • Adicione um novo disco à matriz RAID: mdadm --manage /dev/md0 --add /dev/YYY
    • Veja o resultado: cat /proc/mdstat . Você deve ver que a sincronização foi iniciada.
  7. Agora você precisa sincronizar manualmente as partições que não fazem parte do RAID. Para fazer isso, usaremos o utilitário dd, copiando do disco "ativo" para o novo que você instalou recentemente:


     dd if=/dev/XXX of=/dev/YYY 

  8. Após a conclusão da sincronização, instale o grub no novo disco.
  9. Reinicie a VM para garantir que tudo esteja funcionando.

Descreva com suas próprias palavras o que você fez e qual resultado obteve como resultado da tarefa concluída.


Resultado: removeu a unidade ssd1, salvou a unidade ssd2 e adicionou a unidade ssd3.


Tarefa 3 (Adicionando novos discos e particionamento)


Esta é a tarefa mais difícil e volumosa de todas as apresentadas. Verifique cuidadosamente o que você está fazendo e com quais discos e partições. É recomendável que você faça uma cópia antes de executá-la. Esta tarefa, independentemente da tarefa número 2, pode ser executada após a tarefa número 1, ajustada para nomes de disco.


A segunda parte da tarefa deste laboratório deve levar exatamente ao mesmo estado que estava após a conclusão da primeira parte.


Para facilitar o trabalho, eu recomendo não excluir fisicamente os discos da máquina host, mas apenas desconectá-los nas propriedades da máquina. Do ponto de vista do sistema operacional na VM, isso parecerá exatamente o mesmo, mas, nesse caso, você poderá conectar a unidade novamente e continuar trabalhando, revertendo alguns pontos, caso tenha algum problema. Por exemplo, você pode ter executado incorretamente ou se esqueceu de copiar a partição / boot para um novo disco. Só posso aconselhá-lo a verificar duas vezes com quais discos e partições você está trabalhando e, melhor ainda, anotar a correspondência de discos, partições e o número "físico" do disco em um pedaço de papel. O comando lsblk desenha uma árvore bonita e compreensível, use-a o mais rápido possível para analisar o que você fez e o que precisa ser feito.


Para a história ...


Imagine que seu servidor funcionou por muito tempo em 2 discos ssd, quando de repente ...


  1. Simule uma falha no disco ssd2 removendo o disco das propriedades da VM e reiniciando.


  2. Veja o estado atual dos discos e RAID:


     cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  3. Você tem sorte - as autoridades estão autorizadas a comprar vários discos novos:


    2 Grandes volumes SATA para a tarefa atrasada de mover a seção de log para um disco separado. 2 SSDs para substituir o falecido, bem como para substituir o ainda em funcionamento.


    Lembre-se de que a cesta do servidor suporta a instalação de apenas 4 unidades. ao mesmo tempo, para que você não possa adicionar todos os discos de uma só vez.


    O volume do HDD é 2 vezes maior que o SSD.
    O volume do SSD escolhe 1,25 vezes o tamanho do antigo SSD.


  4. Adicione uma nova unidade ssd, nomeie-a ssd4 e, depois de adicionar, verifique o que aconteceu:


     fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  5. Primeiro de tudo, você deve cuidar da segurança dos dados do disco antigo. Desta vez, transferiremos dados usando o LVM:


    • Primeiro de tudo, você precisa copiar a tabela de arquivos do disco antigo para o novo:


       sfdisk -d /dev/XXX | sfdisk /dev/YYY 

      Substitua os discos corretos em vez de x, y e descubra o que esse comando faz.


    • Execute lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT e compare sua saída com a chamada anterior. O que mudou?
    • Use o comando dd para copiar os dados / boot no novo disco:


       dd if=/dev/XXX of=/dev/YYY 

    • Se / boot permanecer montado na unidade antiga, ele deverá ser montado em uma unidade ativa:


       mount | grep boot #     lsblk #           ,     umount /boot #  /boot mount -a #      /etc/fstab. #      /dev/sda,         

    • Instale o carregador de inicialização na nova unidade ssd:


       grub-install /dev/YYY 

      Por que estamos fazendo esta operação?


    • Crie uma nova matriz de ataque com apenas uma nova unidade ssd incluída:


       mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYY 

      O comando acima não funcionará sem especificar uma chave especial.Leia a ajuda e adicione essa chave ao comando.


    • Use o comando cat / proc / mdstat para verificar o resultado da sua operação. O que mudou?
    • Execute lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT e compare sua saída com a chamada anterior. O que mudou?

  6. O próximo passo é configurar o LVM


    • Execute o comando pvs para visualizar informações sobre os volumes físicos atuais.
    • Crie um novo volume físico incluindo a matriz RAID criada anteriormente:


       pvcreate /dev/md63 

    • Execute lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT e compare sua saída com a chamada anterior. O que mudou?
    • Execute o comando pvs novamente. O que mudou?
    • Aumente o tamanho do sistema do Grupo de volumes com o seguinte comando:


       vgextend system /dev/md63 

    • Execute os comandos e anote o que viu e o que mudou.


       vgdisplay system -v pvs vgs lvs -a -o+devices 

      Em que disco físico LV var, log, root está instalado agora?


    • Mova os dados da unidade antiga para a nova, substituindo os nomes de dispositivos corretos.


       pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63 

      Repita a operação para todo o volume lógico.


    • Execute os comandos e anote o que viu e o que mudou.


       vgdisplay system -v pvs vgs lvs -a -o+devices lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • Mude o nosso VG removendo o antigo ataque dele. Substitua o nome correto da invasão.


       vgreduce system /dev/md0 

    • Execute os comandos e anote o que viu e o que mudou.


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgs 

    • Para a beleza da imagem, remonte / inicialize na segunda unidade ssd (ssd4) e execute lsblk. Como resultado, nada deve ser montado no disco ssd3. Verifique cuidadosamente se a partição / boot não está vazia! ls /boot deve mostrar vários arquivos e pastas. Examine o que está armazenado nesta seção e anote qual arquivo / diretório é responsável por quê.

  7. Remova o disco ssd3 e adicione ssd5, hdd1, hdd2 de acordo com o TK acima, eventualmente obtendo:


    • ssd4 - primeiro novo ssd
    • ssd5 - segundo novo ssd
    • hdd1 - o primeiro novo disco rígido
    • hdd2 - segundo novo disco rígido

  8. Verifique o que aconteceu depois de adicionar discos:


     fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

  9. Vamos restaurar a matriz principal de ataques:


    • Copie a tabela de partição, substituindo os discos corretos:


       sfdisk -d /dev/XXX | sfdisk /dev/YYY 

    • Observe que, quando copiamos a tabela de partição do disco antigo, o novo tamanho não usa todo o espaço do disco rígido. Portanto, em breve precisaremos redimensionar esta seção e expandir o ataque. Veja você mesmo inserindo o comando:


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 


  10. Copie a partição de inicialização / boot do ssd4 para o ssd5:


     dd if=/dev/XXX of=/dev/YYY 

  11. Instale o grub no novo disco (ssd5).


  12. Altere o tamanho da segunda partição da unidade ssd5.


    • Execute o utilitário para trabalhar com o layout do disco:


       fdisk /dev/XXX 

    • Digite a tecla d para excluir a partição existente (selecione 2).
    • Digite a tecla n para criar uma nova partição.
    • Digite a tecla p para indicar o tipo de partição primária.
    • Digite a chave 2 para que a nova partição tenha um segundo número.
    • Primeiro setor: pressione enter para aceitar o tamanho inicial da seção calculada automaticamente.
    • Último setor: pressione enter para aceitar o tamanho da seção final calculado automaticamente.
    • Digite a tecla l para ver uma lista de todos os tipos de partição possíveis e encontre o Linux raid auto nela.
    • Digite a tecla t para alterar o tipo da partição criada (2) e digite o número encontrado na etapa anterior.
    • Digite a tecla w para gravar a alteração no disco.

  13. Releia a tabela de partição e verifique o resultado:


     partx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    • Adicione um novo disco à matriz de ataque atual (não se esqueça de substituir os discos corretos):


       mdadm --manage /dev/md63 --add /dev/sda2 

    • Expandimos o número de discos em nossa matriz para 2 partes:


       mdadm --grow /dev/md63 --raid-devices=2 

    • Veja o resultado: temos duas matrizes marcadas, mas as duas seções incluídas nessa matriz têm tamanhos diferentes:


       lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 


  14. Aumentar o tamanho da partição no disco ssd4


    • Execute o utilitário para trabalhar com o layout do disco:


       fdisk /dev/XXX 

    • Digite a tecla d para excluir a partição existente (selecione 2).
    • Digite a tecla n para criar uma nova partição.
    • Digite a tecla p para indicar o tipo de partição primária.
    • Digite a chave 2 para que a nova partição tenha um segundo número.
    • Primeiro setor: pressione enter para aceitar o tamanho inicial da seção calculada automaticamente.
    • Último setor: pressione enter para aceitar o tamanho da seção final calculado automaticamente.
    • No final da marcação, selecione Não para deixar a assinatura de que a seção pertence à matriz.
    • Digite a tecla w para gravar a alteração no disco.

  15. Relemos a tabela de partição e verificamos o resultado.


     partx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 

    Observe que agora as partições sda2, sdc2 são maiores que o tamanho do dispositivo RAID.


  16. Neste ponto, o tamanho da invasão agora pode ser expandido:


     mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # check result 

    Navegue pelo lsblk e anote o que mudou.


  17. No entanto, mesmo que tenhamos alterado o tamanho da invasão, os tamanhos da própria raiz vg, var, log não mudaram.


    • Veja qual é o tamanho do PV:


       pvs 

    • Amplie o tamanho do nosso PV:


       pvresize /dev/md63 

    • Veja qual é o tamanho do PV:


       pvs 


  18. Adicione o novo local VG var, root:


     lvs #     lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs #    

    Neste ponto, você concluiu a migração da matriz principal para novos discos. trabalho com ssd1, ssd2 está concluído.


  19. Nossa próxima tarefa é mover / var / log para novas unidades, para isso criaremos uma nova matriz e lvm nas unidades de disco rígido.


    • Vamos ver quais nomes têm as novas unidades de disco rígido:


       fdisk -l 

    • Crie uma matriz de ataque:


       mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd 

    • Crie um novo PV no ataque a partir de discos grandes:


       pvcreate data /dev/md127 

    • Neste PV, crie um grupo chamado data:


       vgcreate data /dev/md127 

    • Crie um volume lógico com o tamanho de todo o espaço livre e chame-o de val_log:


       lvcreate -l 100%FREE -n var_log data # lvs #   

    • Formate a partição criada no ext4:


       mkfs.ext4 /dev/mapper/data-var_log 

    • Vamos ver o resultado:


       lsblk 


  20. Transfira os dados do log da seção antiga para a nova


    • Montaremos um novo armazenamento de log temporário:


       mount /dev/mapper/data-var_log /mnt 

    • Vamos sincronizar as seções:


       apt install rsync rsync -avzr /var/log/ /mnt/ 

    • Descubra agora quais processos estão sendo executados com / var / log:


       apt install lsof lsof | grep '/var/log' 

    • Paramos estes processos:


       systemctl stop rsyslog.service syslog.socket 

    • Realizaremos a sincronização final das partições (dos dados que poderiam ter sido alterados desde a última sincronização):


       rsync -avzr /var/log/ /mnt/ 

    • Troque as seções:


       umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/log 

    • Veja o que aconteceu:


       lsblk 


  21. Edite / etc / fstab


    fstab - um arquivo no qual as regras são escritas de acordo com as partições que serão montadas na inicialização. Nossa tarefa é encontrar a linha na qual / var / log está montado e consertar o dispositivo de system-log do system-log em data-var_log .


  22. O mais importante nesse estágio é lembrar de alterar a tabela de partição (ext4, por exemplo). Como não importa como alteramos todos os tipos de invasões, lvm - até que o FS na partição seja notificado de que o tamanho da partição foi alterado, não poderemos usar o novo espaço. Use o comando resize2fs para alterar o FS.


  23. Acorde final


    • Vamos reiniciar. Se você fez tudo corretamente, você se encontrará novamente em seu sistema operacional (isso é necessário para garantir que tudo funcione. Esta etapa não tem significado, exceto para autoteste)
    • Verifique se tudo o que queríamos fazer foi realmente feito:


       pvs lvs vgs lsblk cat /proc/mdstat 


  24. [OPCIONAL] Siga as etapas


    • Reinicialize pressionando F12 para indicar diferentes discos durante a inicialização, para garantir que você possa inicializar a partir de qualquer um dos discos ssd, para que não tenhamos medo de um deles falhar.
    • Agora você tem o log LV desnecessário no sistema VG. Distribua esse espaço entre raiz ou var, mas, em vez de usar a construção 100% GRÁTIS, especifique o tamanho com as mãos usando a opção -L:


       -L 500M 

    • Corrija o problema com o fato de o / boot estar em duas partições sem sincronização. Você não precisa fazer isso da maneira correta. Aqui, ele é adicionado como exemplo. Não esqueça de copiar o conteúdo de / boot em algum lugar.
    • Crie um novo ataque e inclua sda1, sda2 nele.
    • Inclua essas partições no seu ataque existente e o restore / boot basicamente ataque, mas sem montá-lo mais.

Source: https://habr.com/ru/post/pt450896/


All Articles