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
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:
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):
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:
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:
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:
Depois de concluir a configuração do LVM, você deverá ver o seguinte:
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:
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:
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:
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)
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:
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:
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.
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:
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
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
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.