Eu tenho uma configuração de réplica de nó 2 GlusterFS 2. Estou planejando usá-lo como armazenamento de instância OpenStack, no qual a imagem de disco da VM é armazenada.
De meus testes, se o nó GlusterFS no qual o hypervisor está atualmente montado falhar (usando as configurações padrão do GlusterFS), levará cerca de 45 segundos para que a conexão expire e o cliente glusterfs falhe para o outro nó. Durante esses 45 segundos, as operações de E/S serão interrompidas, do ponto de vista da VM, o que significa que o disco não responde.
Eu sei que para o Linux, se o disco parar de responder, depois de algum tempo (não tenho certeza de quanto tempo) o kernel remontará o sistema de arquivos como somente leitura.
Também posso diminuir o valor do volume do GlusterFS network.ping-timeout
, o que reduzirá o tempo de failover.
Minha pergunta é: quanto devo definir esse valor para que a maioria dos sistemas operacionais possa tolerar o tempo sem resposta do disco virtual sem efeitos colaterais?
Para ser mais preciso, gostaria de saber o tempo de falta de resposta do disco que o Windows NTFS, FreeBSD UFS/ZFS e Linux ext4 podem tolerar. Quais são os parâmetros envolvidos? (por exemplo, /sys/block/sda/device/timeout
no Linux)
informação relacionada:
Atualização: @the-wabbit respondeu sobre Linux e Windows, também gostaria de saber o caso do FreeBSD
O driver de disco normalmente espera até que um tempo limite configurável seja excedido antes mesmo de relatar um erro para a operação solicitada.
Como você descobriu, isso está
/sys/block/<devicename>/device/timeout
no Linux e o padrão é6030 segundos.O Windows está armazenando esta configuração como uma configuração global
TimeoutValue
(REG_DWORD)HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk\
com um padrão de 60 segundos.Contanto que nenhum erro seja relatado no upstream, você não verá nenhuma ação imediata (como uma remontagem ro do FS). um erro é passado de volta para a camada superior.
Mas esteja ciente de que haverá outras implicações que afetarão a disponibilidade geral.
Em geral, você deseja manter o tempo de failover o mais baixo possível enquanto ainda opera sem failovers prematuros devido a picos de carga ocasionais ou falhas de rede. Determinar o valor certo para o seu caso específico de uso é um trabalho de tentativa e erro durante um período prolongado de operação. Para VMs de servidor de uso geral, eu apontaria algo na magnitude de 10 segundos, se viável e compatível com sua infraestrutura.
O FreeBSD possui o geom_mountver ( https://www.freebsd.org/cgi/man.cgi?gmountver ), que pode ser usado para torná-lo tolerante a qualquer tempo de failover. Se você estiver usando o ZFS, pode ser necessário desativar o timer de homem morto; ele entrará em pânico se um IO não for concluído em 15 minutos (IIRC).