Laboratório: configurando lvm, raid no Linux

Uma pequena digressão: este LR é sintético.
Algumas das tarefas descritas aqui podem ser realizadas de forma muito mais simples, mas como a tarefa de l/r é conhecer
com a funcionalidade raid e lvm, algumas operações são artificialmente complicadas.

Requisitos para ferramentas para executar LR:

  • Ferramentas de virtualização como Virtualbox
  • Imagem de instalação do Linux, por exemplo Debian9Name
  • Disponibilidade de Internet para download de diversos pacotes
  • Conecte-se via ssh à VM instalada (opcional)

CUIDADO

Este trabalho laboratorial está relacionado com uma questão tão subtil como a segurança de dados - esta é uma área onde
o 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, você não corre nenhum perigo, exceto que terá que começar a fazer tudo de novo.
Na vida real tudo é muito mais sério, então você deve inserir os nomes dos discos com muito cuidado, entendendo
o que exatamente você está fazendo com o comando atual e com quais discos está trabalhando.

O segundo ponto importante é a nomenclatura dos discos e partições: dependendo da situação, os números dos discos podem ser diferentes
daqueles valores que são apresentados nos comandos do trabalho de laboratório.
Então, por exemplo, se você remover o disco sda do array e depois adicionar um novo disco, o novo disco será exibido
em um sistema chamado sda. Se você reinicializar antes de adicionar um novo disco, o novo
o disco será denominado sdb e o antigo será denominado sda

O laboratório deve ser executado como superusuário (root), pois a maioria dos comandos exige
privilégios elevados e não faz sentido escalar privilégios constantemente via sudo

Materiais de estudo

  • RAID
  • LVM
  • Nomenclatura de disco no sistema operacional Linux
  • O que é uma seção
  • O que é uma tabela de partição e onde ela está armazenada?
  • O que é comida

Utilitários usados

1) visualizar informações do disco

  • lsblk -o NOME, TAMANHO, FSTYPE, TIPO, PONTO DE MONTAGEM
  • fdisk -l
    2) visualizar informações e trabalhar com LVM
  • pvs
  • pvextend
  • criação de pvc
  • tamanho do tamanho
  • vgs
  • vgreduce
  • Eu contra
  • estender
    3) visualizar informações e trabalhar com RAID
  • gato /proc/mdstat
  • mdadm
    4) pontos de montagem
  • montar
  • umount
  • cat / etc / fstab
  • gato /etc/mtab
    5) repartição de disco
  • fdisk /dev/XXX
    6) copiar partições
  • dd if=/dev/xxx de=/dev/yyy
    7) trabalhando com a tabela de partições
  • partex
  • disco sf
  • mkfs.ext4
    8) trabalhando com o bootloader
  • grub-install /dev/XXX
  • atualização-grub
    9) diversos
  • lsof
  • apto
  • rsync

O trabalho laboratorial consiste em 3 partes:

  • configurando um sistema funcional usando lvm, raid
  • emulação de uma das falhas de disco
  • substituindo discos dinamicamente, adicionando novos discos e movendo partições.

Tarefa 1 (instalação do sistema operacional e configuração de LVM, RAID)

1) Crie uma nova máquina virtual, atribuindo-lhe as seguintes características:

  • 1 GB de RAM
  • 1 cpu
  • 2 HDDs (nomeie-os como ssd1, ssd2 e atribua tamanhos iguais, verifique as caixas hot swap e ssd)
  • Controlador SATA configurado para 4 portas

Laboratório: configurando lvm, raid no Linux

2) Comece a instalar o Linux e quando selecionar os discos rígidos, faça o seguinte:

  • Método de particionamento: manual, após o qual você deverá ver esta imagem:
    Laboratório: configurando lvm, raid no Linux

  • Configurando uma partição separada para /boot: Selecione o primeiro disco e crie uma nova tabela de partição nele

    • Tamanho da partição: 512M
    • Ponto de montagem: /boot
    • Repita as configurações para o segundo disco, mas como você não pode montar /boot duas vezes ao mesmo tempo, selecione ponto de montagem: nenhum, eventualmente obtendo o seguinte (foto com um batente, com preguiça de refazer):
      Laboratório: configurando lvm, raid no Linux

  • Configuração RAID:

    • Selecione o espaço livre no primeiro disco e configure o tipo de partição como volume físico para RAID
    • Selecione "Concluída a configuração da partição"
    • Repita exatamente as mesmas configurações para o segundo disco, resultando no seguinte:
      Laboratório: configurando lvm, raid no Linux
    • Selecione "Configurar RAID de software"
    • Criar dispositivo MD
    • Tipo de dispositivo RAID de software: Selecione um array espelhado
    • Dispositivos ativos para a matriz RAID XXXX: selecione ambas as unidades
    • Dispositivos sobressalentes: deixe 0 como padrão
    • Dispositivos ativos para a matriz RAID XX: selecione as partições que você criou no raid
    • Acabamento
    • Como resultado, você deverá obter uma imagem como esta:
      Laboratório: configurando lvm, raid no Linux

  • Configurando LVM: Selecione Configurar o Gerenciador de Volume Lógico

    • Mantenha o layout da partição atual e configure o LVM: Sim
    • Criar grupo de volume
    • Nome do grupo de volumes: sistema
    • Dispositivos para o novo grupo de volumes: Selecione o RAID criado
    • Criar volume lógico
    • nome do volume lógico: root
    • tamanho do volume lógico: 25 do tamanho do seu disco
    • Criar volume lógico
    • nome do volume lógico: var
    • tamanho do volume lógico: 25 do tamanho do seu disco
    • Criar volume lógico
    • nome do volume lógico: log
    • tamanho do volume lógico: 15 do tamanho do seu disco
    • Ao selecionar Exibir detalhes de configuração, você deverá obter a seguinte imagem:
      Laboratório: configurando lvm, raid no Linux
    • Depois de concluir a configuração do LVM, você deverá ver o seguinte:
      Laboratório: configurando lvm, raid no Linux

  • Layout da partição: um por um, selecione cada volume criado no LVM e faça o layout deles, por exemplo, para root assim:

    • Usar como: ext4
    • ponto de montagem: /
    • O resultado da marcação da partição raiz deve ser assim:
      Laboratório: configurando lvm, raid no Linux
    • repita a operação de particionamento para var e log, selecionando os pontos de montagem apropriados (/var e /var/log inseridos manualmente), obtendo o seguinte resultado:
      Laboratório: configurando lvm, raid no Linux
    • Selecione Concluir Particionamento
    • Serão feitas várias perguntas a você sobre o fato de ainda ter uma partição desmontada e o swap não estar configurado. Ambas as questões devem ser respondidas negativamente.

  • O resultado final deverá ficar assim:
    Laboratório: configurando lvm, raid no Linux
    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 os discos no sistema:

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

  • Liste todos os discos que o comando anterior forneceu e descreva que tipo de disco é

  • Encontre a unidade onde o grub não foi instalado e execute esta instalação:
    grub-install /dev/sdb

  • veja informações sobre o ataque atual com o comando cat /proc/mdstat e anote o que você vê.

  • 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 com a tarefa.

Após concluir esta tarefa, é recomendável salvar uma cópia de backup da pasta da máquina virtual ou fazer
caixa vagabunda: https://t.me/bykvaadm/191

Resultado: máquina virtual com discos ssd1, ssd2

Tarefa 2 (Emulando a falha de um dos discos)

1) Se você marcou a caixa hot swap, poderá excluir os discos instantaneamente

  • Exclua o disco ssd1 nas propriedades da máquina
  • Encontre o diretório onde os arquivos da sua máquina virtual estão armazenados e exclua ssd1.vmdk
    2) Certifique-se de que sua máquina virtual ainda esteja funcionando
    3) Reinicie a máquina virtual e certifique-se de que ela ainda esteja em execução
    4) verifique o status da matriz RAID: cat /proc/mdstat
    5) adicione um novo disco do mesmo tamanho na interface da VM e nomeie-o como ssd3
    6) realizar as operações:
  • veja se o novo disco chegou ao sistema usando fdisk -l
  • copie a tabela de partições do disco antigo para o novo: sfdisk -d /dev/XXXX | sfdisk /dev/AAAA
  • veja o resultado usando fdisk -l
  • Adicione um novo disco ao array raid: mdadm —manage /dev/md0 —add /dev/YYY
  • Veja o resultado: cat /proc/mdstat. Você deverá ver que a sincronização começou
    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 “live” 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 na nova unidade
    9) Reinicie a VM para ter certeza de que tudo está funcionando
    Descreva com suas próprias palavras o que você fez e qual resultado obteve com a tarefa.
    Resultado: o disco ssd1 foi removido, o disco ssd2 foi salvo, o disco ssd3 foi adicionado.

    Tarefa 3 (Adicionar novos discos e mover uma partição)

    Esta é a tarefa mais complexa e volumosa de todas as apresentadas.
    Verifique com muito cuidado o que você está fazendo e com quais discos e partições.
    Recomenda-se fazer uma cópia antes de executá-lo.
    Esta tarefa é independente da tarefa nº 2, podendo ser executada após a tarefa nº 1, ajustada para nomes de disco.
    A segunda parte desta tarefa de laboratório deve levar exatamente ao mesmo estado que estava após a conclusão da primeira parte.

    Para facilitar seu trabalho, recomendo não remover fisicamente os discos da máquina host, mas apenas
    desconecte-os nas propriedades da máquina. Do ponto de vista do sistema operacional na VM, será exatamente igual, mas você pode
    se algo acontecer, conecte o disco de volta e continue o trabalho revertendo alguns pontos, se
    você está tendo problemas. Por exemplo, você pode ter feito isso incorretamente ou esquecido de copiar a partição /boot para o novo disco.
    Só posso aconselhá-lo a verificar várias vezes com quais discos e partições você está trabalhando, ou melhor ainda
    Anote em um pedaço de papel a correspondência entre os discos, partições e o número do disco “físico”. Árvore bonita e clara
    sorteios de equipes lsblk, use-o sempre que possível para analisar o que você fez e o que precisa ser feito.

    Para a história...

    Imagine que seu servidor está rodando há muito tempo em 2 unidades SSD, quando de repente...

    1) Simule a falha do disco SSD2 removendo o disco das propriedades da VM e reiniciando
    2) Visualize o status atual dos discos e RAID:

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

    3) Você tem sorte - seus chefes permitiram que você comprasse vários discos novos:

    2 SATA de grande capacidade para a tarefa há muito esperada de mover a partição com logs para um disco separado

    2 SSDs para substituir o que morreu, bem como para substituir o que ainda está funcionando.

    Observe que a cesta do servidor suporta apenas a instalação de 4 discos por vez,
    portanto, não é possível adicionar todos os discos de uma vez.

    Selecione a capacidade do HDD 2 vezes maior que a do SSD.
    A capacidade do SSD é 1,25 vezes maior que a do antigo SSD.

    4) Adicione um novo disco SSD, chamando-o de ssd4, e após adicionar, verifique o que aconteceu:

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

    5) Em primeiro lugar, você deve cuidar da segurança dos dados do disco antigo.
    Desta vez iremos transferir dados usando 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 x, y pelos discos corretos e descubra o que este 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 para o novo disco

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

      se /boot permaneceu montado no disco antigo, ele deverá ser remontado no disco ativo:

      mount | grep boot # смотрим куда смонтирован диск
      lsblk # смотрим какие диски есть в системе и смотрим есть ли диск, полученный из предыдущего пункта
      umount /boot # отмонтируем /boot
      mount -a # выполним монтирование всех точек согласно /etc/fstab. 
      # Поскольку там указана точка монтирования /dev/sda, то будет выполнено корректное перемонтирование на живой диск

      Instale o bootloader na nova unidade SSD

      grub-install /dev/YYY

      Por que estamos realizando esta operação?

      crie um novo array raid incluindo apenas um novo disco SSD:

      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 esta chave ao comando.

      Use o comando cat /proc/mdstat para verificar o resultado de 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?
      Vamos aumentar o tamanho do sistema Volume Group usando o seguinte comando:

      vgextend system /dev/md63

      Execute os comandos e anote o que você viu e o que mudou.

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

      Em qual disco físico estão LV var,log,root atualmente localizados?

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

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

      Repita a operação para todos os volumes lógicos

      Execute os comandos e anote o que você viu e o que mudou.

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

      Vamos mudar nosso VG removendo dele o disco raid antigo. Substitua o nome do ataque correto.

      vgreduce system /dev/md0

      Execute os comandos e anote o que você viu e o que mudou.

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

      Para deixar a imagem mais bonita, remonte /boot no segundo disco SSD (ssd4) e execute lsblk. Como resultado, o disco SSD3 não
      nada deve ser montado. Verifique cuidadosamente se a partição /boot não está vazia! ls /boot deve mostrar
      vários arquivos e pastas. Estude o que está armazenado nesta seção e anote qual diretório de arquivo é responsável por quê.
      7) remova o disco ssd3 e adicione ssd5, hdd1, hdd2 de acordo com as especificações técnicas descritas acima, resultando em:
      ssd4 - o primeiro novo SSD
      ssd5 – segundo novo SSD
      hdd1 - primeiro novo disco rígido
      hdd2 - segundo novo disco rígido

      8) Verifique o que aconteceu após adicionar os discos:

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

      9) Vamos restaurar a operação do array raid principal:

      • copie a tabela de partições, substituindo os discos corretos:
        sfdisk -d /dev/XXX | sfdisk /dev/YYY
      • Observe que quando copiamos a tabela de partição do disco antigo, parecia que o novo tamanho
        não usa toda a capacidade do disco rígido.
        Portanto, em breve precisaremos redimensionar esta partição e expandir o raid.
        Veja você mesmo executando o comando:

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

        10) copie a partição de inicialização /boot de ssd4 para ssd5

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

        11) Instale o grub na nova unidade (ssd5)
        12) redimensione a segunda partição do disco SSD5

        execute o utilitário de particionamento de disco:

        fdisk /dev/XXX

        digite a tecla d para excluir uma partição existente (escolha 2)
        digite a chave n para criar uma nova partição
        digite a chave p para indicar que o tipo de partição é “primário”
        digite a chave 2 para que a nova partição tenha o segundo número
        Primeiro setor: pressione Enter para aceitar o tamanho calculado automaticamente do início da partição
        Último setor: pressione Enter para aceitar o tamanho calculado automaticamente do final da partição
        digite a tecla l para ver uma lista de todos os tipos de partição possíveis e encontre Linux raid auto nela
        digite a tecla t para alterar o tipo de partição criada (2) e digite o número encontrado na etapa anterior.
        digite a tecla w para gravar a alteração no disco.
        12) releia a tabela de partições e verifique o resultado

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

        adicione um novo disco ao array raid atual (não se esqueça de substituir os discos corretos)

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

        Vamos expandir o número de discos em nosso array para 2:

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

        Veja o resultado: temos 2 arrays marcados, mas ambas as seções incluídas neste array têm tamanhos diferentes

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

        13) aumente o tamanho da partição no disco SSD4

        execute o utilitário de particionamento de disco:

        fdisk /dev/XXX

        digite a tecla d para excluir uma partição existente (escolha 2)
        digite a chave n para criar uma nova partição
        digite a chave p para indicar que o tipo de partição é “primário”
        digite a chave 2 para que a nova partição tenha o segundo número
        Primeiro setor: pressione Enter para aceitar o tamanho calculado automaticamente do início da partição
        Último setor: pressione Enter para aceitar o tamanho calculado automaticamente do final da partição
        No final da marcação, selecione Não para deixar a assinatura da associação da partição na matriz.
        digite a tecla w para gravar a alteração no disco.
        12) releia a tabela de partições e verifique o resultado

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

        Observe que agora as partições sda2, sdc2 têm um tamanho > que o tamanho do dispositivo raid.

        13) nesta fase o tamanho do ataque agora pode ser expandido

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

        Revise lsblk e observe o que mudou
        14) No entanto, embora tenhamos alterado o tamanho do ataque, os tamanhos de vg root,var,log em si não mudaram

        • veja o tamanho do PV:
          pvs
        • Vamos expandir o tamanho do nosso PV:
          pvresize /dev/md63
        • veja o tamanho do PV:
          pvs

          15) Adicione o local recém-aparecido 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 os novos discos. trabalhe com ssd1, ssd2 está concluído

          16) Nossa próxima tarefa é mover /var/log para novos discos, para isso criaremos um novo array e lvm em discos HDD.

          • vamos ver quais nomes os novos drives de disco rígido têm
            fdisk -l
          • vamos criar um array raid
            mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
          • vamos criar um novo PV no ataque a partir de discos grandes
            pvcreate data /dev/md127
          • Vamos criar um grupo nesse PV chamado data
            vgcreate data /dev/md127
          • Vamos criar um volume lógico com o tamanho de todo o espaço livre e chamá-lo de val_log
            lvcreate -l 100%FREE -n var_log data # lvs # посмотрим результат
          • formate a partição criada em ext4
            mkfs.ext4 /dev/mapper/data-var_log
          • vamos ver o resultado
            lsblk

            17) transferir dados de log da partição antiga para a nova

            instalar temporariamente um novo armazenamento de log

            mount /dev/mapper/data-var_log /mnt

            vamos sincronizar as partições

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

            Vamos descobrir quais processos estão atualmente em execução em /var/log

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

            parar esses processos

            systemctl stop rsyslog.service syslog.socket

            realizar a sincronização final das partições (dados que podem 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

            vamos verificar o que aconteceu

            lsblk

            18) Edite /etc/fstab
            fstab - um arquivo que registra as regras pelas quais as partições serão montadas na inicialização
            nossa tarefa é encontrar a linha onde /var/log está montado e consertar o dispositivo system-log em data-var_log

            19) O mais importante nesta fase é não esquecer de alterar a tabela radela (ext4, por exemplo). Porque não importa como alteramos qualquer ataque, lvm, até que o FS na partição seja notificado de que o tamanho da partição mudou, não poderemos usar o novo espaço. Use o comando resize2fs para alterar o FS.

            20) Acorde final

            • Vamos reiniciar. Se você fez tudo corretamente, você será levado de volta ao seu sistema operacional (isso é necessário para ter certeza de que tudo está funcionando. Esta etapa não tem outro significado senão o autoteste)
            • verificar se tudo o que queríamos fazer foi realmente feito:
              pvs
              lvs
              vgs
              lsblk
              cat /proc/mdstat

            21) [OPCIONAL] Siga os passos

            • reinicie pressionando F12 para especificar unidades diferentes durante a inicialização para garantir que você possa inicializar
              de qualquer uma das unidades SSD, para que não tenhamos medo da falha de uma delas
            • agora você tem log LV desnecessário no sistema VG. Aloque esse espaço entre root ou var, mas em vez de usar
              designs 100% GRATUITOS especifique o tamanho manualmente usando a tecla -L:

              -L 500M
            • corrija o problema de que /boot está localizado em duas partições sem sincronização, não há necessidade de fazer isso corretamente,
              é adicionado aqui como exemplo. Não se esqueça de copiar o conteúdo de /boot em algum lugar primeiro.

              • crie um novo ataque e inclua sda1,sda2 nele
              • inclua essas partições no ataque existente e restaure /boot no ataque principal, mas sem montá-lo.

Fonte: habr.com

Adicionar um comentário