Na parte 02 dessa sequência de artigos criamos um raid 0, ou stripe. Agora iremos criar um RAID 1, conhecido também como mirroring(espelhamento).
O RAID 1
- Requer no mínimo dois discos
- Tem como vantagem a redundância. Se um disco falhar não perderemos nossos dados
- tem como desvantagem(drawback) o fato de usar apenas metade da soma dos discos. Exemplo, se tivermos dois discos de 100GB cada, no final será usado apenas 100GB e não 200.
Usaremos os mesmos passos iniciais feitos no artigo 02. Conforme abaixo, alteraremos apenas o level=0 para level=1.
Resumo dos Comandos mdadm que Serão Usados nesse Artigo
Posto aqui os comandos que usaremos como um resumo apenas para que sirva para pesquisa rápida.
sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf
cat /proc/mdstat
sudo mdadm --detail --scan
sudo mdadm /dev/md1 --fail /dev/sdc1
sudo mdadm --detail /dev/md1
sudo mdadm /dev/md1 --remove /dev/sdc1
sudo mdadm /dev/md1 --add /dev/sdd1
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á 1 ou mirror. Mas para outros tipos de raid poderia ser:
raid0 ou somente o ou ainda stripe
raid4 ou 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.
Discos Usados
Aqui apaguei o RAID 0 criado no artigo 02 e reaproveitarei os discos. Os discos são o sdb1 e sdc1.
elder@ubuntu:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk └─sda1 8:1 0 10G 0 part / sdb 8:16 0 50M 0 disk └─sdb1 8:17 0 49M 0 part sdc 8:32 0 50M 0 disk └─sdc1 8:33 0 49M 0 part sdd 8:48 0 100M 0 disk └─sdd1 8:49 0 48M 0 part sr0 11:0 1 1024M 0 rom
Criando RAID 1 com mdadm
iremos criar um arrai nível 1 usando 2 discos: sdb1 e sdc1. O sdd1 ficará para ser adicionado posteriormente.
- Criei o array
elder@ubuntu:~$ sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
O dispositivo virtual /dev/md1 foi criado(create), gerado um nodo dispositivo(/dev/md1), o nível do raid é o espelhamento(level=1) entre os discos, irei nesse momento usar 2 discos ou partições(raid-devices=2) que são dev/sdb1 /dev/sdc1.
- Vamos ver alguns detalhes.
Temos abaixo o dispositivo md1 ativo e composto pelos discos sdc1 e sdb1.elder@ubuntu:~$ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sdc1[1] sdb1[0] 49152 blocks super 1.2 [2/2] [UU] unused devices: <none>
Olha o UUID que serve como identificador do dispositivo. Iremos usar ele em /etc/fstab para que o dispositivo /dev/md1 seja montado automaticamente
elder@ubuntu:~$ sudo mdadm --detail --scan ARRAY /dev/md1 metadata=1.2 name=ubuntu:1 UUID=31c78d4f:2f3b168a:ef55e293:e70eab8e
mais detalhes
elder@ubuntu:~$ sudo mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Tue Aug 11 16:58:26 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 : 2 Persistence : Superblock is persistent Update Time : Tue Aug 11 16:58:26 2020 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : ubuntu:1 (local to host ubuntu) UUID : 31c78d4f:2f3b168a:ef55e293:e70eab8e Events : 17 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1
- Execute “sudo mdadm detail scan verbose | sudo tee -a /etc/mdadm/mdadm.conf ” e depois “sudo update-initramfs -u” para que as configurações não se percam após reinício do sistema operacional.
elder@ubuntu:~$ sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf ARRAY /dev/md1 level=raid1 num-devices=2 metadata=1.2 name=ubuntu:1 UUID=31c78d4f:2f3b168a:ef55e293:e70eab8e devices=/dev/sdb1,/dev/sdc1
elder@ubuntu:~$ sudo update-initramfs -u update-initramfs: Generating /boot/initrd.img-4.15.0-112-generic
- Formate o dispositivo /dev/md1 para que fique com o sistema de arquivos ext4. Execute “sudo mkfs.ext4 /dev/md1”
elder@ubuntu:~$ sudo mkfs.ext4 /dev/md1 mke2fs 1.44.1 (24-Mar-2018) Creating filesystem with 49152 1k blocks and 12288 inodes Filesystem UUID: 69ad38a0-fa35-4d94-9a8d-d8e90968a856 Cópias de segurança de superblocos gravadas em blocos: 8193, 24577, 40961 Allocating group tables: pronto Gravando tabelas inode: pronto Creating journal (4096 blocks): concluído Escrevendo superblocos e informações de contabilidade de sistema de arquivos: concluído
- Crie o diretório “/home/elder/meuRaid1” e monte o dispositivo /dev/md1
elder@ubuntu:~$ mkdir /home/elder/meuRaid1
elder@ubuntu:~$ sudo mount /dev/md1 /home/elder/meuRaid1
- Veja que mesmo os dois dispositivos tendo 50MB cada, o array ficou apenas com 43 MB. isso porque raid 1 une os valores para que haja redundância.
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% / /dev/md1 43M 1,1M 39M 3% /home/elder/meuRaid1
- Edite /etc/fstab e insira o UUID do dispositivo /dev/md1Para exibir o UUID
Copie o UUID abaixo
elder@ubuntu:~$ sudo mdadm --detail --scan ARRAY /dev/md1 metadata=1.2 name=ubuntu:1 UUID=31c78d4f:2f3b168a:ef55e293:e70eab8e
Abra seu editor preferido, usarei o vim mas para iniciantes recomendo o nano. insira a linha em laranja acima substituindo /home/elder/meuRaid1 pelo seu diretório.
elder@ubuntu:~$ sudo vim /etc/fstab
# <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=31c78d4f:2f3b168a:ef55e293:e70eab8e /home/elder/meuRaid1 ext4 0 0
Testando a Redundância do nosso RAID1
- Crie alguns arquivos dentro de /home/elder/meuRaid1
elder@ubuntu:~$ touch ~/meuRaid1/textos{1..5}.txt
elder@ubuntu:~$ ls -1 meuRaid1/ lost+found textos1.txt textos2.txt textos3.txt textos4.txt textos5.txt
- Simule falha no disco /dev/sdc1 usando “mdadm /dev/md1 fail /dev/sdc1”
elder@ubuntu:~$ sudo mdadm /dev/md1 --fail /dev/sdc1 mdadm: set /dev/sdc1 faulty in /dev/md1
Veja os detalhes em laranja
elder@ubuntu:~$ sudo mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Tue Aug 11 16:58:26 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 : 2 Persistence : Superblock is persistent Update Time : Tue Aug 11 17:44:50 2020 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 Spare Devices : 0 Consistency Policy : resync Name : ubuntu:1 (local to host ubuntu) UUID : 31c78d4f:2f3b168a:ef55e293:e70eab8e Events : 19 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 - 0 0 1 removed 1 8 33 - faulty /dev/sdc1
- Mesmo com a simulação da falha acima o sistema continua funcionando e não houve perda de dados
elder@ubuntu:~$ df -h | grep md1 /dev/md1 43M 1,1M 39M 3% /home/elder/meuRaid1
elder@ubuntu:~$ ls -1 meuRaid1/ lost+found textos1.txt textos2.txt textos3.txt textos4.txt textos5.txt
- Vamos adicionar um novo disco, o sdd1
elder@ubuntu:~$ sudo mdadm /dev/md1 --add /dev/sdd1 mdadm: added /dev/sdd1
Veja detalhes
elder@ubuntu:~$ sudo mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Tue Aug 11 16:58:26 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 : Tue Aug 11 18:01:43 2020 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Consistency Policy : resync Name : ubuntu:1 (local to host ubuntu) UUID : 31c78d4f:2f3b168a:ef55e293:e70eab8e Events : 38 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 2 8 49 1 active sync /dev/sdd1 1 8 33 - faulty /dev/sdc
Se atente para os detalhes em laranja
- Vamos remover o disco com falha que ainda consta na configuração
elder@ubuntu:~$ sudo mdadm /dev/md1 --remove /dev/sdc1 mdadm: hot removed /dev/sdc1 from /dev/md1
Conclusão
RAID é uma opção recomendadíssima para empresas; afinal de contas, não há valor que pague pelos dados e informações da sua empresa.
Vimos que o RAID 1 possui redundância como vantagem e muitos podem alegar que usar apenas metade da capacidade de armazenamento de 2 oi mais discos seria uma desvantagem, e para isso afirmo duas coisas:
- Novamente, não há valor que pegue pelos dados da sua empresa e
- Dispositivos de armazenamento atualmente está muito acessível, com preço bem em conta.
Invista em sua e proteja seus dados.
Só tenho mais uma última e importantíssima coisa a declarar: Cuidado, RAID redundante não é backup!
RAID com redundância e backups se complementam e fazem parte do que chamamos de “plano de continuidade”.
One Comment to “mdadm: Criando RAID 1 – parte 04”