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): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First 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): t Selected partition 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): w The 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!
2 comments
Tiago
Muito bom tutorial , só fazia um ajuste no mount do fstab por uuid.
José Miguel Silva Caldeira
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.