mdadm: Criando Raid 0 – parte 02

Na primeira parte falamos um pouco sobre os tipos de RAID.

Aqui iremos praticar criando um RAID 0 que, conforme explicado anteriormente,

  • melhora  a performance
  • aumenta a capacidade de armazenamento somando os valores dos discos participantes do RAID 0. Obs.: se houver discos com diferentes tamanhos será considerado o com tamanho menor. Exemplo, RAID 0 com 3 discos, um com 100 GB, o segundo com 100 GB e o terceiro com 50 GB; irá criar um raid com 150 GB ao invés de 250GB. Pois será considerado como se todos fossem de 50GB.
  • O drawback(desvantagem) é a falta de redundância. Basta apenas que um dos discos do array falhe para que você perca tudo!

 

Discos que Usarei para RAID 0

Usarei dois discos, sdb e sdc. Realcei abaixo de laranja os dois discos.

elder@ubuntu:~$ lsblk -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   10G  0 disk 
sdb    8:16   0   50M  0 disk 
sdc    8:32   0   50M  0 disk 
sr0   11:0    1 1024M  0 rom

Na verdade, usarei as partições sdb1 e sdc1 desses discos. Como estou usando uma máquina virtual usarei discos com somente 50MB cada.

elder@ubuntu:~$ lsblk  | grep part
└─sda1   8:1    0   10G  0 part /
└─sdb1   8:17   0   49M  0 part 
└─sdc1   8:33   0   49M  0 part

 

Estrutura e Opções Usadas na Criação do RAID 0

Usaremos o seguinte comando

mdadm –create nomeDoMeuDispositivo  –level=0 –raid-devices=2  /dev/sdb1 /dev/sdc1

ou de forma  concisa(mais simples)

mdadm -C  nomeDoMeuDispositivo    -l 0   -n 2  /dev/sdb1 /dev/sdc1

onde,

nomeDoMeuDispositivo é um nome qualquer pelo qual identificaremos nosso RAID e

  • -C ou –create = significa criar
  • -l ou –level  = é o nível. Em nosso caso será 0 ou stripe. Mas para outros tipos de raid poderia ser:
    raid1 ou somente 1 ou ainda mirror
    raid4, iou apenas 4
    raid6 ou somente 6
    raid10 ou 10
    multipath ou mp
    faulty
  • -n ou –raid-devices = Aqui digitamos a quantidade de discos que serão usados.

 

Criando RAID 0

  1. Criando nosso array com 2 dispositivos
    elder@ubuntu:~$ sudo mdadm -C /dev/md0  -l 1 -n 2 /dev/sdb1 /dev/sdc1

    Se logo após o comando acima você executar  “cat /proc/mdstat”  poderá ver que os discos estarão sincronizando. Como  nesse teste os discos são bem pequenos, apenas 50 MB, então a sincronização acontece tão rapidamente que não temos tempo de acompanhar.

  2. Foi criado o dispositivo virtual /dev/md0
    elder@ubuntu:~$ ls -l /dev/md0 
    brw-rw---- 1 root disk 9, 0 ago 10 15:47 /dev/md0
  3. Vendo detalhes do array com “cat /proc/mdstat”
    elder@ubuntu:~$ cat /proc/mdstat 
    Personalities : [raid1] [raid0] 
    md0 : active raid0 sdc1[1] sdb1[0]
          96256 blocks super 1.2 512k chunks
          
    unused devices: <none>
    
  4. Vendo o status com “mdadm –detail /dev/md0”
    elder@ubuntu:~$ sudo mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Mon Aug 10 15:47:53 2020
            Raid Level : raid0
            Array Size : 96256 (94.00 MiB 98.57 MB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Mon Aug 10 15:47:53 2020
                 State : clean 
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
            Chunk Size : 512K
    
    Consistency Policy : none
    
                  Name : ubuntu:0  (local to host ubuntu)
                  UUID : ed6e77cc:a01c59a6:ad28640d:767599b8
                Events : 0
    
        Number   Major   Minor   RaidDevice State
           0       8       17        0      active sync   /dev/sdb1
           1       8       33        1      active sync   /dev/sdc1
    
  5. Vendo detalhes de /dev/sdb1 usando “mdadm –examine /dev/sdb1”
    elder@ubuntu:~$ sudo mdadm --examine /dev/sdb1
    /dev/sdb1:
              Magic : a92b4efc
            Version : 1.2
        Feature Map : 0x0
         Array UUID : ed6e77cc:a01c59a6:ad28640d:767599b8
               Name : ubuntu:0  (local to host ubuntu)
      Creation Time : Mon Aug 10 15:47:53 2020
         Raid Level : raid0
       Raid Devices : 2
    
     Avail Dev Size : 96256 (47.00 MiB 49.28 MB)
        Data Offset : 4096 sectors
       Super Offset : 8 sectors
       Unused Space : before=4016 sectors, after=0 sectors
              State : clean
        Device UUID : 1893b04f:b0206697:058671c8:fe1fe00f
    
        Update Time : Mon Aug 10 15:47:53 2020
      Bad Block Log : 512 entries available at offset 8 sectors
           Checksum : fe7f63aa - correct
             Events : 0
    
         Chunk Size : 512K
    
       Device Role : Active device 0
       Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
    

    Obs.: poderá executar o mesmo comando para o /dev/sdc1

 

Fazendo as Configurações Permanentes

 

Teremos que algumas  informações dentro de /etc/mdadm/mdadm.conf . Em algumas distros o arquivo de configurações fica em /etc/mdadm.conf

  1. Gere as informações usando “mdadm –detail –scan –verbose”. Observe que o resultado está sendo direcionado para o arquivo /etc/mdadm/mdadm.conf através do comando tee
    elder@ubuntu:~$ sudo mdadm  --detail --scan --verbose | sudo tee -a  /etc/mdadm/mdadm.conf 
    ARRAY /dev/md0 level=raid0 num-devices=2 metadata=1.2 name=ubuntu:0 UUID=ed6e77cc:a01c59a6:ad28640d:767599b8
       devices=/dev/sdb1,/dev/sdc1
    
  2. Veja que as linhas foram adicionadas ao final do arquivo
    elder@ubuntu:~$ cat /etc/mdadm/mdadm.conf 
    # mdadm.conf
    #
    # !NB! Run update-initramfs -u after updating this file.
    # !NB! This will ensure that initramfs has an uptodate copy.
    #
    # Please refer to mdadm.conf(5) for information about this file.
    #
    
    # by default (built-in), scan all partitions (/proc/partitions) and all
    # containers for MD superblocks. alternatively, specify devices to scan, using
    # wildcards if desired.
    #DEVICE partitions containers
    
    # automatically tag new arrays as belonging to the local system
    HOMEHOST <system>
    
    # instruct the monitoring daemon where to send mail alerts
    MAILADDR root
    
    # definitions of existing MD arrays
    
    # This configuration was auto-generated on Sat, 08 Aug 2020 09:48:49 -0300 by mkconf
    ARRAY /dev/md0 level=raid0 num-devices=2 metadata=1.2 name=ubuntu:0 UUID=ed6e77cc:a01c59a6:ad28640d:767599b8
       devices=/dev/sdb1,/dev/sdc1
    

    Observe a primeira linha em laranja dizendo para executarmos  “update-initramfs -u” após alterarmos esse arquivo. Vamos executar

    elder@ubuntu:~$ sudo update-initramfs -u
    update-initramfs: Generating /boot/initrd.img-4.15.0-112-generic

    Se não executar o “update-initramfs -u” ao reiniciar o computador o sistema irá usar o dispositivo /dev/md127 ao invés de /dev/md0.

Formatando o Montando /dev/md0

  1. Formate /dev/md0 para o sistema de arquivos ext4 ou outro de sua preferência
    elder@ubuntu:~$ sudo mkfs.ext4  /dev/md0
  2. Vamos criar uma pasta e montar
    elder@ubuntu:~$ mkdir -p /home/elder/meuRaid0
    elder@ubuntu:~$ sudo mount /dev/md0 /home/elder/meuRaid0/

    Veja o resultado da montagem com df

    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,9G  59% /
    tmpfs            99M     0   99M   0% /run/user/1000
    /dev/md0         88M  1,6M   79M   2% /home/elder/meuRaid0
  3. Use “lsblk -f” e pegue o uuid do nosso dispositivo
    elder@ubuntu:~$ lsblk -f
    NAME    FSTYPE            LABEL       UUID                                 MOUNTPOINT
    sda                                                                        
    └─sda1  ext4              hdPrincipal 060e460d-9ae2-41ac-bb4f-473c8438c0ba /
    sdb                                                                        
    └─sdb1  linux_raid_member ubuntu:0    ed6e77cc-a01c-59a6-ad28-640d767599b8 
      └─md0 ext4                          6c6c2542-8927-4823-88a1-2251ee30a869 /home/elder/meuRaid0
    sdc                                                                        
    └─sdc1  linux_raid_member ubuntu:0    ed6e77cc-a01c-59a6-ad28-640d767599b8 
      └─md0 ext4                          6c6c2542-8927-4823-88a1-2251ee30a869 /home/elder/meuRaid0
  4. Deixe a montagem permanente  editando  /etc/fstab. Edite o /etc/fstab com seu editor preferido, usarei o vim. Pode usar o nano que mais fácil.
    elder@ubuntu:~$ sudo vim /etc/fstab

    Peguei o UUID e coloque-o dentro do fstab da seguinte maneira

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda1 during installation
    UUID=060e460d-9ae2-41ac-bb4f-473c8438c0ba /               ext4    errors=remount-ro 0       1
    /swapfile                                 none            swap    sw              0       0
    UUID=6c6c2542-8927-4823-88a1-2251ee30a869 /home/elder/meuRaid0  ext4    defaults        0       0
    

Conclusão

Lembrar é sempre bom e aqui não poderíamos deixar de mencionar mais uma vez sobre o perigo que é trabalhar com RAID 0. Se o  fizer, garanta sempre que há backup dos arquivos.

 

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

One Comment to “mdadm: Criando Raid 0 – parte 02”

Deixe uma resposta

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