Criando servidor de arquivos GNU/Linux com RAID virtual e DFS em rede Windows

O que descrevo aqui, são os passos que utilizei para criar um servidor de arquivos de baixo custo com RAID1 (mirror) virtual (via software) e, de quebra, melhorar a estrutura de minha rede, utilizando de uma abstração de acesso aos dados (DFS - Distribution File System). Divirtam-se!

[ Hits: 38.235 ]

Por: Tecoberg em 10/02/2014


Dicas



Prevenindo erro de escrita no RAID

Com uma falha no fornecimento de energia, existe uma pequena possibilidade de haver perda dos dados mais recentes (em cache), em especial em sistemas RAID. Nos casos mais graves, podem ocorrer uma corrupção do sistema de arquivos.

Vale ressaltar, que o XFS possui seu próprio sistema de Write Back. Caso você seja paranoico (como eu), desabilite o Write Back para cada um dos HDs, com os seguintes comandos:

# hdparm -W0 /dev/sdX
# hdparm -W0 /dev/sdZ


Atenção ao W. Ele tem que estar em maiúsculo!

Se for mostrado algum erro, é porque o seu HD não suporta o comando e nada será alterado, nem nenhum dado perdido.

Verifique se está tudo funcionando, com o comando:

# hdparm -I /dev/sdX

Para que esta configuração esteja ativa no próximo boot, adicione estas linhas no final do arquivo /etc/rc.local, logo antes do comando exit 0 (se ele existir):

hdparm -W0 /dev/sdX
hdparm -W0 /dev/sdZ

Manutenção do RAID virtual

Removendo disco de um array:

# mdadm --fail /dev/md0 /dev/sdX1 --remove /dev/sdX1

Adicionando um disco ao array:

# mdadm --add /dev/md0 /dev/sdY1

Verificando o status do array:

# mdadm --detail /dev/md0
Ou:
# cat /proc/mdstat

Removendo um array:

# mdadm --stop /dev/md0
# mdadm --remove /dev/md0


"Zerando" o HD para formatação NTFS

Uma boa prática é "zerar" completamente o HD, para depois formatá-lo como NTFS, assim, siga os seguintes passos para cada um deles (/dev/sdX e /dev/sdZ):

# fdisk /dev/sdX

Dicas:
  • Clique m, para obter uma lista de comandos possíveis.
  • Clique p, para listar as partições em sdX.

Comando (m para ajuda): d
Partição selecionada 1

Comando (m para ajuda): n Comando - ação
    e    estendida
    p    partição primaria (1-4)

p
Numero da partição (1-4): 1
Primeiro cilindro (1-121601, padrão 1):
Usando valor padrão 1
Last cilindro, +cilindros or +size{K,M,G} (1-121601, padrão 121601):
Usando valor padrão 121601

Comando (m para ajuda): t

Partição selecionada 1
Código hexadecimal (digite L para listar os códigos): 7
O tipo da partição 1 foi alterado para 7 (HPFS ou NTFS)

Comando (m para ajuda): w

# mkntfs /dev/sdX1

Outros comandos interessantes para o gerenciamento de partições NTFS em GNU/Linux são:

Altera o nome da partição:

# ntfslabel /dev/sdX1 NovoNome

Para corrigir erros na partição, é necessária a instalação do pacote ntfs-3g, que inclusive, já contém os comandos do pacote ntfsprogs:

# apt-get install ntfs-3g
# ntfsfix /dev/sdX1


Pode ser necessário garantir ao grupo do administrador do domínio acesso de administrador dos HDs do servidor. Para isso, execute o seguinte comando no servidor GNU/Linux:

# net rpc rights grant 'nome da rede Domain\Domain Admins' SeDiskOperatorPrivilege -U <nome do administrador do domínio>

Opções de configuração do XFS no fstab

Esta foi uma contribuição do Galactus neste tópico do Ubuntu Fórum:

noatime :: os tempos de acesso dos dados não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos dados for importante para você não use essa opção.

nodiratime :: os tempos de acesso dos diretórios não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos diretórios for importante para você não use essa opção.

nobarrier :: essa opção faz com que a verificação dos dados entre o cache do disco e o buffer da memória não sejam mais feitas. Com essa opção ativa você acelera a gravação dos dados mas existe o risco de perda de dados em uma queda de energia ou travamento do sistema, aquilo que estiver aberto pode ser perdido.

logbufs :: diz o número de buffers que devem ser guardados na memória, esse número varia de 2 a 8. Nos kerneis mais recentes o 8 já é o padrão. Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM. Use 8 e seja feliz!

logbsize :: especifica o tamanho de cada buffer na memória. Você pode especificar o tamanho em bytes ou kilobytes, o padrão é 32k nas versões mais recentes do kernel. Você pode aumentar esse valor para 64k, 128k até o máximo de 256k. Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM. Use 256k e seja feliz!

allocsize :: determina o tamanho final da pré-alocação do buffer de I/O. Seu tamanho varia de 64Kib a 1Gib. Essa opção ajuda a diminuir a fragmentação do disco e aumenta a velocidade de transferência de arquivos grandes. No caso do disco rígido servir apenas para arquivos grandes como imagens ISO, use 512mb, no geral 64mb está de bom tamanho. Você não aumenta o risco de perda de dados com essa opção. Na prática notei que quanto maior esse número, melhor a taxa de transferência, mas também o sistema fica mais "preso" a essa transferência, então não abuse.

delaylog :: atrasa a gravação das informações no journal do XFS o máximo possível. São parâmetros internos do XFS que determinarão quando as informações serão salvas. Essa opção acelera muito o XFS mas aumenta o risco de perda de dados no caso de uma queda de energia ou travamento do sistema. Note que você não está desativando o Journal, apenas atrasando a gravação dos dados nele. A opção delaylog não funciona em versões antigas do XFS ou do kernel Linux.

osynciosync :: essa aqui é complicada, mas resumindo, essa opção tem haver com uma espécie de garantia de que as gravações dos dados e metadados ocorram em sincronia com o cache do disco. Entendeu? Eu também não! Para piorar ainda mais, dizem que essa opção é obsoleta e não faz mais "efeito". Na prática o que notei é que o XFS pode ficar mais ágil com essa opção no fstab do que sem ela, dependendo da carga no sistema! Para quem usa kerneis mais novos, talvez o melhor seja não usar essa opção. Faça os seus testes e observe se ela ajuda mais que prejudica seu sistema. Ah sim, ela não é indicada para quem vai ter grandes bancos de dados no disco rígido.

inode64 :: indica que o XFS pode criar inodes em qualquer lugar do sistema de arquivos, essa opção pode criar problemas em aplicações de backup que não podem lidar com grande número de inodes. Essa opção é sempre indicada em grandes servidores de arquivos. Na prática achei que aumenta a latência em geral para o desktop. Também notei o seguinte, ou você usa o inode64 ou usa o allocsize para melhor desempenho. Os dois juntos atrasaram o tempo de resposta do desktop! Eu prefiro o allocsize para desktop e o inode64 para servidores de arquivos. Faça os seus testes e verifique se ele é bom pra você.

Desfragmentação de partições XFS

Mais uma contribuição do Galactus, disponível neste tópido:

Esta é uma grande vantagem, frente a outros sistemas de arquivos que sua distro pode usar. O XFS é capaz de ser desfragmentado com suas partições montadas e ativas, sem risco de perda de dados.

Contudo, eu sugiro que o ideal seja fazer isso com todos os programas e arquivos fechados. O motivo é simples, se for detectado que um arquivo está em uso, este arquivo em particular, não é desfragmentado.

Quanto mais potente for o seu processador, mais rápida será a sua desfragmentação. A primeira desfragmentação/reorganização é bastante demorada. O comando para desfragmentar é o xfs_fsr e deve ser dado como root. Ele vai reorganizar o sistema de arquivos, um arquivo por vez, procurando compactar e melhorar a disposição das extensões dos arquivos junto aos blocos e inodes. Ele também desfragmenta os 10% de arquivos mais fragmentados por vez que é executado.

Como root, você pode fazer:

# xfs_fsr -t 8000 /dev/sdxy -v

Onde:
  • O -t, é o tempo máximo que ele pode levar para desfragmentar/reorganizar em segundos. Se não colocar o -t, o valor padrão é 7200 ou 2 horas.
  • O -v, é o modo verbose, ou seja, ele vai te mostrar o que está fazendo, muito bom para saber se ele pulou algum arquivo que estava aberto.

Você também pode saber o quão desfragmentado o seu disco rígido está, antes de executar uma desfragmentação. O comando é:

# xfs_db -c frag -r /dev/sdxy

Exemplo da saída do comando:

# xfs_db -c frag -r /dev/sda5
  
  actual 232989, ideal 232230, fragmentation factor 0.33%
   
    
Eu recomendo que você faça uso do xfs_fsr, todas as vezes que uma quantidade grande de programas forem instalados ou removidos, assim, como se os seus dados forem inseridos, alterados ou deletados do disco.

Eu não espero a fragmentação aumentar, como ele reorganiza os inodes, o sistema fica sempre ágil com a execução frequente do xfs_fsr.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. RAID
   3. Árvore de diretórios / Acesso remoto / Sincronizando horário
   4. Associando o servidor / Liberando login de usuários / Active Directory
   5. Permissão de usuários / DFS / SSH / Firewall
   6. Dicas
   7. Fontes de pesquisa
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Mouse para destros e canhotos

Configurando o OpenVPN para múltiplos clientes

Configurando VMWARE SERVER no Fedora 7

Pós-instalação do Arch Linux

Drivers de impressão para clientes com Windows 7/XP

  
Comentários
[1] Comentário enviado por galactus em 10/02/2014 - 12:21h

Parabéns pelo artigo Menashe e muito obrigado pelos créditos dos artigos no Fórum do Ubuntu. Fico feliz em saber que os tutoriais estão ajudando. Só não imaginava que seria tão longe. :)

Em casa eu tenho um servidor de arquivos com XFS também, só não fiz RAID via software. Na verdade já estou precisando de um storage. Estou sendo um devorador de dados. Heheheheheh


[2] Comentário enviado por junior em 10/02/2014 - 14:08h

Excelente artigo.
+ favorito

[3] Comentário enviado por betoberg em 13/02/2014 - 12:56h

Show de bola.
Muito bem feito o artigo. Vou testar.
Parabéns!

[4] Comentário enviado por DouglasMenger em 09/08/2014 - 09:59h

Tecoberg,

Quero agradecer por criar este artigo, eu estava tentando alguns dias montar um raid via software e com sua ajuda conseguir fazer isso de forma rápida e pratica.

Muito obrigado.

[5] Comentário enviado por tecoberg em 21/01/2015 - 06:37h

Caros amigos

Na versão 14.4 do Ubuntu houve algumas alterações nas instalações dos pacotes winbind e kerberos. Abaixo segue as linhas de comandos respectivas:

# apt-get install samba winbind libpam-winbind libnss-winbind

# apt-get install krb5-user krb5-config

Abraços

Tecoberg

[6] Comentário enviado por invernosantigos em 18/05/2015 - 04:14h


Eita !!! Legal seu tutorial. O tipo de contribuição q tds precisávamos ( e msmo qm n precisa, qr E DEVE saber ! ). Mas... houve algumas falhas, prática e teóricas : Vc n especifica se o disco virtual é automaticamente criado no processo, ou se é preciso criar uma partição com antecedência -- Do jeito q está, só os já meio entendidos escaparão dessa dúvida ( ou erro ). Segudo : vc n especifica o q fazer se algo n sair exatamente como o descrito. No meu caso, o primeiro passo, ao invés de :

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sdb1[0] sdc1[1]
488253248 blocks super 1.2 [2/2] [UU]

saiu :

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>

...e aí, sem saber o q fazer, parei por aí mesmo... Como corrijo, ou n saiu nd errado e era só continuar em frente ? E como corrijo e RETOMO a instalação, já q parei ? O meu sistema d arquivos é btrfs ( Escolhi este p poder fazer scrubing data. Há qm diga q btrfs ainda n é estável, mas essas opniões eram de 2 anos atrás ! ), pensei em fazer o segundo disco com ext4 msmo, já q vc disse -- ou assim entendi -- q n precisava ser o msmo sistema d arquivos p ambos... -- Eu poderia criar uma partição "manualmente" com o Gparted ou coisa q valha ( e assim poder optar por qualquer sistema d arquivos d minha escolha ), e torná-lo espelho depois ? Dúvidas, dúvidas e dúvidas, mas dúvidas q valhem à pena esclarecer ! Vc poderia me responder tds elas ??


[7] Comentário enviado por Tecoberg em 25/05/2015 - 04:59h

Quê bom que você gostou do artigo invernosantigos, entretanto ele foi escrito para pessoas que tenham um conhecimento além do básico em Linux por sua clara complexidade.
Esta foi a solução que encontrei para resolver um problema que eu tinha e resolvi comparti-lha lá para que outros pudessem usá-la como base para resolver problemas semelhantes como você o fez.
Cada alteração dos passos descritos,sejam eles a escolha de um outro hardware, o Sistema Operacional ou até mesmo a versão dele etc, abre um leque de possibilidades de problemas que realmente exige investimento de tempo para pesquisas e testes que somente em "loco" é possível realizar.
Como consolo eu posso contar-lhe que eu investi semanas para a construção da solução descrita e na escrita deste artigo. Tempo este que lhe fora poupado. :)
Boa sorte com este seu desafio e não esqueça de contribuir com a comunidade postando a solução que encontrou para o seu problema.
grandes abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts