6 de jan. de 2019

Usando o MDADM para provisionar um RAID 5 [Red Hat]


Olá meu caro,

como já é de praxe, em todos os posts você irá se deparar com alguns gifs.

O que é RAID? É de comer? 


RAID, sigla para Redudant Array Of inexpensive (ou Independent) Drives (Ou Disks), é um método para integrar vários dispositivos de armazenamento numa única unidade lógica. Existem dois modelos de implementação de RAID: via hardware ou via software. O RAID via hardware é transparente para o sistema operacional que não precisará de nenhuma configuração especial. No RAID via software é o sistema operacional o responsável por combinar as diferentes unidades físicas. São vários métodos ed gravação e acesso que podem ser utilizados pelo RAID. Veremos o RAID 5. 

Quem Deve Usar o RAID?


Todas as pessoas que precisam armazenar grandes quantidades de dados à mão (tal como um administrador de sistemas) se beneficiarão ao usar a tecnologia RAID. As principais razões para usar o RAID incluem:

  • Aumenta a velocidade
  • Aumenta a capacidade de armazenamento usando um único disco virtual
  • Impacto reduzido de uma falha de disco


Então chega, aplicar a teoria na prática é a melhor maneira de aprender. 



Etapas 

  1. Selecionar o tipo de RAID
  2. Selecionar os discos que serão utilizados
  3. Utilizar o fdisk para criar as partições 
  4. Instalar o mdadm 
  5. Criar a partição RAID com o comando mdadm 
  6. Formatar a partição e checar os parâmetros aplicados
  7. Montar a partição RAID



- Selecionar o tipo de RAID


Iremos criar um RAID 5, para este tipo é necessário ter no mínimo 3 discos, a redundância dos dados é feita por todos os dispositivos. Desta forma, o RAID não ficará comprometido em caso de falha de um dos dispositivos que o constituem.   


- Selecionar os discos que serão utilizados


Podemos utilizar os comando fdisk -l para listar os discos que o SO reconhece. Abaixo a lista de dispositivos conectados na máquina. 


[root@svr-grc-1 luizep]# fdisk -l
Disk /dev/sda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes Disk label type: dos
/dev/sda1 * 2048 25157789 12577871 83 Linux
Disk identifier: 0x00095e76 Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 4096 bytes
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes
/dev/sdb1 2048 20971519 10484736 8e Linux LVM
Disk label type: dos Disk identifier: 0xb60ec850 Device Boot Start End Blocks Id System
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/sdc: 16.1 GB, 16106127360 bytes, 31457280 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes
Units = sectors of 1 * 512 = 512 bytes
Disk label type: dos Disk identifier: 0x06192ffb Device Boot Start End Blocks Id System Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
Device Boot Start End Blocks Id System
Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0xf0ec174f Disk /dev/sde: 16.1 GB, 16106127360 bytes, 31457280 sectors
Device Boot Start End Blocks Id System
Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos
Disk identifier: 0x6db14756

Na saída acima estão listados todos os discos reconhecidos pela máquina. Vamos utilizar os discos;
  • /dev/sdc
  • /dev/sdd
  • /dev/sde

Vamos trabalhar nestes discos na próxima etapa. 


- Utilizar o fdisk para criar as partições 


Para utilizar o disco é necessário criar as partições conforme necessário, neste exemplo iremos utilizar o fdisk para configurar o dispositivos. Vamos criar uma partição para cada disco com o tipo fd (Linux raid auto). 

Para criar a partição você deve utilizar os comandos abaixo em todos os discos que serão utilizados para compor o RAID. 


#fdisk /dev/sdd
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended Select (default p): p
First sector (2048-31457279, default 2048):
Partition number (1-4, default 1): Using default value 2048
Using default value 31457279
Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): Partition 1 of type Linux and of size 15 GiB is set
Changed type of partition 'Linux raid autodetect' to 'Linux raid autodetect'
Command (m for help):t Hex code (type L to list all codes): fd Command (m for help): p Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
Disk label type: dos
Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0xf0ec174f
The partition table has been altered!
Device Boot Start End Blocks Id System /dev/sdd1 2048 31457279 15727616 fd Linux raid autodetect
Command (m for help): w


- Instalar o mdadm 

 Neste exemplo estou utilizando o Red Hat 4.8.5. Para instalar o mdadm utilize o gerenciador de pacote da sua distribuição. O mdadm é um utilitário do Linux usado para gerenciar e monitorar dispositivos RAID de software

centOS
#yum install -y mdadm
Debian
#apt-get install -y mdadm
Verificando a versão instalada.
[root@svr-grc-1 luizep]# mdadm --version
mdadm - v4.1-rc1 - 2018-03-22


- Criar a partição RAID com o comando mdadm 

 Com o comando abaixo estamos criando o dispositivo /dev/md5 que representa o RAID 5 com os dispositivos /dev/sdd1 /dev/sdc1 /dev/sde1.

[root@svr-grc-1 luizep]# mdadm -v -C /dev/md5 -l 5 -n 3 /dev/sdd1 /dev/sdc1 /dev/sde1
mdadm: /dev/sdc1 appears to be part of a raid array:
mdadm: /dev/sdd1 appears to be part of a raid array:
level=raid5 devices=3 ctime=Fri Jan 4 18:24:37 2019
mdadm: partition table exists on /dev/sdd1 but will be lost or
level=raid5 devices=3 ctime=Fri Jan 4 18:24:37 2019 meaningless after creating array
Continue creating array? (y/n) y
mdadm: /dev/sde1 appears to contain an ext2fs file system size=15727616K mtime=Thu Jan 1 00:00:00 1970 mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.


- Formatar a partição e checar os parâmetros aplicados 

Após ter criado as partições, vamos formata-lás no com o tipo ext4.

[root@svr-grc-1 luizep]# mkfs.ext4 /dev/md5


Verificando a partição com o comando fdisk -l

[root@svr-grc-1 luizep]# fdisk -l /dev/md5
Disk /dev/md5: 32.2 GB, 32191283200 bytes, 62873600 sectors
Units = sectors of 1 * 512 = 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes


Com o comando blkid é possível verificar o UUID da partição, ou seja, o identificador único de cada partição e também o seu tipo, neste caso "linux_raid_member". Veja a saída abaixo:

[root@svr-grc-1 luizep]# blkid
/dev/sda1: LABEL="/" UUID="51a7c7e4-4490-4c13-a7aa-446d8606cef5" TYPE="xfs"
/dev/sdc1: UUID="0852f278-7900-f9aa-ec43-4dffbe44450f" UUID_SUB="8f57c873-b6dd-adf8-5fe7-0c61fc2bf63c" LABEL="svr-grc-1:5" TYPE="linux_raid_member"
/dev/sdd1: UUID="0852f278-7900-f9aa-ec43-4dffbe44450f" UUID_SUB="4623d9bf-9bb3-58bc-9416-7af6c1fe85aa" LABEL="svr-grc-1:5" TYPE="linux_raid_member"
/dev/sdb1: PTTYPE="dos"
/dev/sde1: UUID="0852f278-7900-f9aa-ec43-4dffbe44450f" UUID_SUB="01231dbd-077a-6d5a-ec46-af084bbaa4ac" LABEL="svr-grc-1:5" TYPE="linux_raid_member"
/dev/md5: UUID="97540475-09cb-4d94-82a1-6df5aa558079" TYPE="ext4"


Podemos checar mais informações sobre o RAID criado bem como a outras informações com o comando mdadm --detail. Utilizamos 3 discos de 15GB, neste caso o RAID 5 controi seu RAID da seguinte maneira 15GB + 15GB + 15GB = 45GB - 15GB = 30GB, ou seja, disco1 + disco2 + disco3 = X - disco1. Um disco é utilizado para bit de paridade.

[root@svr-grc-1 luizep]# mdadm --detail /dev/md5
/dev/md5: Version : 1.2
Raid Level : raid5
Creation Time : Sun Jan 6 18:30:55 2019
Used Dev Size : 15718400 (14.99 GiB 16.10 GB)
Array Size : 31436800 (29.98 GiB 32.19 GB) Raid Devices : 3 Total Devices : 3
State : clean
Persistence : Superblock is persistent Update Time : Sun Jan 6 18:37:29 2019 Active Devices : 3 Working Devices : 3
Name : svr-grc-1:5 (local to host svr-grc-1)
Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync
0 8 33 0 active sync /dev/sdc1
UUID : 0852f278:7900f9aa:ec434dff:be44450f Events : 20 Number Major Minor RaidDevice State 1 8 49 1 active sync /dev/sdd1
3 8 65 2 active sync /dev/sde1


Para que o sistema possa identificar e montar o RAID de forma eficiente devemos criar e popular o arquivo /etc/mdadm.conf, caso o arquivo não exista execute o comando abaixo.

[root@svr-grc-1 luizep]# mdadm -v --detail --scan >> /etc/mdadm.conf


Um arquivo importante para verificar é o /proc/mstat , este arquivo contém informações sobre o RAID no sistema. Exemplo de conteúdo num sistema RAID ativo.

[root@svr-grc-1 luizep]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
31436800 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md5 : active raid5 sde1[3] sdd1[1] sdc1[0]
unused devices:


- Montar a partição 


 Vamos criar um diretório para montagem da nossa partição RAID e monta-lá.

[root@svr-grc-1 luizep]# mkdir /mnt/raid5
[root@svr-grc-1 luizep]# mount /dev/md5 /mnt/raid5/
[root@svr-grc-1 luizep]# df -lh /dev/md5
/dev/md5 30G 45M 28G 1% /mnt/raid5
Filesystem Size Used Avail Use% Mounted on


Para montagem automática devemos adicionar a partição no arquivo /etc/fstab conforme abaixo.

[root@svr-grc-1 luizep]# echo "/dev/md5 /mnt/raid5 ext4 default 0 0" >>/etc/fstab 



Comandos utilizados: 
#lsblk -f 
#blkid 
#fdisk -l 
#fdisk 
#mkfs.ext4 
#mdadm --verbose --detail --scan 
#df -lh 
#cat /proc/mdstat 
#[root@svr-grc-1 luizep]# mdadm -v --create /dev/md5 -l5 -n3  /dev/sdd1 /dev/sdc1 /dev/sde1 
#yum install -y mdadm 
#apt-get install mdadm 
#mdadm --version


Ao som de 







Espero ter auxiliado e, até o próximo :) ...


Leitura recomendada




Nenhum comentário:

Postar um comentário