Configuração manual de RAID1 por software

Neste artigo pretendo descrever como configurar RAID1 por software no Debian/Ubuntu como tambem no CentOS. Vou partir do principio que sabem o que é RAID, este artigo não serve para aqueles que não têm conhecimento sobre esta matéria.

Neste artigo vou utilizar o comando mdadm que nos permite, trabalhar com software RAID no linux. Caso não tenhamos instalado ainda este comando, instalamos da seguinte forma:

No CentOS

# yum install mdadm

No Debian/Ubuntu

# apt-get install mdadm

Neste artigo vou utilizar dois discos de 2GB onde vou formatar cada um deles com uma partição do tipo Raid. Nesta maquina tenho três discos sda, sdb, sdc. Estou a utilizar o disco sda para o sistema e vou utilizar sdb e sdc para o RAID1. Como os discos que vou usar para o RAID estão completamente limpos vou ter que formatar os discos com uma partição do tipo Linux raid auto que é representado pelo código hexadecimal fd. Para este fim vou utilizar o comando fdisk para criar a partição pretendida no primeiro disco e de seguida vou utilizar o comando sfdisk para copiar a tabela de partições do primeiro disco para o segundo disco. Estes comandos funcionam da mesma forma no CentOS/Debian/Ubuntu pelo menos.

A vermelho estão as opções que utilizei para formatar a partição do primeiro disco:

# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xd6d66937.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): nPartition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): pPartition number (1-4, default 1): 1First sector (2048-4194303, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303):
Using default value 4194303

Command (m for help): tSelected partition 1
Hex code (type L to list codes): fdChanged system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): wThe partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Para verificarmos as partições do disco utilizamos:

# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd6d66937

Device Boot Start End Blocks Id System
/dev/sdb1 2048 4194303 2096128 fd Linux raid autodetect

Neste momento já temos o primeiro disco que iremos utilizar para o RAID formatado poderíamos claro formatar o segundo disco da mesma forma que formatamos este, mas por razões de tempo e para evitar enganos, podemos copiar a tabela de partições de um disco para o outro, pois as partições precisam ser idênticas nos dois discos.

Para copiar a tabela de partições de um disco para outro utilizamos:

# sfdisk -d /dev/sdb | sfdisk --force /dev/sdc

Neste momento já temos as duas partições prontas a serem usadas na nossa configuração de RAID1. Agora vamos dar inicio ao processo de criação do RAID.

Para criarmos o nosso RAID com estes dois discos utilizamos o comando mdadm com os segintes parametros:

# mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[bc]1

Neste momento temos o nosso dispositivo de RAID1 /dev/md0 criado e podemos começar a usa-lo. O processo de criação do RAID neste artigo é bastante rápido pois estou a trabalhar com partições de 2GB. Numa situação real com partições de dois ou quatro TB este processo pode demorar algumas horas.

Para sabermos como está o processo de construção do raid podemos utilizar:

# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdc1[1] sdb1[0]
      2095040 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

Para que estes passos sobrevivam a um reboot necessitamos de configurar o ficheiro de configuração do mdadm.conf. Desta forma sempre que reiniciarmos a maquina ele seja reconhecido e configurado. Este ficheiro tem uma localização que não é igual em todas as distribuições linux. No CentOS e nos sistemas descendentes do RedHat, este ficheiro está localizado em /etc/mdadm.conf. Já nas distribuições descendentes do Debian está localizado /etc/mdadm/mdadm.conf.

CentOS

# mdadm --detail --scan >> /etc/mdadm.conf

Debian/Ubuntu

# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Já temos o nosso RAID1 criado e configurado para ser reconhecido sempre que iniciar a maquina. Agora claro que temos de tratar do processo de formatar o dispositivo md0. Para formatar o dispositivo md0 com uma partição EXT4 utilizamos o seguinte comando:

# mkfs.ext4 -L data /dev/md0
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 523760 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Neste momento já temos o nosso dispositivo formatado e já podemos monta-lo e usa-lo. O processo de montar o dispositivo md0 é o mesmo usado para montar qualquer outra partição. Para montar o dispositivo temos de decidir onde o queremos montar. Eu decidi montar o dispositivo em /data. Para isso vou ter de criar este directório porque não existe, para isso corro:

# mkdir /data

Agora que já temos o directório onde queremos montar a nossa partição RAID, já podemos monta-la e para isso fazemos:

# mount /dev/md0 /data

Neste momento temos o dispositivo RAID montado e já podemos começar a guardar o que pretendermos nele, mas se necessitarmos que ele seja montado sempre que a maquina inicie temos de configurar o ficheiro /etc/fstab. Para isso:

# echo "/dev/md0 /data ext4 errors=remount-ro 0 1" >> /etc/fstab

Neste momento sempre que a maquina iniciar teremos o nosso RAID configurado e montado automaticamente em /data onde podemos guardar os nossos ficheiros mais importantes.

Este artigo escrevi testando estes comandos no Ubuntu 14.04.1 e no CentOS7. Em outros sistemas não posso garantir que funcione a cem por cento talvez seja necessário fazer alguns ajustes.

Espero que gostem!

Artigos Relacionados:

2 comentários sobre “Configuração manual de RAID1 por software

    • José Miguel Silva Caldeirasays:

      Apesar do objectivo do artigo não ser como montar o RAID1, porque isso irá depender dos objetivos de cada um. Sim é verdade que podemos referenciar o dispositivo a montar por:

      /dev/md0
      LABEL=data
      UUID=f54fefce-653d-4db4-b7fc-df59f4225926

      No teu caso podias utilizar assim claro:

      # echo "UUID=f54fefce-653d-4db4-b7fc-df59f4225926 /data ext4 errors=remount-ro 0 1" >> /etc/fstab
      

      Como muitas outras opções que são permitidas pelo comando mount, mas isso deixo a critério de cada um.

Deixe uma resposta