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
- Exibir informações do disco:
 - lsblk -o NOME, TAMANHO, FSTYPE, TYPE, MOUNTPOINT
- fdisk -l
 
- Exibir informações e trabalhar com LVM
 - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
 
- Veja informações e trabalhe com RAID:
 
- Pontos de montagem:
 - montar
- umount
- cat / etc / fstab
- cat / etc / mtab
 
- Re-particionando o disco:
 
- Copiando seções:
 - dd se = / dev / xxx de = / dev / aaaa
 
- Trabalhe com a tabela de partição:
 
- Trabalhe com o carregador de inicialização:
 - grub-install / dev / XXX
- update-grub
 
- misc
 
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)
- 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:
 
  
 
 
- 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:
 
  
- 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):
 
  
- 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:
 
  
- 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:
 
  
- 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:
 
  
- Depois de concluir a configuração do LVM, você deverá ver o seguinte:
 
  
- 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:
 
  
- 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:
 
  
- 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:
 
  
 
 
- Conclua a instalação do sistema operacional instalando o grub no primeiro dispositivo (sda) e inicialize o sistema. 
 
- Copie o conteúdo da partição / boot da unidade sda (ssd1) para a unidade sdb (ssd2) 
 - dd if=/dev/sda1 of=/dev/sdb1
 
 
- 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)
- 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.
 
- Verifique se sua máquina virtual ainda está em execução.
- Reinicie a máquina virtual e verifique se ela ainda funciona
- Verifique o status da matriz RAID: cat /proc/mdstat
- Adicione um novo disco do mesmo tamanho na interface da VM e chame-o de ssd3.
- 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/YYYsfdisk -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.
 
- 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
 
 
- Após a conclusão da sincronização, instale o grub no novo disco.
- 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 ...
- Simule uma falha no disco ssd2 removendo o disco das propriedades da VM e reiniciando. 
 
- Veja o estado atual dos discos e RAID: 
 -  - cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
 
 
- 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.
 
 
- 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
 
 
- 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 
 
 
- 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?
 
 
- 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 /bootdeve mostrar vários arquivos e pastas. Examine o que está armazenado nesta seção e anote qual arquivo / diretório é responsável por quê.
 
 
- 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
 
 
- Verifique o que aconteceu depois de adicionar discos: 
 -  - fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
 
 
- 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
 
 
 
 
- Copie a partição de inicialização / boot do ssd4 para o ssd5: 
 -  - dd if=/dev/XXX of=/dev/YYY
 
 
- Instale o grub no novo disco (ssd5). 
 
- Altere o tamanho da segunda partição da unidade ssd5. 
 
 
- 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
 
 
 
 
- Aumentar o tamanho da partição no disco ssd4 
 
 
- 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. 
 
- Neste ponto, o tamanho da invasão agora pode ser expandido: 
 -  - mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 
 
 - Navegue pelo lsblk e anote o que mudou. 
 
- 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
 
 
 
 
- Adicione o novo local VG var, root: 
 -  - lvs 
 
 - Neste ponto, você concluiu a migração da matriz principal para novos discos. trabalho com ssd1, ssd2 está concluído. 
 
- 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 
 
 
- Formate a partição criada no ext4: 
 -  - mkfs.ext4 /dev/mapper/data-var_log
 
 
- Vamos ver o resultado: 
 -  - lsblk
 
 
 
 
- 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
 
 
 
 
- 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-logdo- system-logem- data-var_log.
 
 
- 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 - resize2fspara alterar o FS.
 
 
- Acorde final 
 
 
- [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.