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
- 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.
- 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
- 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>
- 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
- 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
- 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
- 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
- Formate /dev/md0 para o sistema de arquivos ext4 ou outro de sua preferência
elder@ubuntu:~$ sudo mkfs.ext4 /dev/md0
- 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
- 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
- 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.
One Comment to “mdadm: Criando Raid 0 – parte 02”