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/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.
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 /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ê.
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-log
do system-log
em 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 resize2fs
para 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.