O Luiz Cassetari Vieira Filho (luiz@altoriopreto.com.br) mandou esta substancial contribuição: um completo artigo que ele escreveu sobre RAID nivel 1 via software em Linux. A versão original está no site da Alto Rio Preto Informática empresa em que ele trabalha, e que disponibiliza uma série de outros artigos originais para a consulta pelos interessados.
Veja o texto dele logo abaixo.
Raid nivel 1 via software em sistemas Linux.
Por Luiz
Cassetari Vieira Filho (luiz@altoriopreto.com.br)
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):Usando o fdisk, crie uma nova partição com o comando 'n'. No nosso caso, todo o HD será usado como partição raid, por isso foi criada uma partição ocupando todo o HD. O segundo passo é passar a identidade do HD para RAID.
Criando uma partição
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):Usando o comando 't' do fdisk, a identificação da partição pode ser alterada. O código da partição raid no linux é 'fd'. Fazendo essas alterações, saia do fdisk com o comando 'w'. Repita isso com o segundo HD.
Alterando a identificação da partição
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 O arquivo /etc/raidtabraid-level é o nível do raid.
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]#Se a saída foi pelo menos parecida com essa, parabéns ;) Você agora deve estar vendo a luzinha do HD piscando como louca. Os HDs estão sendo sincronizados. Se você quiser acompanhar esse processo, olhe o arquivo /proc/mdstat.
Criando o array propriamente dito
[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:Uma dica legal, é usar um script como esse e ficar olhando o sistema trabalhar ;D[root@arp proc]#
Array raid nível 1 sendo criado.
[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]#Após a partição formatada, é só colocar ela no fstab e correr pro abraço.
Formatando o device raid
[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]#
Tudo funcionando :D
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]# Criando arquivo cheio de zeros...Agora pegue uma marreta de 10 kgs, e bata levemente em cima de um dos HDs do array raid, até que se forme um pequeno buraco de uns 15 cm. Se você (ou sua empresa) for como eu e não querer perder permanentemente um dos HDs, apenas retire o cabo de um deles. Se você não quer correr risco algum, desligue o computador, desconecte o cabo, e re-ligue o computador. Se você desligar o HD no quente, normalmente ele irá travar a partição. Isso é completamente esperado, por ser uma solução via software. Ao reiniciar o computador, o sistema irá ler o arquivo /etc/raidtab, e irá verificar os HDs. Como um HD não estará on-line, o raid irá ser iniciado usando apenas um HD. E você não perdeu nenhum dado ;D
[root@arp proc]# cat mdstat Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 hdc1[0] 6297344 blocks [2/1] [U_] unused devices:Será que não perdemos nenhum dado mesmo?[root@arp proc]# /proc/mdstat com um HD morto.
[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]# Verificando checksumO checksum é identico! Nós realmente não perdemos nenhum dado :D Agora vamos digamos que você comprou um HD novo, e quer colocar ele no lugar do HD que você marreteou (ou só tirou o cabo). Em primeiro lugar, crie as partições no HD novo como falado anteriormente. Depois use o comando raidhotadd.
[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:Pronto! Agora estamos reconstruindo o array. Para acompanhar o processo, olhe o arquivo /proc/mdstat. Os dados estão sendo copiados de um HD para outro. E você pode usar a partição normalmente enquanto as partições estão sendo reconstruídas, apenas com uma pequena perca de desempenho ;)[root@arp root]# Reconstruindo o array
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
» Postado por: Humberto Junior em junho 17, 2003 12:15 PM, 200.149.153:
BOM DIA
Luiz Cassetari Vieira Filho,
Estou tentando fazer o Espelhamneto RAID 1 com dois HDs de 40 GB e ate agora
so consegui isso:
------ arquivo /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hda1[0]
136448 blocks [2/1] [U_]
unused devices:
------- arquivo raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hda1
raid-disk 0
device /dev/hdc1
raid-disk 1
failed-disk 1
----- meus HDs
[root@servidor /root]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 37G 11G 24G 31% /
/dev/hdb2 36G 33M 33G 1% /mnt/mirror
----- detalhes dos HDs
[root@servidor /root]# fdisk -l
Disco /dev/hda: 255 cabeças, 63 setores, 4870 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot Início Fim Blocos Id Sistema
/dev/hda1 1 17 136521 82 Linux swap
/dev/hda2 18 4870 38981722+ 83 Linux
Disco /dev/hdb: 255 cabeças, 63 setores, 4870 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot Início Fim Blocos Id Sistema
/dev/hdb1 * 1 129 1036161 82 Linux swap
/dev/hdb2 130 4870 38082082+ 83 Linux
No livro esta escrito que hdbx e para dsico sobresalentes, mas so que e o meu
HD de Espelho...........................onde estou errando para que o arquivo MDSTAT
fique certo mostrando hda2 principal e o espelho no hdb2 (mirroring). Tenho que parcionar e formatar denovo para hdc ou hdd para q funcione, mas o HD principal e o hda....como faço agora para resolver meu problema.
desde ja agradeço.
» Postado por: cassiano em setembro 23, 2003 07:41 PM, 200.167.84.:
olã blz meu nome ~e cassiano sou de piraju-sp e estou procurando sobre raid e acho que vc pode me ajudar o professor pediu assim
o que e raid ..
como funciona ..
ou seja algumas coisas principais sobre raid vc me retorna blz ..... falow t+ .......valew.
» Postado por: Rodrigo de Oliveira em outubro 22, 2003 08:53 AM, 200.161.70.:
E ae galera, blz
A empresa adquiriu um IBM x235 com 4 hd´s, gostaria de saber se alguem saber onde posso encontrar instalacao em RAID 5.
desde jah agradeço.
Rodrigo
» Postado por: Dechen em novembro 13, 2003 07:51 AM, 200.158.180:
Outra maneira de fazer é usando dd ....
crie as partições e depois
dd if=/dev/hda of=/dev/hdc
para quem precisa apenas criar o espelho
» Postado por: Pedro H. em janeiro 27, 2004 11:12 AM, 200.206.26.:
Alguem ai tem um script que fica olhando se algum HD caiu, e manda um email avisando?
Obrigado.
» Postado por: Weslley em março 23, 2004 04:17 PM, 200.165.143:
Aê galera, estou querendo saber se existe alguma incompatibilidade com o uso de RAID no red hat 7.1 com o kernel 2.4.2.
Veleu!!!!!
» Postado por: Daniel Bastos em março 28, 2004 09:33 AM, 200.164.136:
Caros,
Eu já instalei o meu Linux normalmente, criando as partições através do instalador do Conectiva. Após estar tudo funcionando, me foi solicitado que fizesse o espelhamento dos HD´s (RAID 1). E Agora ? Terei que formatar os meus hd´s novamente ou posso mudar as partição existente do meu hd sem ter que apagar tudo e reconfigurar tudo novamente. Bastando apenas instalar o novo hd e fazer o RAID, ou seja, "RAID-1 on fly".
Grato,
Daniel Bastos
Viper Solutions
85.226.1306
» Postado por: walter em maio 14, 2004 12:08 PM, 200.184.29.:
BOm dia,
Gostaria de Saber como faco pra fazer um RAid no linux 9 tenho 2 HDS e quero que eles viram um so
um HD de 80 gb e 1 de 160 virarem um de 240 como posso fazer isto e possilvel
obrigado
walter
waltterm@pop.com.br
waltterm@hotmail.com
» Postado por: tiago em junho 12, 2004 06:54 PM, 200.191.212:
eu queria saber o que é ''raid" e para
que ele serve.
» Postado por: Buy Amoxicillin em outubro 5, 2004 10:58 AM, 67.19.91.50:
Information on Amoxicillin online.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.