The power of root

RAID via software no linux

qui 03 setembro 2015 hd / raid /

Olá pessoal.

Hoje estou configurando um computador com o bacula e preciso configurar os HD's em RAID, como os backups ficarão armazenados local na maquina e em outro NAS vou configurá-los com RAID 0.

Na maquina estou rodando o Debian portanto os comandos abaixo podem ser executados na maioria das distribuições debian-like.

Primeiramente devemos instalar o utilitário RAID que se chama mdadm com o seguinte comando:

root@srv-bacula:~# apt-get install mdadm
Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto
Os NOVOS pacotes a seguir serão instalados:
  mdadm
0 pacotes atualizados, 1 pacotes novos instalados, 0 a serem removidos e 9 não atualizados.
É preciso baixar 566 kB de arquivos.
Depois desta operação, 1.098 kB adicionais de espaço em disco serão usados.
Obter:1 http://ftp.br.debian.org/debian/ wheezy/main mdadm i386 3.2.5-5 [566 kB]
Baixados 566 kB em 1s (353 kB/s)
Pré-configurando pacotes ...
A seleccionar pacote anteriormente não seleccionado mdadm.
(Lendo banco de dados ... 70717 ficheiros e directórios actualmente instalados.)
Desempacotando mdadm (de .../mdadm_3.2.5-5_i386.deb) ...
Processando gatilhos para man-db ...
Configurando mdadm (3.2.5-5) ...
Generating array device nodes... done.
Generating mdadm.conf... done.
update-initramfs: deferring update (trigger activated)
[ ok ] Assembling MD arrays...done (no arrays found in config file or automatically).
[ ok ] Starting MD monitoring service: mdadm --monitor.
Processando gatilhos para initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.2.0-4-686-pae
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
W: mdadm: no arrays defined in configuration file.

Será carregado uma tela solicitando para selecionar o grupo MD para carregar o sistema, caso utilizar o sistema todo em RAID será necessário infromar o grupo ou deixar "all" para carregar todos os grupos, se o disco que efetua o boot estiver fora do RAID pode ser informado "none".

raid-software-01

Em seguida será solicitado se deseja iniciar os grupos MD após carregar o sistema.

raid-software-02

Agora vamos identificar os discos com o comando fdis -l, geralmente os discos são /dev/sd*.

root@srv-bacula:~# fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ab517

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   484247551   242122752   83  Linux
/dev/sda2       484249598   488396799     2073601    5  Estendida
/dev/sda5       484249600   488396799     2073600   82  Linux swap / Solaris

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Dispositivo Boot      Start         End      Blocks   Id  System

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Dispositivo Boot      Start         End      Blocks   Id  System

Disk /dev/sdc: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Dispositivo Boot      Start         End      Blocks   Id  System

Disk /dev/sde: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Dispositivo Boot      Start         End      Blocks   Id  System

Podemos identificar os discos da seguinte forma:

/dev/sda = /
/dev/sdb = HD 250GB - MD0
/dev/sdc = HD 250GB - MD0
/dev/sdd = HD 1TB - MD1
/dev/sde = HD 1TB - MD1

Onde criarei abaixo um grupo com 2 HD's de 250GB (MD0) e outro grupo com mais 2 HD's de 1TB (MD1).

root@srv-bacula:~# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
mdadm: /dev/sdb appears to be part of a raid array:
    level=raid0 devices=0 ctime=Wed Dec 31 21:00:00 1969
mdadm: partition table exists on /dev/sdb but will be lost or
       meaningless after creating array
mdadm: /dev/sdc appears to be part of a raid array:
    level=raid0 devices=0 ctime=Wed Dec 31 21:00:00 1969
mdadm: partition table exists on /dev/sdc but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
root@srv-bacula:~# mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdd /dev/sde
mdadm: /dev/sdd appears to be part of a raid array:
    level=raid0 devices=0 ctime=Wed Dec 31 21:00:00 1969
mdadm: partition table exists on /dev/sdd but will be lost or
       meaningless after creating array
mdadm: /dev/sde appears to be part of a raid array:
    level=raid0 devices=0 ctime=Wed Dec 31 21:00:00 1969
mdadm: partition table exists on /dev/sde but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

Vamos entender o comando:

O comando abaixo chama o mdadm passando a instrução para criar o grupo md0 em /dev/

mdadm --create /dev/md0

O --level= define qual o nível de RAID será criado

--level=0

Com o parametro --raid-devices=2 estamos definindo que vamos utilizar 2 dispositivos.

--raid-devices=2

E no final passamos quais dispositivos vamos utilizar

/dev/sdb /dev/sdc

Após criados os grupos, vamos validar se está tudo certo com o RAID:

root@srv-bacula:~# cat /proc/mdstat
Personalities : [raid0]
md1 : active raid0 sde[1] sdd[0]
      1953524736 blocks super 1.2 512k chunks

md0 : active raid0 sdc[1] sdb[0]
      488396800 blocks super 1.2 512k chunks

unused devices: <none>

Agora vamos particionar nossos grupos com o fdisk.

fdisk /dev/md0
root@srv-bacula:~# fdisk /dev/md0
O dispositivo não contém nem uma tabela de partições DOS válida nem um rótulo de disco Sun, OSF ou SGI
Building a new DOS disklabel with disk identifier 0x01bb915f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Aviso: a opção inválida 0x0000 da tabela de partições 4 será corrigida por gravação (w)

Comando (m para ajuda): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Número da partição (1-4, default 1):
Using default value 1
Primeiro setor (2048-976793599, default 2048):
Using default value 2048
Last setor, +setores or +size{K,M,G} (2048-976793599, default 976793599):
Using default value 976793599

Comando (m para ajuda): p

Disk /dev/md0: 500.1 GB, 500118323200 bytes
2 heads, 4 sectors/track, 122099200 cylinders, total 976793600 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x01bb915f

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/md0p1            2048   976793599   488395776   83  Linux

Comando (m para ajuda): w
A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.
Sincronizando discos.

Agora devemos criar os sistemas de arquivos para os RAID's.

mkfs.ext4 /dev/md0p1
mkfs.ext4 /dev/md1p1

Teremos a seguinte saída para o comando acima:

root@srv-bacula:~# mkfs.ext4 /dev/md0p1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
30531584 inodes, 122098944 blocks
6104947 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
3727 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

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

Vamos colocar agora as nossas novas partições no fstab para montar automaticamente.

      vim /etc/fstab


/dev/md0p1          /mnt/md0  ext4    defaults,noatime      0      2
/dev/md1p1          /mnt/md1  ext4    defaults,noatime      0      2

Para montar as partições vamos rodar o comando abaixo:

mount -a

root@srv-bacula:/mnt# df -mh
Sist. Arq.                                               Tam  Usad Dispon. Uso% Montado em
rootfs                                                  228G   17G    200G   8% /
udev                                                     10M     0     10M   0% /dev
tmpfs                                                   405M  288K    404M   1% /run
/dev/disk/by-uuid/5d3c3f4c-988e-477d-b4fd-c614cb9ec9d2  228G   17G    200G   8% /
tmpfs                                                   5,0M     0    5,0M   0% /run/lock
tmpfs                                                   1,2G     0    1,2G   0% /run/shm
/dev/md0p1                                              459G  198M    435G   1% /mnt/md0
/dev/md1p1                                              1,8T  196M    1,7T   1% /mnt/md1

Pronto, agora temos nosso RAID via software funcionando em nosso linux.

Até a próxima.

on the top

Comments