Por Luiz Antonio Cassetari Vieira Filho
Raid (Redundant Arrays of Inexpensive Disks), é uma técnica onde os dados ficam armazenados em vários discos para se aumentar a velocidade de acesso/gravação ou/e aumentar a redundância do sistema. Se uma aplicação necessita de uma taxa de I/O muito alta, pode-se ter os dados espalhados em vários HDs e utilizar esses dados em vários HDs ao mesmo tempo. Se um servidor não pode parar por motivo algum, pode-se colocar 2 HDs e copiar tudo que existe em um para o outro. Assim se um dos HDs sofrer algum problema físico, existe uma copia automática em outro HD.
Existem vários tipos de raid. Os mais comuns são os raid de nivel 0, 1 e 5. O raid de nível 0 faz striping dos dados. Ou seja, ele guarda os dados em vários HDs ao mesmo tempo, aumentando a velocidade de I/O. O raid 1, é apenas uma copia de dados. Assim se um HD sofrer algum tipo de pane física, existirá uma copia pronta para entrar em ação. Já o raid 5 é como o raid 0, mas com a redundância do raid 1. Ele grava os dados em vários HDs, entretanto ele guarda a paridade em vários discos. Isso significa que ele sempre vai ter duas copias de qualquer dado que seja gravado no array raid. No caso de um HD morrer, ele ainda vai ter os dados daquele HD espelhados nos outros HDs, sendo possível uma recuperação dos dados.
Obs: RAID NÃO É BACKUP! Se por acidente você digitar um rm -rf /, o sistema irá apagar todos os dados, inclusive das partições espelhadas.
Esse artigo irá tratar do raid nível 1 via software, usando como sistema o Conectiva Linux 9, usando raid em apenas um ponto de montagem.
0: Requerimentos.
Um computador com linux, não precisa ser conectiva, ou
conectiva 9, um kernel com suporte a raid (Multi-device support (RAID and
LVM) ---> <*> RAID support, <*> RAID-1 (mirroring) mode), o pacote
raidtools, e é claro, mais de um HD em seu computador.
1: Instale fisicamente os HDs.
No nosso exemplo iremos usar HDs ide normais, mas em produção
seria ideal usar HDs scsi ou ide ATA133. No caso de se usar HD ide,
é importante colocar eles em controladoras separadas, pois se a controladora
sofrer algum problema, o problema irá se espalhar para os 2 HDs. Mas no
nosso
teste, os HDs estão na mesma controladora ;)
2: Particione os HDs.
Os HDs não precisam ter as partições do mesmo tamanho, entretanto
a partição raid será do tamanho da menor partição.
[root@arp root]# fdisk /dev/hdc Comando (m para ajuda): n Comando - ação e estendida p partição primária (1-4) p Número da partição (1-4): 1 Primeiro cilindro (1-784, padrão 1): Usando valor padrão 1 Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (1-784, padrão 784): Usando valor padrão 784 Comando (m para ajuda):
Comando (m para ajuda): t Selected partition 1 Código hexadecimal (digite L para listar os códigos): fd O tipo da partição 1 foi alterado para fd (Detecção automática de RAID Linux) Comando (m para ajuda):
3: Crie o /etc/raidtab.
O /etc/raidtab é o arquivo de configuração do sistema raid. É
nele em que estão os HDs a serem usados, o nível de raid, etc.
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
persistent-superblock 1
chunk-size 8
device /dev/hdc1
raid-disk 0
device /dev/hdd1
raid-disk 1
4: Crie o array
Para criar o array raid, use o comando mkraid /dev/md0.
[root@arp root]# mkraid /dev/md0 disk 0: /dev/hdc1, 6297448kB, raid superblock at 6297344kB disk 1: /dev/hdd1, 10032561kB, raid superblock at 10032448kB [root@arp root]#
[root@arp proc]# cat mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdd1[1] hdc1[0]
6297344 blocks [2/2] [UU]
[==>..................] resync = 12.0% (761536/6297344) finish=6.7min
speed=13614K/sec
unused devices: <none>
[root@arp proc]#
Array raid nível 1 sendo criado.
Uma dica legal, é usar um script como esse e ficar olhando o sistema
trabalhar ;D
[root@arp root]# mkfs.ext3 /dev/md0
mke2fs 1.33 (21-Apr-2003)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
788704 inodes, 1574336 blocks
78716 blocks (5.00%) reserved for the super user
First data block=0
49 block groups
32768 blocks per group, 32768 fragments per group
16096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@arp root]# tune2fs -c0 -i0 /dev/md0
tune2fs 1.33 (21-Apr-2003)
Setting maximal mount count to -1
Setting interval between check 0 seconds
[root@arp root]#
[root@arp mnt]# mount -t ext3 /dev/md0 /mnt/raid [root@arp mnt]# cd raid [root@arp raid]# ls lost+found [root@arp raid]# mount /dev/hda2 on / type ext3 (rw) none on /proc type proc (rw) /dev/md0 on /mnt/raid type ext3 (rw) [root@arp raid]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/hda2 ext3 9.2G 2.4G 6.4G 27% / /dev/md0 ext3 5.9G 33M 5.5G 1% /mnt/raid [root@arp raid]#
5: Testando
Para testar nosso array raid, vamos copiar um arquivo cheio de zeros para a
partição com raid, e fazer um checksum dele para termos certeza que o
arquivo
não vai se corromper.
[root@arp raid]# dd if=/dev/zero of=/mnt/raid/zeros count=50 bs=1MB 50+0 registros de entrada 50+0 registros de saída [root@arp raid]# ls lost+found zeros [root@arp raid]# du -sh zeros 51M zeros [root@arp raid]# md5sum zeros 25e317773f308e446cc84c503a6d1f85 zeros [root@arp raid]#
[root@arp proc]# cat mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[0]
6297344 blocks [2/1] [U_]
unused devices: <none>
[root@arp proc]#
[root@arp mnt]# mount /dev/md0 raid [root@arp mnt]# cd raid [root@arp raid]# ls lost+found zeros [root@arp raid]# md5sum zeros 25e317773f308e446cc84c503a6d1f85 zeros [root@arp raid]#
[root@arp root]# raidhotadd /dev/md0 /dev/hdd1
[root@arp root]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdd1[2] hdc1[0]
6297344 blocks [2/1] [U_]
[>....................] recovery = 2.2% (144000/6297344)
finish=6.4min speed=16000K/sec
unused devices: <none>
[root@arp root]#
Links: Se desejar mais informações, use esses sites.
http://www-106.ibm.com/developerworks/linux/library/l-raid2/index.html
http://www.uni-mainz.de/~neuffer/scsi/what_is_raid.html
http://linas.org/linux/raid.html
http://www.acnc.com/04_01_0p1.html