Como configurar o RAID de software para um servidor de arquivos simples no Ubuntu
Você precisa de um servidor de arquivos barato que seja fácil de configurar, “sólido” e confiável com o Email Alerting? irá mostrar-lhe como usar o Ubuntu, software RAID e SaMBa para realizar apenas isso.
visão global
Apesar do recente burburinho para mover tudo para a nuvem “todo poderoso”, às vezes você pode não querer suas informações no servidor de outra pessoa ou inviabilizar o download dos volumes de dados que você precisa da Internet toda vez (por exemplo, implantação de imagem ). Portanto, antes de esclarecer um lugar no seu orçamento para uma solução de armazenamento, considere uma configuração que é gratuita com o Linux.
Com isso dito, ir barato / livre não significa "jogar com cautela ao vento", e para o efeito, vamos notar pontos para estar ciente de configurações, que devem ser definidas no lugar, além de usar o software RAID, para alcançar o preço máximo para relação de confiabilidade.
Imagem de Filomena Scalise
Sobre o RAID de software
Como o nome indica, esta é uma configuração RAID (Redundant Array of Inexpensive Disks) que é feita completamente em software, em vez de usar uma placa de hardware dedicada. A principal vantagem de tal coisa é o custo, já que este cartão dedicado é um prêmio adicional à configuração básica do sistema. As principais desvantagens são basicamente desempenho e alguma confiabilidade, pois uma placa geralmente vem com sua própria RAM + CPU para executar os cálculos necessários para a matemática de redundância, cache de dados para maior desempenho e a bateria de backup opcional que mantém operações não escritas no cache até o poder foi restaurado em caso de falta de energia.
Com uma configuração RAID por software, você sacrifica parte do desempenho da CPU do sistema para reduzir o custo total do sistema; no entanto, com as CPUs atuais, a sobrecarga é relativamente insignificante (especialmente se você dedicar esse servidor principalmente a ser um “servidor de arquivos”). Quanto ao desempenho do disco, há uma penalidade ... no entanto, eu nunca encontrei um gargalo do subsistema de disco do servidor para observar como ele é profundo. O Tom's Hardware Guide “O Tom's vai para o RAID5” é um artigo antigo mas exaustivo sobre o assunto, que eu pessoalmente uso como referência, mas levo os benchmarks com um pingo de sal enquanto fala sobre a implementação do software RAID no Windows todo o resto, tenho certeza que o Linux é muito melhor: P).
Pré-requisitos
- Paciência jovem, esta é uma leitura longa.
- Supõe-se que você saiba o que é RAID e para que é usado.
- Este guia foi escrito usando o Ubuntu server9.10 x64, portanto é assumido que você tem um sistema baseado em Debian para trabalhar também.
- Você vai me ver usar o VIM como o programa de edição, isso é só porque eu estou acostumado com isso ... você pode usar qualquer outro editor que você gostaria.
- O sistema Ubuntu que usei para escrever este guia foi instalado em um disco-chave. Isso permitiu que eu usasse sda1 como parte da matriz RAID, portanto, ajuste de acordo com sua configuração.
- Dependendo do tipo de RAID que você deseja criar, você precisará de pelo menos dois discos em seu sistema e, neste guia, usaremos 6 unidades.
Escolhendo os discos que fazem o array
O primeiro passo para evitar uma armadilha é saber da sua existência (Thufir Hawat de Dune).
Escolhendo os discos é um passo vital que não deve ser tomada de ânimo leve, e você seria sábio para capitalizar em sua experiência de verdade e ouvir este aviso:
Faz NÃO use drives de "grau de consumidor" para criar seu array, use drives "server grade"!!!!!!
Agora eu sei o que você está pensando, nós não dissemos que vamos continuar barato? e sim nós fizemos, mas, este é exatamente um dos lugares onde isso é imprudente e deve ser evitado. Apesar de seu preço atraente, os discos rígidos de grau de consumo não são projetados para serem usados em um tipo de uso 24 horas por dia, 7 dias por semana. Confie em mim, sinceramente você já tentou isso para você. Pelo menos quatro unidades de classe de consumidor nos 3 servidores que eu configurei como este (devido a restrições orçamentárias) falharam após cerca de 1,5 a 1,8 anos do dia de lançamento inicial do servidor. Enquanto não houve perda de dados, porque o RAID fez o seu trabalho bem e sobreviveu… momentos como este encurtam a expectativa de vida do administrador de sistema, para não mencionar o tempo de inatividade da empresa para a manutenção do servidor (algo que pode acabar custando mais do que os drives de maior qualidade).
Alguns podem dizer que não há diferença na taxa de falhas entre os dois tipos. Isso pode ser verdade, no entanto, apesar dessas afirmações, as unidades de nível de servidor ainda têm um nível mais alto de restrições SMART e controle de qualidade (como pode ser observado pelo fato de não serem lançadas no mercado assim que as unidades de consumo estiverem) então eu ainda recomendo que você desembolsar o extra para a atualização.
Escolhendo o nível de RAID.
Enquanto eu não vou entrar em todas as opções disponíveis (isto está muito bem documentado na entrada da wikipedia do RAID), eu sinto que é digno de nota dizer que você deve sempre optar por pelo menos RAID 6 ou até mais ( nós estaremos usando Linux RAID10). Isso ocorre porque, quando um disco falha, há uma chance maior de uma falha de disco vizinha e, em seguida, há uma falha de “dois discos” em suas mãos. Além disso, se você for usar discos grandes, como discos maiores têm uma densidade de dados maior na superfície do prato, a chance de falha é maior. Discos IMHO de 2T e além sempre vai cair nesta categoria, então esteja ciente.
Vamos rachar
Discos de particionamento
Enquanto no Linux / GNU, poderíamos usar o dispositivo de bloco inteiro para as necessidades de armazenamento, usaremos partições porque facilita o uso de ferramentas de resgate de disco caso o sistema tenha ficado insensível. Estamos usando o programa "fdisk" aqui, mas se você for usar discos maiores que 2T, precisará usar um programa de particionamento que suporte particionamento GPT como parted.
sudo fdisk / dev / sdb
Nota: Eu observei que é possível fazer a matriz sem alterar o tipo de partição, mas porque esta é a maneira descrita em toda a rede eu vou seguir o exemplo (novamente ao usar o dispositivo de bloco inteiro isso é desnecessário).
Uma vez no fdisk, as teclas são:
n; para uma nova partição
entrar
p; para uma partição primária
entrar
1; número de partição
entrar ; aceite o padrão
entrar ; aceite o padrão
t; para mudar o tipo
fd; define o tipo como “detecção automática de ataque do Linux” (83h)
W ; gravar alterações no disco e sair
Enxaguar e repetir para todos os discos que farão parte do array.
Criando um array RAID10 do Linux
A vantagem de usar “Linux raid10 ”é que ele sabe como tirar vantagem de um número não uniforme de discos para aumentar ainda mais o desempenho e a resiliência do RAID10, além do fato de que, ao usá-lo, o array“ 10 ”pode ser criado em um único degrau.
Crie a matriz dos discos que preparamos na última etapa, emitindo:
sudo mdadm --criar / dev / md0 --chunk = 256 --level = 10 -p f2 --raid-devices = 5 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1 / dev / sde1 - -verbose
Nota: Isso tudo é apenas uma linha, apesar do fato de que a representação a divide em duas.
Vamos quebrar os parâmetros abaixo:
- “-Chunk = 256” - O tamanho dos bytes em que as faixas de ataque estão quebradas e esse tamanho é recomendado para discos novos / grandes (as unidades 2T usadas para fazer este guia foram, sem dúvida, nessa categoria).
- "-Level = 10" - usa o Linux raid10 (se um raid tradicional é necessário, por que motivo você teria que criar dois arrays e se juntar a eles).
- “-P f2” - Usa o plano de rotação “distante” veja a nota abaixo para mais informações e “2” informa que o array manterá duas cópias dos dados.
Nota: Usamos o plano “far” porque isso faz com que o layout de dados físicos nos discos NÃO seja o mesmo. Isso ajuda a superar a situação em que o hardware de um dos drives falha devido a uma falha de fabricação (e não pense "isso não acontecerá comigo" como o seu realmente fez). Devido ao fato de que os dois discos são da mesma marca e modelo, foram usados da mesma maneira e tradicionalmente mantêm os dados no mesmo local físico ... Existe o risco de que a unidade que detém a cópia dos dados falhe também ou está próximo e não fornecerá a resiliência necessária até que um disco substituto chegue. O plano “distante” faz a distribuição de dados para um local físico completamente diferente nas unidades de cópia, além de usar discos que não são próximos uns dos outros dentro do gabinete do computador. Mais informações podem ser encontradas aqui e nos links abaixo.
Uma vez que o array tenha sido criado, ele iniciará seu processo de sincronização. Enquanto você pode querer esperar pelo bem das tradições (pois isso pode demorar um pouco), você pode começar a usar o array imediatamente.
O progresso pode ser observado usando:
relógio -d cat / proc / mdstat
Crie o arquivo de configuração mdadm.conf
Embora tenha sido provado que o Ubuntu simplesmente sabe varrer e ativar o array automaticamente na inicialização, por causa da integridade e cortesia para o próximo sysadmin, criaremos o arquivo. Seu sistema não cria automaticamente o arquivo e tentando se lembrar de todos os componentes / partições do seu conjunto RAID, é uma cintura da sanidade do administrador do sistema. Essas informações podem e devem ser mantidas no arquivo mdadm.conf. A formatação pode ser complicada, mas felizmente a saída do comando mdadm -detail -scan -verbose fornece a você.
Nota: Foi dito que: “A maioria das distribuições espera o arquivo mdadm.conf em / etc /, não em / etc / mdadm. Eu acredito que este é um "ubuntu-ism" para tê-lo como /etc/mdadm/mdadm.conf ". Devido ao fato de que nós está usando o Ubuntu aqui, vamos apenas ir com ele.
sudo mdadm --detail --scan --verbose> /etc/mdadm/mdadm.conf
IMPORTANTE! você precisa remover um "0" do arquivo recém-criado porque a sintaxe resultante do comando acima não está completamente correta (o GNU / Linux ainda não é um sistema operacional).
Se você quiser ver o problema que esta configuração errada causa, você podedigitalizar ” comando neste momento, antes de fazer o ajuste:
mdadm --examine --scan
Para superar isso, edite o arquivo /etc/mdadm/mdadm.conf e mude:
metadados = 00,90
Ler:
metadados = 0,90
Executando o mdadm -examine -scan comando agora deve retornar sem um erro.
Configuração do sistema de arquivos no array
Eu usei o ext4 para este exemplo, porque para mim ele se baseou apenas na familiaridade do sistema de arquivos ext3 que veio antes dele, enquanto prometia melhor desempenho e recursos.
Eu sugiro tomar o tempo para investigar o sistema de arquivos que melhor atende às suas necessidades e um bom começo para isso é o nosso “Qual sistema de arquivos Linux você deve escolher?”.
sudo mkfs.ext4 / dev / md0
Nota: Neste caso eu não participo o array resultante porque, eu simplesmente não precisei dele no momento, já que o solicitante solicitou especificamente pelo menos 3.5T de espaço contínuo. Com isso dito, se eu quisesse criar partições, eu teria que usar um utilitário de particionamento GPT como "parted".
Montagem
Crie o ponto de montagem:
sudo mkdir / media / raid10
Nota: Isso pode ser qualquer local, o acima é apenas um exemplo.
Porque estamos lidando com um “dispositivo montado” não use o UUID do sistema de arquivos que está no dispositivo para montagem (como recomendado para outros tipos de dispositivos em nosso guia “o que é o linux fstab e como ele funciona”), pois o sistema pode ver parte do sistema de arquivos em um disco individual e tente incorretamente monte-o diretamente. Para superar isso, queremos explicitamente esperar que o dispositivo seja "montado" antes de tentarmos montá-lo, e usaremos o nome da matriz montada ("md") dentro fstab para realizar isso.
Edite o arquivo fstab:
sudo vim / etc / fstab
E adicione a esta linha:
Padrões de / dev / md0 / media / raid10 / ext4 1 2
Nota: Se você mudar o local de montagem ou sistema de arquivos do exemplo, você terá que ajustar o acima de acordo.
Use mount com o parâmetro automático (-a) para simular uma inicialização do sistema, para que você saiba que a configuração está funcionando corretamente e que o dispositivo RAID será montado automaticamente quando o sistema for reiniciado:
sudo mount -a
Agora você deve conseguir ver o array montado com o comando “mount” sem parâmetros.
Alertas de email para a matriz RAID
Ao contrário dos arrays RAID de hardware, com um array de software não há nenhum controlador que comece a apitar para avisá-lo quando algo deu errado. Portanto, os alertas de e-mail serão a única maneira de saber se algo aconteceu com um ou mais discos na matriz e, assim, torná-lo passo mais importante.
Siga o guia "Como configurar alertas por e-mail no Linux usando o Gmail ou o SMTP" e quando terminar, volte aqui para executar as etapas específicas do RAID.
Confirme se o mdadm pode enviar e-mail
O comando abaixo, dirá ao mdadm para disparar apenas um e-mail e fechar.
sudo mdadm --monitor --scan --test --oneshot
Se bem-sucedido, você deve receber um e-mail, detalhando a condição do array.
Defina a configuração do mdadm para enviar um e-mail na inicialização
Embora não seja uma necessidade absoluta, é bom obter uma atualização de tempos em tempos da máquina para nos informar que a capacidade de e-mail ainda está funcionando e da condição da matriz. seu provavelmente não vai ser sobrecarregado por e-mails como esta configuração só afeta startups (que em servidores não deve haver muitos).
Edite o arquivo de configuração do mdadm:
sudo vim / etc / default / mdadm
Adicione o -teste parâmetro para o DAEMON_OPTIONS seção de modo que ficaria assim:
DAEMON_OPTIONS = "- syslog --test"
Você pode reiniciar a máquina apenas para ter certeza de que está "no circuito", mas não é uma obrigação.
Configuração do Samba
A instalação do SaMBa em um servidor Linux permite que ele funcione como um servidor de arquivos do Windows. Assim, para obter os dados que hospedamos no servidor Linux disponível para os clientes Windows, instalaremos e configuraremos o SaMBa.
É engraçado notar que o nome do pacote do SaMBa é um trocadilho com o protocolo da Microsoft usado para compartilhamento de arquivos chamado SMB (Service Message Block).
Neste guia, o servidor é usado para fins de teste, portanto, permitiremos o acesso ao seu compartilhamento sem exigindo uma senha, você pode querer aprofundar um pouco mais sobre como configurar permissões depois que a configuração estiver concluída.
Também é recomendável que você crie um usuário não privilegiado para ser o proprietário dos arquivos. Neste exemplo, usamos o usuário "geek" que criamos para essa tarefa. Explicações sobre como criar um usuário e gerenciar propriedade e permissões podem ser encontradas em nossos guias “Criar um novo usuário no Ubuntu Server 9.10” e “Guia do iniciante para gerenciar usuários e grupos no Linux”.
Instale o Samba:
aptitude instalar samba
Edite o arquivo de configuração do samba:
sudo vim /etc/samba/smb.conf
Adicione um compartilhamento chamado "geral" que concederá acesso ao ponto de montagem "/ media / raid10 / general" anexando o abaixo ao arquivo.
[geral]
caminho = / media / raid10 / general
força usuário = geek
grupo de força = geek
somente leitura = não
criar máscara = 0777
máscara de diretório = 0777
somente convidado = Sim
convidado ok = sim
As configurações acima tornam o compartilhamento endereçável sem uma senha para qualquer pessoa e torna o proprietário padrão dos arquivos o usuário "geek".
Para sua referência, este arquivo smb.conf foi retirado de um servidor em funcionamento.
Reinicie o serviço samba para que as configurações tenham efeito:
sudo /etc/init.d/samba restart
Uma vez feito você pode usar o testparm comando para ver as configurações aplicadas ao servidor samba.
é isso, o servidor agora deve estar acessível em qualquer caixa do Windows usando:
\ server-namegeneral
Solução de problemas
Quando você precisa solucionar um problema ou um disco falhou em uma matriz, sugiro referir-se à folha de dicas do mdadm (é o que eu faço…).
Em geral, você deve se lembrar que, quando um disco falha, é preciso “removê-lo” da matriz, desligar a máquina, substituir a unidade com falha por uma substituição e depois “adicionar” a nova unidade à matriz depois de criar o disco apropriado. layout (partições) sobre ele, se necessário.
Uma vez feito isso, você pode querer certificar-se de que a matriz está sendo reconstruída e observar o progresso com:
relógio -d cat / proc / mdstat
Boa sorte! :)
Referências:
folha de fraude do mdadm
Níveis de RAID divididos
Linux RAID10 explicou
Página do manual do comando mdadm
Página do manual do arquivo de configuração mdadm
Limitações de partição explicadas
Usando o software RAID não vai custar muito ... Apenas a sua voz ;-)