Mantido desde outubro de 2019

Post-mortem: um lote ruim de firmware, e um espelho que não era um

Quarenta e uma unidades NVMe de um único lote de fabricação pararam de responder na mesma contagem de horas de energia ligada. Duas instâncias de clientes perderam dados, e o erro de lote foi inteiramente nosso.

Resumo

Entre 29 de outubro e 1º de novembro de 2024, quarenta e um drives NVMe empresariais em quatro locais pararam de aceitar comandos em uma contagem fixa de horas de energia, um defeito de firmware em um lote de fabricação. O espelhamento absorveu trinta e nove dessas falhas sem impacto para o cliente. Um nó em Varsóvia perdeu as duas metades de um espelho em quarenta minutos, porque ambos os drives vieram do mesmo lote e foram instalados no mesmo dia. Duas instâncias nesse nó perderam dados. Essa segunda parte foi nossa culpa, não do fornecedor.

Linha do tempo

Todos os horários em UTC.

HoraEvento
29 out 03:11Drive sai do barramento em um nó de Varsóvia. O espelho degrada, o hot spare começa a reconstruir. Rotina, sem alerta.
29 out 03:49Segundo drive no mesmo espelho falha. O nó perde o pool raiz e para.
29 out 03:52Alerta dispara. Plantão online às 03:55.
29 out 04:20Nó declarado irrecuperável no local. A reconstrução a partir do hot spare é impossível; o spare estava no meio de uma reconstrução de uma fonte que não responde mais.
29 out 05:40Engenheiro revisando logs dos drives nota que as duas falhas estão a dezoito horas de energia de diferença, não dezoito meses. A suspeita passa de azar para coorte.
29 out 06:15Consulta em toda a frota por identificador de lote e horas de energia. Duzentos e seis drives estão no lote afetado. Trinta e um já passaram da contagem e falharam; o restante está entre quarenta e novecentas horas de distância dela.
29 out 07:30Fornecedor contatado. Defeito confirmado em quatro horas: um contador na telemetria de nivelamento de desgaste transborda em 1.536 horas de energia e trava o controlador. Uma revisão de firmware corrigindo isso havia sido lançada, silenciosamente, seis semanas antes.
29 out 09:00Atualização de firmware em lote começa, priorizada por horas restantes.
30 out 22:40Último drive do lote atualizado ou substituído.
1 nov 14:00Instâncias afetadas de clientes restauradas ou reembolsadas.

Causa raiz

Duas causas, e apenas uma delas pertence ao fabricante do drive.

Deles: um contador de telemetria transbordou em uma contagem fixa de horas de energia e travou o controlador. O drive sobrevive a um ciclo de energia, volta e trava novamente em minutos. Os dados no prato estão intactos e inacessíveis, que é a pior combinação para qualquer um tentando diagnosticar isso às quatro da manhã.

Nossa: construímos espelhos com drives que chegaram na mesma entrega. Um espelho deve ser dois domínios de falha independentes, e dois drives do mesmo lote, instalados na mesma tarde, ligados na mesma hora, não são independentes em nenhum sentido que importa. Onze espelhos em toda a frota foram construídos assim. Dez tiveram sorte, pois o hot spare terminou a reconstrução primeiro. Um não.

Sabíamos disso em princípio há anos. Ninguém tinha escrito isso no procedimento de build, e o procedimento de build é o que as pessoas seguem às duas da manhã sob um prazo de entrega.

Impacto

  • Trinta e nove falhas absorvidas por espelhos sem efeito visível para o cliente.
  • Um nó offline por nove horas e dezoito minutos.
  • Quatorze instâncias nesse nó restauradas a partir de backups fora do nó, perdendo no máximo onze minutos de gravações.
  • Duas instâncias sem backup de nenhum tipo. Ambas perderam tudo no nó.

O que mudamos

  1. Lotes de compra são divididos. Nenhum par de drives do mesmo lote pode formar um espelho, e o hot spare que protege um par vem de um terceiro lote. Aplicado pela ferramenta de build, não por um documento. Feito em 4 de novembro.
  2. Alertas de coorte por horas de energia. Agora alertamos quando mais de quatro drives compartilhando um identificador de lote estão a menos de cem horas um do outro e se aproximando de qualquer número redondo de horas. É uma heurística grosseira e teria pegado isso dezenove dias antes.
  3. Teste de firmware antes da produção. Uma nova família de drives roda duas mil horas de energia em um rack de teste antes de carregar dados de clientes. Esse defeito teria aparecido às 1.536.
  4. Agora lemos as notas de versão de firmware do fornecedor em um cronograma. A correção existia seis semanas antes de precisarmos dela. Ninguém foi designado para olhar, então ninguém olhou.

O que não mudamos e por quê

Não mudamos a família de drives nem o fornecedor. O defeito era real e a divulgação foi ruim, mas nossa perda veio do agrupamento correlacionado, que teríamos reproduzido com qualquer fabricante. Trocar teria parecido decisivo e não teria consertado nada.

Backup fora do nó continua sendo um complemento por nove euros por quinhentos gigabytes. Torná-lo universal significa cobrar de cada cliente por um serviço que a maioria deles replica por conta própria, e não vamos cobrar das pessoas pela aparência de segurança. O que mudou foi o formulário de pedido, que agora declara claramente que o armazenamento de instância é espelhado e que espelhado não é backup, e a etapa de confirmação não permite mais que essa frase seja pulada silenciosamente.

Não mudamos para espelhamento triplo. Custa um terço a mais por gigabyte e não aborda falha correlacionada, que foi o mecanismo real aqui. Dois domínios independentes vencem três dependentes.

Os dois clientes

Ambos foram reembolsados integralmente pelo período afetado, no ativo com que pagaram, sem serem solicitados a justificar nada. Um saiu. O outro ficou e agora compra o complemento de backup, tendo lido a mesma frase no formulário de pedido que já estava lá de forma mais fraca o tempo todo.

Nenhum desses resultados estava ao nosso alcance. A única coisa que estava ao nosso alcance era construir o espelho corretamente, e não construímos.

Pronto quando você estiver

Escolha uma cidade. Escolha um tamanho. Pague em cripto.

Sem formulários sobre quem você é, sem esperar aprovação de um humano, sem ligação para verificar nada. O pagamento é confirmado e as credenciais chegam na sua caixa de entrada.