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
systemd
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.