Arch Linux Server: Como desmembrar os HDDs em uma configuração do BTRFS Raid5?

2

Esta é a minha primeira pergunta aqui; depois de uma extensa pesquisa, tive que procurar ajuda.

Eu construo um servidor doméstico baseado no Arch Linux. Basicamente, ele tem duas finalidades principais: executar um Plex Media Server e disponibilizar alguns compartilhamentos AFP para backups do Time Machine e organização de mídia remota. Tudo funciona bem e estou muito satisfeito com o desempenho. Além do Avahi, Netatalk e PMS, não há muitos processos em execução. Eu poderia deixar isso nisso, mas há uma pequena coisa me incomodando - gerenciamento de energia:

O que eu gosto de fazer é economizar um pouco de energia e dar descanso aos discos rígidos quando não estiver em uso. Há 8 discos WD Red 4TB em uma configuração Raid5 usando BTRFS como sistema de arquivos (dados e metadados são Raid5). Não há arquivos de sistema ou arquivos de log salvos na matriz de disco; estes estão em um SSD separado. Existem apenas dois compartilhamentos, media e timemachine . Portanto, nenhum processo relacionado ao sistema deve interromper o funcionamento dos discos.

O que eu fiz até agora:

hdparm

  • Veja se os discos podem girar usando a opção –y ✓
  • Veja se o APM é suportado - > os discos lidam com eles mesmos ✓

systemd

  • Escreva um pouco de serviço para configurar o HDD após o sistema ser inicializado ✓
  • Verifique se executado corretamente usando o comando de status ✓

Tudo fica bem para os discos girarem, mas eles não entrarão no modo de espera. Ao forçar todos os discos para o modo de espera e tentar ler um arquivo de um compartilhamento depois, os discos começam a funcionar como esperado, MAS o sistema congela e fica irresponsável…

Não sei o que causa esse comportamento: o BTRFS não é adequado para o modo de espera do HDD? O tempo de despertar demora muito, já que cada disco gira após o outro?

Meu objetivo é: eu quero colocar meus drives em standby após 2h e girá-los todos de uma vez quando um arquivo for acessado no Raid BTRFS. Alguém pode me ajudar?!

Muito obrigado antecipadamente

Atualizar

Há algum progresso para informar sobre esse assunto e achei que poderia ser de interesse para alguém.

Consegui localizar a principal causa do congelamento frequente do sistema. Felizmente não teve nada a ver com o BTRFS. Como as oito unidades não funcionam juntas, elas precisam de mais do que o tempo limite padrão de 30 segundos especificado em /sys/block/sda/device/timeout . Isso causa erros no kernel e pode até desligar todo o sistema. Éter o driver ou o kernel está tendo problemas com o tempo de aceleração lento das unidades. Btw meu controlador Adaptec HBA 1000 8i usa o driver aacraid.

Definir o valor de tempo limite de /sys/block/sd[x]/device/timeout para 120 resolve o problema. As unidades até vão dormir agora. Mais pode ser lido aqui: link

Mas um novo problema ocorre. Agora que as unidades vão dormir, alguns processos não podem acessar o sistema de arquivos com rapidez suficiente. Isso é o que eu recebo: INFO: task xyz blocked for more than 120 seconds. Isso é ruim?

O que resta agora é descobrir como ativar todas as oito unidades de uma vez. Não deve haver nenhum problema com o consumo de energia, porque ao reinicializar a máquina, todas as unidades também são acionadas de uma só vez e a PSU fica em bom estado para lidar com isso. Também gostaria de saber o que causa as novas mensagens de erro.

Novamente obrigado por qualquer entrada!

Atualização 2

Após mais observações e testes, parece que o problema com as mensagens aacraid: Host adapter abort request ainda está por aí. Embora o sistema não tenha mais congelado desde que definiu o valor timeout como 120 , o log do kernel ainda está preenchido com essas solicitações. De tempos em tempos, vejo entradas como esta: INFO: task btrfs-transacti:1351 blocked for more than 120 seconds. Do que posso dizer, ambos os problemas ocorrem apenas quando as unidades estão no modo de espera. Isso pode significar que a principal causa de todos os problemas acima está relacionada à irresponsividade dos discos quando em espera.

Também notei que as capacidades das unidades saltam entre 0 e 4000787030016 . A entrada lê sd(x): detected capacity change from 0 to 4000787030016’ e sd(x): detected capacity change from 4000787030016 to 0’ . Não tenho certeza se isso também tem algo a ver com o estado de energia das unidades. É muito estranho, no entanto.

Como experimentei muitas sugestões que encontrei na Internet e ainda não consegui que as coisas funcionassem normalmente, estava a pensar em alterar o controlador de armazenamento. Pelo que li, os controladores LSI são muito bem suportados pelo Linux. Isso é verdade? Alguém tem experiência com um LSI SAS 9217-8i por exemplo? Seria ótimo obter algum feedback sobre como este controlador trabalha com o BTRFS e o modo de espera do HDD. Tenho muita esperança de que um novo controlador possa ajudar.

Muito obrigado pela sua opinião sobre isso.

    
por user180820 21.07.2016 / 17:44

0 respostas