Post em Destaque

Diretoria nova no core team do FreeBSD

De 2 em 2 anos é eleito um novo core team do FreeBSD, vamos dizer que é a diretoria em questão com as maiores responsabilidades dentro do projeto. São responsáveis inclusive por aprovar novos commiters de src do sistema. O core team é eleito pelos próprios desenvolvedores do FreeBSD em votação....

Leia mais...

FreeBSD 10.2 – Sistema para Backup com Raiz em RAID 1 (mirror) e Dados em RAID 10 (mirror+stripe)

Postado por gondim | Categoria Dicas, FreeBSD, Software Livre, Tecnologia | Dia 03-02-2016

Tags:, , ,

5

Fazia um tempo que eu não postava um artigo mas recentemente fiz um Servidor de Backup e nele eu tinha apenas 4 HDs de 2TB cada. Queria aproveitar o espaço em disco e ao mesmo tempo fazer algo seguro. Não preciso dizer que Backup é algo extremamente sério e não podemos bobear com isso.

Nesse artigo vamos montar o sistema assim:

Partições do SO:

RAID 1:

/ – 50Gb

swap – 8Gb

RAID 10:

/dados – restante do espaço

Com o Raid 1 teremos o famoso mirror onde o sistema estará presente em todos os discos. Em caso de falhas os outros discos farão o trabalho de manter o sistema em pé. No Raid 10 teremos o mirror (RAID 1) para manter a segurança em caso de falhas e em cima do mirror, faremos um stripe (RAID 0) para aproveitar bem o espaço dos discos com performance aprimorada.  🙂

Para começarmos a brincadeira, tenha em mãos um CD ou pendrive com o instalador do FreeBSD 10.2-RELEASE.

Como o instalador do FreeBSD não possui suporte para criar os RAIDs durante a instalação, faremos no método manual. Observem a tela abaixo:

tela1

Nesse momento vamos para o shell fazer a nossa configuração das partições. As configurações abaixo fiz para a minha necessidade; sintam-se à vontade de alterá-las:

Temos 4 discos SATA III de 2Tb: ada0, ada1, ada2 e ada3

# gpart create -s gpt ada0

# gpart create -s gpt ada1

# gpart create -s gpt ada2

# gpart create -s gpt ada3

Criando as partições de boot nos discos:

# gpart add -s 128k -t freebsd-boot -l boot0 ada0
# gpart add -s 128k -t freebsd-boot -l boot1 ada1
# gpart add -s 128k -t freebsd-boot -l boot2 ada2
# gpart add -s 128k -t freebsd-boot -l boot3 ada3

Criando as partições de swap de 8Gb:

# gpart add -a 1m -s 8G -t freebsd-swap -l swap0 ada0
# gpart add -a 1m -s 8G -t freebsd-swap -l swap1 ada1
# gpart add -a 1m -s 8G -t freebsd-swap -l swap2 ada2
# gpart add -a 1m -s 8G -t freebsd-swap -l swap3 ada3

Vamos criar o raiz do SO que vai conter todo o Sistema com 50Gb:
# gpart add -a 1m -s 50G -t freebsd-ufs -l root0 ada0
# gpart add -a 1m -s 50G -t freebsd-ufs -l root1 ada1
# gpart add -a 1m -s 50G -t freebsd-ufs -l root2 ada2
# gpart add -a 1m -s 50G -t freebsd-ufs -l root3 ada3

Por último a partição que usaremos para armazenar os backups em RAID10:
# gpart add -a 1m -t freebsd-ufs -l dados0 ada0
# gpart add -a 1m -t freebsd-ufs -l dados1 ada1
# gpart add -a 1m -t freebsd-ufs -l dados2 ada2
# gpart add -a 1m -t freebsd-ufs -l dados3 ada3

Agora que já temos as partições, precisaremos gerar o bootcode nos discos:
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada2
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada3

# true > /dev/ada0
# true > /dev/ada1
# true > /dev/ada2
# true > /dev/ada3
Agora que terminamos de definir as partições passaremos para a criação dos mirrors:

Fazendo os mirrors que acomodarão o SO e swap:

# kldload geom_mirror
# gmirror label -h swap /dev/gpt/swap0 /dev/gpt/swap1 /dev/gpt/swap2 /dev/gpt/swap3
# gmirror label -h root /dev/gpt/root0 /dev/gpt/root1 /dev/gpt/root2 /dev/gpt/root3
Agora faremos os mirrors das partições Dados:
# gmirror label -h dados0 /dev/gpt/dados0 /dev/gpt/dados1
# gmirror label -h dados1 /dev/gpt/dados2 /dev/gpt/dados3

Acima criamos o RAID 1 com os 2 primeiros discos para tolerância à falhas.

Para confirmarmos que os mirrors estão OK:

# gmirror status

tela2

Agora precisamos criar o stripe e fechar o RAID 10:
# kldload geom_stripe
# gstripe label -h dados /dev/mirror/dados0 /dev/mirror/dados1

Nesse ponto teremos um device /dev/stripe/dados com aproximadamente 3.5Tb que usaremos pra armazenar nosso backup.  :)

# gstripe status

tela3
 Agora que criamos o RAID 1 e o RAID 10, formataremos eles com UFS:

# newfs -U -L root /dev/mirror/root
# newfs -U -L dados /dev/stripe/dados

Caso os discos sejam SSD, adicione o parâmetro -t conforme abaixo, para habilitar o suporte à TRIM:
# newfs -t -U -L root /dev/mirror/root
# newfs -t -U -L dados /dev/stripe/dados

Próximo passo montaremos o sistema de arquivos para continuarmos a instalação do sistema:

# mount /dev/mirror/root /mnt
# mkdir /mnt/backup
# mount /dev/stripe/dados /mnt/backup

Nesse momento sairemos do shell e retornaremos para a instalação do SO:

# exit

Instale o sistema normalmente até chegar na tela abaixo:

tela4


Nesse ponto volte para o shell onde criaremos o nosso fstab:

# vi /tmp/bsdinstall_etc/fstab

Adicione o seguinte conteúdo:

/dev/mirror/swap  none            swap    sw      0       0
/dev/mirror/root  /               ufs     rw      1       1
/dev/stripe/dados /backup         ufs     rw      1       1

# exit

Continue toda a instalação até a tela abaixo:

tela5

Confirme com Yes e novamente no shell faça a configuração abaixo:

# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf

Acima habilitamos a carga dos drivers senão o sistema não vai subir após o boot. :)

Vamos habilitar um report diário sobre o mirror e o stripe e ficarmos atentos se aparecer algum problema:

# echo 'daily_status_gmirror_enable="YES"' >> /etc/periodic.conf

# echo 'daily_status_gstripe_enable="YES"' >> /etc/periodic.conf

Basta agora sair com exit, reiniciar e partir para o abraço. rsrsrs

Espero que este post seja útil para todos.

Abrs e até a próxima.

Referência: https://www.ateamsystems.com/tech-blog/installing-freebsd-9-gmirror-gpt-partitions-raid-1/
Share Button

Comments (5)

Muito Bom, Gondim! ^^
Não entendi nada, mais sei que para quem manja desses paranauês, é uma mão na roda! 😀

Abraços.

Parabéns pelo tutorial.
Apenas uma dúvida.
Vc recomendaria o uso do ZFS ??? Tanto pela facilidade para a criação das raids quanto do ponto de vista da segurança do sistema de arquivos???

abs

Opa,

Depende do que você for usar. Porque ZFS consome muito recurso de memória. Se você tiver um hardware bom seria uma boa pedida sim.

Algumas observações
O Sistema de arquivos root pode ficar também sobre o raid10 além de ampliar a redundância do sistema há um ganho de performance durante a manutenção do sistema como compilação do kernel, world e de ports, contudo o modulo do geom_stripe e geom_mirror tem que ser carregados durante o primeiro estágio do bsdloader através das opções geom_stripe_load=”YES” e geom_mirror_load=”YES” setado no /boot/loader.conf.

Caso os HD tenham mais de 2.2Tb e utiliza-se UEFI junto com GPT recomendo a não particionar usando todo o espaço do HD, deixe os ultimos 32mb do disco sem uso pois é onde o GPT armazena a tabela de partições backup que em caso de corrompimento do GPT primário armazenado no inicio do disco permite recuperar.
Caso utilizem geom_eli ou geom_bde fica a mesma dica, não utilize todo o espaço da partição para criar, deixe pelo menos uns 32mb sem usar do slice pois o framework geom armazena os metadados de backup no final da partição para fins de recuperação.
Caso utilize o zfs o mesmo ainda não é 100% suportado sobre placa-mães com UEFI, é necessário setar no CMOS a compatibilidade com o legacy bios, as novas placas da Intel por exemplo são UEFI e o ZFS a partição /boot tem que estar em um storage utilizando UFS para conseguir dar boot no sistema.

Observações validadas e testadas até o a versão FreeBSD 10.2.

Opa Paulo,

Agradeço aí os comentários. Mesmo colocando no loader.conf o geom_stripe_load e o geom_mirror_load o sistema não boota. Depois faz uns testes aí e se você conseguir fazer tudo no raid10 compartilha aqui com a gente como que você fez. 🙂

Grande abraço,

Write a comment

*