mdadm: Opções que Fazem parte do Modo Misto – parte 05

O manual do mdadm agrupa algumas opções de acordo a função de cada uma; esses grupos são chamados de “modos”. Por exemplo, no “modo de criação” há as opções responsáveis pela criação de RAID 🙂 no “modo assemble”  opções destinadas a montagem de RAID já existente.. e assim continua para os demais modos. Veja o manual para mais detalhes.

Hoje iremos ver algumas opções que fazem parte do “misc mode” ou modo misto.

Comandos Mistos do mdadm

O modo misto é definido como sendo o agrupamento de opções que não fazem, ou se encaixaram, em nenhum dos outros modos.

Fazem parte desse grupo:

  • -Q ou –query = Examina se um dispositivo é um  dispositivo md(array) ou se é apenas um componente do array. Após examinar exibe na tela informações.
  • -D ou –detail = Exibe informações de um array(dispositivos md). Veja que –detail é para ser usado apenas no array e não em seus componentes.
  • -E ou –examine = Exibe  o conteúdo de metadados contido dentro de dispositivos.  Perceba que –examine é para ser usado para examinar os dispositivos, os integrantes do array e não no array. É diferente de –detail que é usado no array e não em seus componentes.
  • -Y ou –export = quando usado juntamente com –detail, –incremental, ou –examine, –export irá exibir o resultado em forma de chave=valor. É útil principalmente para scripts.
  • -R ou –run =  inicia um array montando(assmbled) parcialmente. Esses casos podem acontecer quando o comando –assemble não encontra dispositivos suficientes para iniciar completamente o array; podemos então usar –run para iniciá-lo.
  • -S ou –stop = desativa um array, liberando todos os dispositivos.
  • -o ou –readonly = marca um array como somente leitura. Assim conseguiremos apenas buscar dados mas não gravar
  • -w ou –readwrite =  marca um array para buscas e escritas. Poderá ser usado normalmente.
  • –zero-superblock = Se o dispositivo conter superblocos md, o bloco é sobrescrito com zeros. Mais ou menos como se usássemos um “dd if=…”. Usando –zero-superblock juntamente com –force  o bloco onde o superbloco estará é sobrescrito mesmo parecendo ser inválido. CUIDADO AO USAR ESSE COMANDO! tenha certeza de está usando nos dispositivos desejados.

 

Usando as Opções do  Modo Misto  de mdadm

No post anterior criamos um raid 1, identificado como /dev/md1. Acabei fazendo algumas modificações nos bastidores 🙂 e o que era /dev/md1 agora é /dev/m0. Iremos usar esse array para a prática.

  1. Buscando informações do array
    elder@ubuntu:~$ sudo mdadm  --query   /dev/md0  
    /dev/md0: 48.00MiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.

    Acima, vemos que nosso array é um raid tem 48 MB,  nível 1, contém 2 dispositivos, nenhum disco substituto(spare).

  2. Vamos ver  se um disco/dispositivo é faz parte de um array ou se é um array.
    elder@ubuntu:~$ sudo mdadm  --query   /dev/sdc1
    /dev/sdc1: is not an md array
    /dev/sdc1: device 1 in 2 device active raid1 /dev/md0.  Use mdadm --examine for more detail.

    sdc1 não é um array
    sdc1 é o número 1 de um total de 2  dispositivos que fazem parte do raid 1 md0

    elder@ubuntu:~$ sudo mdadm  --query   /dev/sdd2 
    /dev/sdd2: is not an md array

    sdd2 não é um array e nem faz parte de um.

  3. Vendo detalhes de um array
    elder@ubuntu:~$ sudo mdadm --detail /dev/md0 
    /dev/md0:
               Version : 1.2
         Creation Time : Wed Aug 12 15:53:15 2020
            Raid Level : raid1
            Array Size : 49152 (48.00 MiB 50.33 MB)
         Used Dev Size : 49152 (48.00 MiB 50.33 MB)
          Raid Devices : 2
         Total Devices : 3
           Persistence : Superblock is persistent
    
           Update Time : Wed Aug 12 16:06:22 2020
                 State : clean 
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 1
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : ubuntu:0  (local to host ubuntu)
                  UUID : 3445794a:011323c0:d60dfe53:54bce7b4
                Events : 20
    
        Number   Major   Minor   RaidDevice State
           0       8       17        0      active sync   /dev/sdb1
           1       8       33        1      active sync   /dev/sdc1
    
           2       8       49        -      faulty   /dev/sdd1
    
  4. Vendo detalhes na forma de chave=valor.
    elder@ubuntu:~$ sudo mdadm -Y --detail /dev/md0 
    MD_LEVEL=raid1
    MD_DEVICES=2
    MD_METADATA=1.2
    MD_UUID=3445794a:011323c0:d60dfe53:54bce7b4
    MD_NAME=ubuntu:0
    MD_DEVICE_ev_sdd1_ROLE=spare
    MD_DEVICE_ev_sdd1_DEV=/dev/sdd1
    MD_DEVICE_ev_sdc1_ROLE=1
    MD_DEVICE_ev_sdc1_DEV=/dev/sdc1
    MD_DEVICE_ev_sdb1_ROLE=0
    MD_DEVICE_ev_sdb1_DEV=/dev/sdb1
  5. Buscando detalhes de todos os arrays existentes em meu pc. Para isso não preciso especificar o dispositivo array(/dev/md0),  –scan faz uma varredura buscando por esses dispositivos.
    elder@ubuntu:~$ sudo mdadm --detail --scan 
    ARRAY /dev/md0 metadata=1.2 name=ubuntu:0 UUID=3445794a:011323c0:d60dfe53:54bce7b4
  6. Usando o comando acima acrescentando –verbose para termos mais detalhes
    elder@ubuntu:~$ sudo mdadm --detail --scan  --verbose
    ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=ubuntu:0 UUID=3445794a:011323c0:d60dfe53:54bce7b4
       devices=/dev/sdb1,/dev/sdc1,/dev/sdd1
  7. Examinando um componente do array
    elder@ubuntu:~$ sudo mdadm --examine /dev/sdd 
    /dev/sdd:
       MBR Magic : aa55
    Partition[0] :       106496 sectors at         2048 (type 83)
    Partition[1] :        96256 sectors at       108544 (type 83)
    

    Acima, vimos informações do disco sdd. Agora veremos informações da partição que faz parte do array

    elder@ubuntu:~$ sudo mdadm --examine /dev/sdd1
    /dev/sdd1:
              Magic : a92b4efc
            Version : 1.2
        Feature Map : 0x0
         Array UUID : 3445794a:011323c0:d60dfe53:54bce7b4
               Name : ubuntu:0  (local to host ubuntu)
      Creation Time : Wed Aug 12 15:53:15 2020
         Raid Level : raid1
       Raid Devices : 2
    
     Avail Dev Size : 104448 (51.00 MiB 53.48 MB)
         Array Size : 49152 (48.00 MiB 50.33 MB)
      Used Dev Size : 98304 (48.00 MiB 50.33 MB)
        Data Offset : 2048 sectors
       Super Offset : 8 sectors
       Unused Space : before=1968 sectors, after=6144 sectors
              State : clean
        Device UUID : c676cfc9:07841351:be990a53:4d6ec5c4
    
        Update Time : Wed Aug 12 16:05:47 2020
      Bad Block Log : 512 entries available at offset 16 sectors
           Checksum : 4c84e4f9 - correct
             Events : 19
    
    
       Device Role : spare
       Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
    

    Se atente para a linha em laranja falando que esse componente é um spare, um substituto pronto para entrar em campo caso algum dos componentes ativos falhe.

  8. Parando o array
    elder@ubuntu:~$ sudo mdadm --stop /dev/md0 
    mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?

    Opa!! ocorreu erro. Isso aconteceu porque o array md0 está montado. Vamos desmontar e executar novamente

    Vendo onde está montado

    elder@ubuntu:~$ df -h
    Sist. Arq.      Tam. Usado Disp. Uso% Montado em
    udev            471M     0  471M   0% /dev
    tmpfs            99M  1,1M   98M   2% /run
    /dev/sda1       9,8G  5,5G  3,8G  59% /
    /dev/md0         43M  1,1M   39M   3% /home/elder/meuRaid1

    Desmontando

    elder@ubuntu:~$ sudo umount /dev/md0

    Executando novamente

    elder@ubuntu:~$ sudo mdadm --stop /dev/md0 
    mdadm: stopped /dev/md0
    

    Vamos ver detalhes dentro do arquivo /proc/mdstat

    elder@ubuntu:~$ cat /proc/mdstat 
    Personalities : [raid1] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] [linear] 
    md0 : active raid1 sdb1[0] sdd1[2](S) sdc1[1]
          49152 blocks super 1.2 [2/2] [UU]
          
    unused devices: <none>
    
  9. Vendo o statos do array
    elder@ubuntu:~$ sudo mdadm --detail --scan

    O comando acima não retornou nada demostrando que o array está parado.

    Poderemos observar melhor vendo o conteúdo do arquivo /etc/mdstat

    elder@ubuntu:~$ cat /proc/mdstat 
    Personalities : [raid1] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] [linear]
    unused devices: <none>
    
  10. Montando novamente o array e vendo o arquivo /proc/mdstat
    elder@ubuntu:~$ sudo mdadm  --assemble  /dev/md0
    mdadm: device 4 in /dev/md0 has wrong state in superblock, but /dev/sdd1 seems ok
    mdadm: /dev/md0 has been started with 2 drives and 1 spare.

    /dev/md0 foi iniciado com 2 drivers e 1 spare.

    Vendo o /proc/mdstat

    elder@ubuntu:~$ cat /proc/mdstat 
    Personalities : [raid1] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] [linear] 
    md0 : active raid1 sdb1[0] sdd1[2](S) sdc1[1]
          49152 blocks super 1.2 [2/2] [UU]
          
    unused devices: <none>
    
  11. Fazendo o dispositivo md0 apenas leitura
    elder@ubuntu:~$ sudo mdadm --readonly /dev/md0

    Montando

    elder@ubuntu:~$ sudo mount /dev/md0 ~/meuRaid1/
    mount: /home/elder/meuRaid1: AVISO: dispositivo protegido contra gravação; montado como somente-leitura.
    

    Abaixo vemos que foi montado

    elder@ubuntu:~$ df -h
    Sist. Arq.      Tam. Usado Disp. Uso% Montado em
    udev            471M     0  471M   0% /dev
    tmpfs            99M  1,1M   98M   2% /run
    /dev/sda1       9,8G  5,5G  3,8G  59% /
    /dev/md0         43M  1,1M   39M   3% /home/elder/meuRaid1

    Vendo detalhes em /proc/mdstat

    elder@ubuntu:~$ cat /proc/mdstat 
    Personalities : [raid1] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] [linear] 
    md0 : active (read-only) raid1 sdb1[0] sdd1[2](S) sdc1[1]
          49152 blocks super 1.2 [2/2] [UU]
          
    unused devices: <none>

    Tentado criar um novo arquivo

    elder@ubuntu:~$ touch ~/meuRaid1/teste.txt
    touch: não foi possível tocar '/home/elder/meuRaid1/teste.txt': Sistema de arquivos somente para leitura

    Tetando ler o conteúdo. Vemos que conseguimos ler, pois está somente leitura

    elder@ubuntu:~$ cat meuRaid1/texto01.txt 
    texto dentro de um pequeno arquivo
    uma segunda linha
    

    Tetando alterar o arquivo e vemos que não podemos

    elder@ubuntu:~$ echo "adicionando uma terceira linha" >>  meuRaid1/texto01.txt 
    -bash: meuRaid1/texto01.txt: Sistema de arquivos somente para leitura
  12. Desmontando de fazendo o dispositivo novamente writable(com permissão de escrita)Desmontando
    elder@ubuntu:~$ sudo umount /dev/md0

    Tornando possível a escrita dentro do array

    elder@ubuntu:~$ sudo mdadm --readwrite  /dev/md0

    Montando

    elder@ubuntu:~$ sudo mount /dev/md0 meuRaid1/

    tetando alterar o arquivo e veremos que conseguimos

    elder@ubuntu:~$ echo "uma segunda linha" >>  meuRaid1/texto01.txt

     

Conclusão

O modo misto, apesar de serem  opções que não pertencem a nenhum outro modo, são itens úteis e bem interessantes.

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *