Uma breve observação: este laboratório é sintético.
Algumas tarefas descritas aqui podem ser realizadas de forma muito mais simples, mas como o objetivo do laboratório é se familiarizar
com o funcionamento do RAID e LVM, algumas operações foram artificialmente tornadas mais complexas.
Requisitos para as ferramentas necessárias para a execução do laboratório:
- Ferramentas de virtualização, como o VirtualBox
- Imagem de instalação do Linux, por exemplo,
- Acesso à internet para download de alguns pacotes
- Conexão via SSH na VM instalada (opcional)
ATENÇÃO
Este trabalho de laboratório está relacionado a uma questão delicada: a integridade dos dados — é uma área que
pode levar, devido a um erro mínimo — uma letra ou número a mais, à perda de todos os seus dados.
Como você está realizando um trabalho de laboratório, não há risco, exceto que você terá que começar de novo.
Na vida real, as coisas são muito mais sérias, então você deve ter muito cuidado ao inserir os nomes dos discos, entendendo
o que exatamente está sendo feito com o comando atual e quais discos estão sendo utilizados.
Um segundo ponto importante — a nomeação dos discos e partições: dependendo da situação, os números dos discos podem diferir
daqueles apresentados nos comandos do laboratório.
Por exemplo, se você remover o disco sda do array e depois adicionar um novo disco, o novo disco será exibido
no sistema com o nome sda. Porém, se você reiniciar antes de adicionar o novo disco, o novo
disco terá o nome sdb, enquanto o antigo será nomeado como sda.
O laboratório deve ser realizado como superusuário (root), pois a maior parte dos comandos requer
permissões elevadas e não faz sentido elevar as permissões constantemente através do sudo.
Materiais para estudo
- RAID
- LVM
- Nomeação de discos no sistema operacional Linux
- O que são partições?
- O que é uma tabela de partições e onde ela é armazenada?
- O que é o GRUB?
Utilitários utilizados
1) visualização de informações sobre os discos
- lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT
- fdisk -l
2) visualização de informações e trabalho com LVM - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
3) visualização de informações e trabalho com RAID - cat /proc/mdstat
- mdadm
4) pontos de montagem - mount
- umount
- cat /etc/fstab
- cat /etc/mtab
5) redistribuição do disco - fdisk /dev/XXX
6) cópia de partições - dd if=/dev/xxx of=/dev/yyy
7) trabalho com a tabela de partições - partx
- sfdisk
- mkfs.ext4
8) trabalho com o carregador de inicialização - grub-install /dev/XXX
- update-grub
9) diversos - lsof
- apt
- rsync
O trabalho de laboratório consiste em 3 partes:
- configuração de um sistema operacional funcional usando lvm, raid
- emulação da falha de um dos discos
- substituição de discos a quente, adicionando novos discos e movendo partições.
Tarefa 1 (Instalação do SO e configuração de LVM, RAID)
1) Crie uma nova máquina virtual, atribuindo as seguintes características:
- 1 GB de RAM
- 1 CPU
- 2 HDD (nomeá-los ssd1, ssd2 e atribuir o mesmo tamanho, marcar as opções hot swap e ssd)
- O controlador SATA está configurado para 4 portas

2) Inicie a instalação do Linux e, ao chegar à seleção de discos rígidos, faça o seguinte:
Método de particionamento: manual, após o que você deve ver o seguinte:

Configuração de uma partição separada para /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 não é possível montar /boot duas vezes ao mesmo tempo, escolha o ponto de montagem: none, obtendo o seguinte (imagem com erro, falta de vontade para corrigir):

Configuração do RAID:
- Escolha o espaço livre no primeiro disco e configure como tipo de partição volume físico para RAID
- Escolha 'Concluído configurando a partição'
- Repita exatamente essa mesma configuração para o segundo disco, resultando no seguinte:

- Selecione a opção 'Configurar RAID de software'
- Criar dispositivo MD
- Tipo de dispositivo RAID de software: Selecione o arranjo espelhado
- Dispositivos ativos para o array RAID XXXX: Selecione ambos os discos
- Dispositivos de reserva: Deixe 0 por padrão
- Dispositivos ativos para o array RAID XX: selecione as partições que você criou para raid
- Finish
- No final, você deve obter a seguinte imagem:

Configuração do LVM: Selecione Configurar o Gerenciador de Volume Lógico
- Manter o layout atual da partição e configurar o LVM: Sim
- Criar grupo de volumes
- Nome do grupo de volumes: sistema
- Dispositivos para o novo grupo de volumes: Selecione seu 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 escolher Exibir detalhes da configuração, você deve obter a seguinte imagem:

- Após concluir a configuração do LVM, você deve ver o seguinte:

Particionamento: selecione cada volume criado no LVM e particione-os, por exemplo, para root assim:
- Usar como: ext4
- ponto de montagem: /
- O resultado da partição do diretório raiz deve ser assim:

- repita a operação de particionamento para var e log, escolhendo os pontos de montagem correspondentes (/var e /var/log (digite manualmente)), obtendo o seguinte resultado:

- Selecione Concluir Particionamento
- Você será questionado sobre o fato de ter uma partição não montada e o swap não configurado. Deve-se responder negativamente a ambas as perguntas.
O resultado final deve ser assim:

3) Concluir a instalação do sistema operacional, instalando o grub no primeiro dispositivo (sda) e inicializando o sistema.
4) Copie o conteúdo da partição /boot do disco sda (ssd1) para o disco sdb (ssd2)dd if=/dev/sda1 of=/dev/sdb15) Instale o grub no segundo dispositivo:
verifique os discos no sistema:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTListe todos os discos que o comando anterior retornou e descreva o que é cada disco
Encontre o disco no qual o grub não foi instalado e realize essa instalação:
grub-install /dev/sdbverifique as informações sobre o raid atual com o comando cat /proc/mdstat e anote o que você viu.
veja as saídas dos comandos: pvs, vgs, lvs, mount e anote o que exatamente você viu
Descreva com suas próprias palavras o que você fez e qual foi o resultado do trabalho realizado
Após concluir esta tarefa, é recomendado salvar uma cópia de segurança da pasta com a máquina virtual ou criar
vagrant box:
Resultado: Máquina virtual com os discos ssd1, ssd2
Tarefa 2 (Emulação da falha de um dos discos)
1) Se você ativou a opção hot swap, você pode remover discos em tempo real
- Realize a remoção do 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 está funcionando
3) Reinicie a máquina virtual e verifique se ela ainda está funcionando
4) verifique o status do array RAID: cat /proc/mdstat
5) adicione um novo disco do mesmo tamanho na interface da VM e nomeie-o como ssd3
6) execute as operações: - verifique se o novo disco foi reconhecido pelo sistema com o comando fdisk -l
- copie a tabela de partições do disco antigo para o novo: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
- verifique o resultado com o comando fdisk -l
- Adicione o novo disco ao array RAID: mdadm --manage /dev/md0 --add /dev/YYY
- Veja o resultado: cat /proc/mdstat. Você deve ver que a sincronização começou
7) Agora você precisa realizar manualmente a sincronização das partições que não estão no RAID.
Para isso, usaremos a ferramenta dd, copiando do disco 'vivo' para o novo que você acabou de instalardd if=/dev/XXX of=/dev/YYY8) Após a conclusão da sincronização, instale o grub no novo disco
9) Reinicie a VM para garantir que tudo está funcionando
Descreva com suas próprias palavras o que você fez e qual foi o resultado do trabalho realizado
Resultado: Disco ssd1 removido, disco ssd2 mantido, disco ssd3 adicionado.Tarefa 3 (Adição de novos discos e migração de partição)
Esta é a tarefa mais difícil e extensa de todas as apresentadas.
Verifique com muita atenção o que você está fazendo e com quais discos e partições.
É recomendado fazer uma cópia antes de executá-la.
Esta tarefa é independente da tarefa nº 2, pode ser executada após a tarefa nº 1 com ajustes nos nomes dos discos.
A segunda parte da tarefa deste laboratório deve resultar em exatamente o mesmo estado que foi alcançado após a execução da primeira parte.Para facilitar o seu trabalho, recomendo não remover 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 igual, mas você poderá
reconectar o disco a qualquer momento e continuar o trabalho retrocedendo algumas etapas, caso surjam problemas.
Por exemplo, você pode ter feito algo incorretamente ou esquecido de copiar a partição /boot para o novo disco.
Só posso aconselhar a verificar várias vezes com quais discos e partições você está trabalhando, e ainda melhor
anotar em um papel a correspondência entre os discos, partições e o número "físico" do disco. Uma árvore bonita e clara
é gerada pelo comandolsblk, use-o o quanto puder para analisar o que você fez e o que precisa ser feito.À história...
Imagine que seu servidor funcionou por um longo tempo com 2 discos SSD, e de repente...
1) Emule a falha do disco SSD2, removendo o disco das propriedades da VM e reiniciando-a.
2) Verifique o estado atual dos discos e do RAID:cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT3) Você teve sorte — a gerência permitiu a compra de alguns novos discos:
2 SATA de grande capacidade para a tão esperada tarefa de mover a partição de logs para um disco separado.
2 SSD para substituir o que falhou, bem como para substituir o que ainda está funcionando.
Deve-se considerar que a lixeira servidor suporta a instalação de apenas 4 discos ao mesmo tempo,
portanto não é possível adicionar todos os discos de uma vez.O volume do HDD deve ser escolhido duas vezes maior que o do SSD.
O volume do SSD deve ser 1,25 vezes maior que o dos antigos SSD.4) Adicione um novo disco SSD, nomeando-o como ssd4, e após a adição, verifique o que aconteceu:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT5) Em primeiro lugar, deve-se preocupar com a segurança dos dados do disco antigo.
Desta vez, vamos transferir os dados usando LVM:- Em primeiro lugar, é necessário copiar a tabela de partições do disco antigo para o novo:
sfdisk -d /dev/XXX | sfdisk /dev/YYYSubstitua x e y pelos discos corretos e explique o que este comando faz.
Execute o comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e compare a saída com a chamada anterior.
O que mudou?
Usando o comando dd, copie os dados de /boot para o novo discodd if=/dev/XXX of=/dev/YYYse /boot ainda estiver montado no disco antigo, deve ser remontado no disco ativo:
mount | grep boot # veja onde o disco está montado lsblk # veja quais discos estão no sistema e verifique se o disco do item anterior está presente umount /boot # desmonte /boot mount -a # monte todos os pontos de acordo com /etc/fstab. # Como está indicado o ponto de montagem /dev/sda, isso resultará na remontagem correta no disco ativoInstale o carregador de inicialização no novo disco SSD
grub-install /dev/YYYPor 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/YYYO comando acima não funcionará sem um parâmetro especial.
Leia a documentação e adicione este parâmetro ao comando.Use o comando cat /proc/mdstat para verificar o resultado da sua operação. O que mudou?
Execute o comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e compare a saída com a chamada anterior.
O que mudou?
6) Na próxima etapa, é necessário configurar o LVM
execute o comando pvs para visualizar informações sobre os volumes físicos atuais
crie um novo volume físico incluindo o array RAID criado anteriormente:pvcreate /dev/md63Execute o comando lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT e compare a saída com a chamada anterior.
O que mudou?
Execute novamente o comando pvs. O que mudou?
Vamos aumentar o tamanho do Grupo de Volumes do sistema com o seguinte comando:vgextend system /dev/md63Execute os comandos e anote o que você viu e o que mudou.
vgdisplay system -v pvs vgs lvs -a -o+devicesEm qual disco físico estão atualmente os LVs var, log, root?
Realize a transferência de dados do disco antigo para o novo, substituindo pelos nomes corretos dos dispositivos.
pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63Repita 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,MOUNTPOINTVamos alterar nosso VG, removendo o disco do antigo RAID. Substitua pelo nome correto do RAID.
vgreduce system /dev/md0Execute os comandos e anote o que você viu e o que mudou.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgsPara melhorar a apresentação, remonte /boot no segundo disco SSD (ssd4) e execute lsblk. Como resultado, no disco ssd3 não
deve haver nada montado. Verifique atentamente 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 pasta/arquivo corresponde a quê.
7) remova o disco ssd3 e adicione os discos ssd5, hdd1, hdd2 de acordo com as especificações acima, resultando em:
ssd4 — primeiro novo ssd
ssd5 — segundo novo ssd
hdd1 — primeiro novo hdd
hdd2 — segundo novo hdd8) Verifique o que aconteceu após a adição dos discos:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT9) Restauraremos o funcionamento do array RAID principal:
- execute a cópia da tabela de partições, inserindo os discos corretos:
sfdisk -d /dev/XXX | sfdisk /dev/YYY - Observe que, ao copiarmos a tabela de partições do disco antigo, parecia que o novo tamanho
não utiliza todo o espaço do disco rígido.
Por isso, em breve precisaremos alterar o tamanho desta partição e expandir o RAID.
Certifique-se disso, digitando o comando:lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT10) copie a partição de boot /boot do disco ssd4 para o ssd5
dd if=/dev/XXX of=/dev/YYY11) instale o grub no novo disco (ssd5)
12) alteraremos o tamanho da segunda partição do disco ssd5inicie a ferramenta para trabalhar com partições de disco:
fdisk /dev/XXXdigite a tecla d para remover a partição existente (selecione 2)
digite a tecla n para criar uma nova partição
digite a tecla p para indicar que o tipo da partição é "primário"
digite a tecla 2 para que a nova partição tenha o segundo número
First sector: pressione enter para aceitar o tamanho calculado automaticamente do início da partição
Last sector: pressione enter para aceitar o tamanho calculado automaticamente do final da partição
digite a tecla l para ver a lista de todos os tipos de partições possíveis e encontre o Linux raid auto
digite a tecla t para modificar o tipo da partição criada (2) e insira o número encontrado na etapa anterior.
digite a tecla w para gravar as alterações no disco.
12) releia a tabela de partições e verifique o resultadopartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTadicionaremos o novo disco ao array RAID atual (não se esqueça de inserir os discos corretos)
mdadm --manage /dev/md63 --add /dev/sda2Ampliamos o número de discos em nosso array para 2 unidades:
mdadm --grow /dev/md63 --raid-devices=2Veja o resultado: temos 2 arrays alocados, mas ambas as partições que fazem parte desse array têm tamanhos diferentes
lsblk -o NAME, SIZE, FSTYPE, TYPE, MOUNTPOINT13) aumentaremos o tamanho da partição no disco ssd4
inicie a ferramenta para trabalhar com partições de disco:
fdisk /dev/XXXdigite a tecla d para remover a partição existente (selecione 2)
digite a tecla n para criar uma nova partição
digite a tecla p para indicar que o tipo da partição é "primário"
digite a tecla 2 para que a nova partição tenha o segundo número
First sector: pressione enter para aceitar o tamanho calculado automaticamente do início da partição
Last sector: pressione enter para aceitar o tamanho calculado automaticamente do final da partição
No final da partição, escolha Não, para manter a assinatura da partição no array.
digite a tecla w para gravar as alterações no disco.
12) releia a tabela de partições e verifique o resultadopartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTobserve que agora as partições sda2, sdc2 têm tamanho > do que o tamanho do dispositivo RAID.
13) Nesta etapa, o tamanho do raid agora pode ser expandido
mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # verifique o resultadoVerifique lsblk e anote o que mudou
14) No entanto, embora tenhamos alterado o tamanho do raid, os tamanhos vg root,var,log não mudaram- Verifique qual é o tamanho do PV:
pvs - Vamos expandir o tamanho do nosso PV:
pvresize /dev/md63 - Verifique qual é o tamanho do PV:
pvs15) Vamos adicionar o espaço recém-criado ao VG var,root
lvs # vamos ver quanto está agora alocado lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs # verifique o que conseguimosNesta etapa, você concluiu a migração do array principal para os novos discos. O trabalho com ssd1,ssd2 foi finalizado
16) Nossa próxima tarefa é mover /var/log para os novos discos, para isso criaremos um novo array e lvm nos discos hdd.
- Vamos ver quais são os nomes dos novos discos hdd
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 raid composto por grandes discos
pvcreate data /dev/md127 - Vamos criar um grupo neste PV com o nome data
vgcreate data /dev/md127 - Vamos criar um volume lógico que ocupe todo o espaço livre e chamá-lo de val_log
lvcreate -l 100%FREE -n var_log data # lvs # vamos ver o resultado - Vamos formatar a partição criada em ext4
mkfs.ext4 /dev/mapper/data-var_log - Vamos ver o resultado
lsblk17) Vamos mover os dados de logs da partição antiga para a nova
Vamos montar temporariamente o novo armazenamento de logs
mount /dev/mapper/data-var_log /mntVamos sincronizar as partições
apt install rsync rsync -avzr /var/log/ /mnt/Vamos descobrir quais processos estão atualmente trabalhando com /var/log
apt install lsof lsof | grep '/var/log'Vamos parar esses processos
systemctl stop rsyslog.service syslog.socketVamos realizar a sincronização final das partições (dos dados que podem ter mudado desde a última sincronização)
rsync -avzr /var/log/ /mnt/Vamos trocar as partições de lugar
umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/logVamos verificar o que conseguimos
lsblk18) Ajustamos /etc/fstab
fstab é o arquivo onde são registradas as regras pelas quais as partições serão montadas durante a inicialização
Nossa tarefa é encontrar a linha onde /var/log está montado e corrigir o dispositivosystem-logparadata-var_log19) O mais importante nesta etapa é não esquecer de alterar a tabela de partições (ext4, por exemplo). Pois, independentemente de como mudamos vários raids, lvm — enquanto o sistema de arquivos na partição não for avisado de que o tamanho da partição foi alterado, não poderemos usar o novo espaço. Use o comando
resize2fspara alterar o sistema de arquivos.20) O toque final
- reiniciaremos o sistema. Se você fez tudo corretamente, vai acessar seu sistema operacional novamente (isso é necessário para garantir que tudo funcione. Este passo não tem outro propósito além de autoavaliação)
- realize verificações para ter certeza de que tudo o que queríamos fazer foi realmente feito:
pvs lvs vgs lsblk cat /proc/mdstat
21) [OPCIONAL] Execute as ações
- reinicie pressionando F12 para selecionar diferentes discos durante a inicialização, garantindo que você pode inicializar
de qualquer um dos discos SSD, para que não tenhamos medo de uma falha em um deles - agora você tem um LV log desnecessário no VG system. Distribua esse espaço entre root ou var, mas ao invés de usar
a construção 100%FREE, especifique o tamanho manualmente com a opção -L:-L 500M - corrija o problema de /boot estar em duas partições sem sincronização, isso não deve ser feito corretamente,
aqui foi adicionado como exemplo. Não se esqueça de copiar o conteúdo de /boot para outro lugar antes.- crie um novo raid e inclua sda1, sda2 nele
- inclua essas partições no raid existente e restaure /boot no raid principal, mas sem montá-lo.
- Vamos ver quais são os nomes dos novos discos hdd
- Verifique qual é o tamanho do PV:
- execute a cópia da tabela de partições, inserindo os discos corretos:
- Em primeiro lugar, é necessário copiar a tabela de partições do disco antigo para o novo:
Fonte: habr.com









