Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir o laboratório, substitua esses valores pelos específicos do seu ambiente de nuvem.
Configurar Volumes Lógicos RAID no Oracle Linux
Introdução
O LVM RAID é uma maneira de criar um LV (Logical Volume) que usa vários dispositivos físicos para melhorar o desempenho ou tolerar falhas de dispositivos. No LVM, os dispositivos físicos são Volumes Físicos (PVs) em um único Grupo de Volumes (VG).
Este tutorial trabalhará com os utilitários do Oracle Linux Volume Manager para criar um volume lógico de RAID e, em seguida, tratar de uma falha de disco.
Objetivos
- Criar um volume lógico RAID
- Redimensionar um volume lógico de RAID
- Recuperar um dispositivo RAID com falha
Pré-requisitos
Qualquer sistema Oracle Linux 8 com as seguintes configurações:
- um usuário não raiz com permissões sudo
- volumes em blocos adicionais para uso com LVM
Configurar Ambiente de Laboratório
Observação: ao usar o ambiente de laboratório gratuito, consulte Conceitos Básicos do Oracle Linux Lab para obter conexão e outras instruções de uso.
-
Se ainda não estiver conectado, abra um terminal e conecte-se via ssh a cada instância mencionada acima.
ssh oracle@<ip_address_of_instance>
-
Verifique se os volumes em blocos existem.
sudo lsblk
A saída do ambiente de laboratório gratuito deve mostrar o /dev/sda para o sistema de arquivos existente e os discos disponíveis /dev/sdb, /dev/sdc, /dev/sdd e /dev/sde. Também há dois discos adicionais (/dev/sdf, /dev/sdg) que usaremos posteriormente.
Volume Físico (PV)
-
Crie os volumes físicos (PV) usando os discos disponíveis.
sudo pvcreate -v /dev/sd[b-e]
Execute o comando com a opção
-v
para obter informações verbosas. -
Verifique a criação de PV.
sudo pvs
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ocivolume lvm2 a-- 45.47g 0 /dev/sdb lvm2 --- 50.00g 50.00g /dev/sdc lvm2 --- 50.00g 50.00g /dev/sdd lvm2 --- 50.00g 50.00g /dev/sde lvm2 --- 50.00g 50.00g
Grupo de Volumes (VG)
-
Crie o grupo de volumes (VG) usando os volumes físicos recém-criados.
sudo vgcreate -v foo /dev/sd[b-e]
-
Verifique a criação de VG.
sudo vgs
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo vgs VG #PV #LV #SN Attr VSize VFree foo 4 0 0 wz--n- 199.98g 199.98g ocivolume 1 2 0 wz--n- 45.47g 0
Volume Lógico (LV)
-
Criar o LV (Lical Volume) RAID.
sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
--type
: Defina o nível de RAID. O LVM suporta os níveis de RAID 0, 1, 4, 5, 6 e 10.-i
: Defina o número (n) de faixas (dispositivos) para um volume lógico RAID 4/5/6. Um LV raid5 requer dispositivos n+1.-L
: Tamanho total do array RAID.-n
: Nome do array RAID.
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo Using default stripesize 64.00 KiB. Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents). Logical volume "rr" created.
Para obter mais informações, verifique a página manual
lvmraid(7)
. -
Verifique a criação de LV.
sudo lvdisplay foo
A saída mostra todos os volumes lógicos contidos no foo VG.
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvdisplay foo --- Logical volume --- LV Path /dev/foo/rr LV Name rr VG Name foo LV UUID vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2 LV Write Access read/write LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1281 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 1024 Block device 252:10
-
Exiba o tipo de LV.
sudo lvs -o name,segtype foo/rr
- O comando
lvs
pode assumir o caminho LV completo como uma opção para restringir os resultados.
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr LV Type rr raid5
- O comando
Criar um sistema de arquivos
-
Crie um sistema de arquivos XFS no LV RAID.
sudo mkfs.xfs -f /dev/foo/rr
-f
: Força a substituição de um sistema de arquivos existente.
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr meta-data=/dev/foo/rr isize=512 agcount=8, agsize=163952 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1311616, imaxpct=25 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Observação: O sistema de arquivos XFS não pode reduzir seu tamanho após a criação. No entanto, o comando xfs_growfs pode ampliá-lo.
Montar o LV RAID
-
Monte o sistema de arquivos.
sudo mkdir -p /u01 sudo mount /dev/foo/rr /u01
-
Relate o uso do disco do sistema de arquivos.
df -h
Exemplo de Saída:
[oracle@ol-node01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/foo-rr 5.0G 69M 5.0G 2% /u01
Redimensionar um LV RAID
Há várias maneiras de redimensionar um LV RAID:
- Use
lvresize
oulvextend
para aumentar o LV. - Use
lvresize
oulvreduce
para reduzir o LV. - Use
lvconvert
com o parâmetro--stripes N
para alterar o número de faixas.
Importante: A redução de um LV é arriscada e pode resultar em perda de dados. Ao executar um sistema de arquivos XFS no LV, evite diminuir o LV, pois o XFS não permite reduzir o tamanho do sistema de arquivos.
Aumentar a Capacidade do LV RAID
-
Usando o espaço livre disponível no VG, aumente o tamanho do LV RAID para 10G.
sudo lvresize -L 10G foo/rr
Para aumentar o tamanho em 10G, use a opção
-L +10G
. -
Verifique se o LV aumentou para 10G.
sudo lvs foo/rr
O LSize deve mostrar 10g.
-
Amplie o sistema de arquivos.
sudo xfs_growfs /u01
-
Relate o uso do disco do sistema de arquivos atualizado.
df -h
-
Verifique o status de sincronização RAID antes de continuar.
Aviso: Continuar muito rapidamente para a próxima etapa pode mostrar um erro porque foo/rr não está em sincronia.
Esse erro ocorrerá se a sincronização não tiver sido concluída após o redimensionamento do LV RAID acima.
Verifique o LV RAID com
watch sudo lvs foo/rr
e aguarde o campo Cpy%Sync atingir 100%. Quando Cpy%Sync atingir 100%, usectrl-c
para sair do comandowatch
.
Consulte as páginas man lvresize(8)
, lvextend(8)
e lvreduce(8)
para obter mais informações.
Aumentar faixas no LV RAID
A alteração do número de faixas em um LV RAID aumenta a capacidade geral e é possível em RAID4/5/6/10. Cada segmento adicional requer um número igual de volumes físicos não alocados (dispositivos) dentro do grupo de volumes.
-
Verifique quais volumes físicos (PV) existem no VG foo.
sudo pvs
Na saída /dev/sdb, /dev/sdc, /dev/sdd e /dev/sde são todos associados ao foo VG.
-
Determine se há volumes físicos não utilizados.
sudo pvdisplay -m /dev/sd[b-e]
Exemplo de Saída:
--- Physical volume --- PV Name /dev/sdb VG Name foo PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 11944 Allocated PE 855 PV UUID Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/foo/rr_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 854: Logical volume /dev/foo/rr_rimage_0 Logical extents 0 to 853 Physical extent 855 to 12798: FREE ...
O comando
pvdisplay
com a opção-m
mostra o mapeamento de extensões físicas para volumes lógicos e extensões logiais. O PV /dev/sdb na saída de exemplo mostra extensões físicas associadas ao LV RAID. O mesmo deve aparecer para /dev/sdc, /dev/sdd e /dev/sde. -
Adicione outro PV ao VG.
Como o LV RAID existente usa todos os volumes físicos existentes, adicione /dev/sdf ao foo PV.
sudo vgextend foo /dev/sdf
A saída mostra que o comando
vgextend
converte /dev/sdf em um PV antes de adicioná-lo ao foo do VG. -
Adicione um segmento ao LV RAID.
sudo lvconvert --stripes 4 foo/rr
Responda com
y
no prompt.Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr Using default stripesize 64.00 KiB. WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents! Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y Logical volume foo/rr successfully converted.
-
Verifique o novo tamanho do LV.
sudo lvs foo/rr
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvs foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert rr foo rwi-aor--- 13.34g 2.24
A capacidade (LSize) cresceu 3.34g e a sincronização (Cpy%Sync) começa. A sincronização é o processo que torna todos os dispositivos em um LV RAID consistentes entre si, e uma sincronização completa se torna necessária quando os dispositivos no LV RAID são modificados ou substituídos.
-
Verifique o status da sincronização.
Execute a verificação até que o andamento atinja 100%.
watch sudo lvs foo/rr
Quando Cpy%Sync atingir 100%, use
ctrl-c
para sair do comandowatch
.Outras maneiras de usar o comando
watch
incluem:- Execute
watch -n 5 sudo lvs foo/rr
para atualizar a cada 5s em vez dos 2s padrão. - Execute
timeout 60 watch -n 5 sudo lvs foo/rr
para sair automaticamente após os anos 60.
- Execute
-
Mostre a nova faixa de segmentos e PV, que agora inclui /dev/sdf.
sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
Recuperar um Dispositivo RAID com Falha em um LV
Os arrays RAID podem continuar a ser executados com dispositivos com falha. A remoção de um dispositivo para tipos de RAID diferentes de RAID1 implicaria na conversão para um RAID de nível inferior (RAID5 para RAID0 nesse caso).
O LVM permite a substituição de um dispositivo com falha em um volume RAID em uma única etapa, usando o comando lvconvert --repair
para dispositivos com falha, em vez de remover uma unidade com falha e possivelmente adicionar uma substituição.
-
Verifique o layout de LV RAID atual.
sudo lvs --all --options name,copy_percent,devices foo
-
Simule uma falha em /dev/sdd.
echo 1 | sudo tee /sys/block/sdd/device/delete
-
Após a falha, verifique novamente o layout do LV RAID.
sudo lvs --all --options name,copy_percent,devices foo
Observe os dispositivos [unknown].
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). LV Cpy%Sync Devices rr 100.00 rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0) [rr_rimage_0] /dev/sdb(855) [rr_rimage_0] /dev/sdb(1) [rr_rimage_1] /dev/sdc(855) [rr_rimage_1] /dev/sdc(1) [rr_rimage_2] [unknown](855) [rr_rimage_2] [unknown](1) [rr_rimage_3] /dev/sde(855) [rr_rimage_3] /dev/sde(1) [rr_rimage_4] /dev/sdf(855) [rr_rimage_4] /dev/sdf(1) [rr_rmeta_0] /dev/sdb(0) [rr_rmeta_1] /dev/sdc(0) [rr_rmeta_2] [unknown](0) [rr_rmeta_3] /dev/sde(0) [rr_rmeta_4] /dev/sdf(0)
-
Substitua o dispositivo com falha.
sudo lvconvert --repair foo/rr
Responda com
y
no prompt.O comando falha ao localizar o espaço ou dispositivo disponível a ser usado no VG.
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Insufficient free space: 856 extents needed, but only 0 available Failed to replace faulty devices in foo/rr.
Aviso: Se o erro contiver uma mensagem "Não é possível substituir dispositivos em foo/rr enquanto ele não está sincronizado", verifique se o RAID-LV está sincronizado executando
watch sudo lvs foo/rr
e confirmando que Cpy%Sync é 100%. Em seguida, tente o comandolvconvert
novamente. -
Adicione o dispositivo /dev/sdg ao VG
sudo vgextend foo /dev/sdg
As mensagens de AVISO na saída são decorrentes da unidade de disco com falha ainda ausente.
-
Tente novamente substituindo a unidade de disco com falha.
sudo lvconvert --repair foo/rr
Responda novamente com
y
para o prompt.A saída mostra novamente as mensagens WARNING sobre a unidade ausente, mas o comando substituiu com sucesso o dispositivo defeituoso no VG.
-
Examine o layout.
sudo lvs --all --options name,copy_percent,devices foo
Observe que /dev/sdg substituiu todas as entradas de dispositivo [unknown].
-
Remova o dispositivo com falha do VG.
Os utilitários LVM continuarão a relatar que o LVM não pode localizar o dispositivo com falha até que o remova do VG.
sudo vgreduce --removemissing foo
As mensagens de AVISO na saída são decorrentes da unidade de disco com falha ainda ausente.
-
Verifique o status de sincronização RAID antes de continuar.
Aviso: Continuar muito rapidamente para a próxima seção pode mostrar a seguinte mensagem de erro:
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr foo/rr state is currently "recover". Unable to switch to "check".
Este erro ocorrerá se a sincronização não tiver sido concluída após a adição de faixas ao LV RAID.
Verifique o LV RAID com
watch sudo lvs foo/rr
e aguarde o campo Cpy%Sync atingir 100%.
Verificar Coerência de Dados em LV RAID (Scrubbing)
O LVM fornece a capacidade de depuração para RAID LV, que lê todos os dados e blocos de paridade em uma matriz e verifica se há coerência.
-
Inicie um scrub no modo de verificação.
sudo lvchange --syncaction check foo/rr
-
Exiba o status da ação de scrubbing.
watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
Exemplo de Saída:
[oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr LV SyncAction Cpy%Sync rr check 30.08
-
Após a conclusão do scrubbing (syncronization), exiba o número de blocos inconsistentes encontrados.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
A opção
raid_sync_action
exibe o campo SyncAction com um dos seguintes valores:idle
: Todas as ações foram concluídas.resync
: Inicializando ou Recuperando após uma falha do sistema.recover
: Substituindo um dispositivo no array.check
: Procurando diferenças.repair
: Analisando e reparando diferenças.
Exemplo de Saída:
[oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches rr foo rwi-aor--- 13.34g 44.42 check 0
A saída mostra 0 inconsistências (Incompatíveis).
-
(Opcional) Corrija as diferenças na matriz.
Esta etapa é opcional, pois não há diferenças prováveis neste array de amostra.
sudo lvchange --syncaction repair foo/rr
-
(Opcional) Verifique o status do reparo.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
Observe que o campo SyncAction foi alterado para repair.
Consulte as páginas man lvchange(8)
e lvmraid(7)
para obter mais informações.
Para Obter Mais Informações:
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Configure RAID Logical Volumes on Oracle Linux
F57870-02
May 2022
Copyright © 2021, Oracle and/or its affiliates.