952 Views
Em uma situação de resync de dados em um RAID por software, onde o resync esteja onerando o servidor ou demorando muito para terminar, podemos determinar taxas mínima e máxima de gravação de dados entre os discos por meio de tuning de propriedades do Kernel.
Os parâmetros que determinam as velocidades mínima e máxima do resync são:
/proc/sys/dev/raid/speed_limit_min /proc/sys/dev/raid/speed_limit_max
Hipóteses para alteração da taxa de reconstrução do RAID.
A alteração se faz necessária quando (1) o resync está muito lento ou (2) ou quando está gerando lentidão em um sistema que se encontra em produção. Uma terceira hipótese é querer terminar o resync o quanto antes pelo simples fato de que o servidor não pode ficar com o RAID degradado.
Seja qual for a hipótese, a alteração é bem simples. Basicamente, alteramos as taxas mínima e máxima das propriedades speed_limit determinando valores apropriados para o ambiente conforme veremos a seguir.
A alteração a seguir é deve ser feita em memória RAM para que comece a fazer efeito imediatamente.
Atenção: valores muito altos podem gerar lentidão de leitura e gravação em disco. Para servidores em Produção, especifique um valor adequado para o ambiente e/ou considere utilizar taxas maiores somente em momentos de menor demanda.
Alterando a velocidade mínima de reconstrução do RAID. Modo Volátil.
A alteração a seguir determina a taxa mínima de resync dos discos.
Para casos onde o resync está demorando muito, podemos aumentar a taxa de reconstrução do sync com o comando abaixo:
sysctl -w dev.raid.speed_limit_min=488281
Também podemos fazer com echo diretamente no diretório /proc:
echo 488281 > /proc/sys/dev/raid/speed_limit_min
Alterando a velocidade máxima de reconstrução do RAID. Modo Volátil.
Também podemos determinar uma taxa máxima de resync dos dados. Esse é utilizado quando o processo de resync esteja impactando na performance do servidor. Ao reduzir a taxa máxima, reduz a prioridade do processo e gera menos concorrência no sistema.
sysctl -w dev.raid.speed_limit_max=1000000
Também podemos usar o echo no /proc:
echo 1000000 > /proc/sys/dev/raid/speed_limit_max
Lembrando que essa configuração é volátil e será redefinida para valores default no próximo boot do sistema.
Alterando a valocidade de reconstrução do RAID. Modo persistido.
Para persistir esses novos valores nas propriedades speed_limit, é preciso setá-los no /etc/sysctl.conf. Para isso inclua o trecho abaixo:
dev.raid.speed_limit_min = 488281 # 512MB/s dev.raid.speed_limit_max = 1000000 # 1024MB/s
A seguir execute o comando sysctl -p para recarregar a configuração do /etc/sysctl.conf. Feito isso, os novos valores já estarão em vigor de forma definitiva.
Quais valores devo usar?
Isso depente; se o RAID estiver demorando muito para terminar de completar o resync, é preciso aumentar as taxas mínima. Nesse caso, é bom especificar uma taxa máxima também. Agora, se o resync do RAID estiver gerando lentidão no sistema, o ideal é reduzir a taxa de resync e aumentá-la em momentos de menor impacto; de madrugada, por exemplo.
Para contar com um dinamismo na determinação de taxas de gravação, pode-se utilizar o Crontab. Desta forma seria possível modificar as taxas mínima e máxima de acordo com o horário ou baseado em cenários de consumo.
Plus: alterando prioridades de processos em caso de concorrência.
Para quem está no sufoco de refazer o resync harmonizando com uma grande demanda de consumo do ambiente, sugiro a leitura do seguinte artigo também do Linuxzilla. Nele falo sobre os comandos nice, renice e ionice, com os quais pode-se determinar a prioridade de consumo de CPU, Memória e Disco, respectivamente, para o processo do resync do RAID:
Gerenciando Prioridades de Processos
Resumo
Ficar sem RAID não é uma opção. Por isso saber gerenciar eventuais resync de dados é extremamente importante. Porém, também é importante garantir a saúde do ambiente enquanto o sync estiver ocorrendo. Com os ajustes tratados nesse artigo e com um pouco de conhecimento sobre o ambiente, é possível conciliar tudo isso garantindo um ambiente produtivo e em conformidade quanto a segurança do RAID.
Abraços.

