Problemas com SD Card corrompido - Como evitar!

Fala pessoal!!

Eu tenho visto em fóruns até na gringa que muita gente tem problema na combinação Raspberry + SD Card, e acredito ter descoberto o motivo de tanta gente querer migrar do SD para o SSD.
Não que o SSD seja uma má opção, mas as vezes não é necessário para algumas pessoas, e elas apenas não estão entendendo o que está acontecendo.

Como o Home Assistant utiliza o SQlite como banco de dados, o HA precisa escrever sempre um numero crescente de sensores que criamos nesse banco de dados. se você utiliza ainda o influxDB essa situação só piora, e ainda mais se o tempo de atualização desses sensores é curto, tipo uma vez por segundo etc… o que acontece é que seu numero de escritas I/O ( i/o writings) aumenta e sua espera para escrita i/o (i/o wait) também aumenta.

Então basicamente vc sempre esta escrevendo um volume alto de dados no SD, e em combinação com uma fonte nao apropriada ou oscilações na sua rede elétrica, o cartão ira corromper bem rapido.

Então o que fazer?

1 - Diminuir os I/O writings:

Tanto sqlite, mariaDB ou InfluxDB vc pode reduzir a quantidade dos sensores que escrevem no banco de dados removendo-os na integração.

# Aqui vc escolhe o que escreve ou não no sqlite
recorder:
  exclude: # esta seção exclui dominios inteiros, neste exemplo todos os sensores estão excluidos e o sqlite não irá gravar nada
    domains:
      - sensor
  include: # esta seção inclui o que vc deseja gravar, que pode ser sensores especificos
    entities:
      - sensor.last_boot
      - sensor 
# consulte https://www.home-assistant.io/integrations/recorder/ para mais detalhes de como adicionar ou remover outros tipos entidades

Removendo do InfluxDB a nomenclatura é a mesma basta você reproduzir dentro da seção do influxdb.

influxdb:
  exclude: # esta seção exclui dominios inteiros, neste exemplo todos os sensores estão excluidos e o influx não irá gravar nada
    domains:
      - sensor
  include: # esta seção inclui o que vc deseja gravar, que pode ser sensores especificos
    entities:
      - sensor.last_boot
      - sensor 
# consulte https://www.home-assistant.io/integrations/influxdb/ para mais detalhes

2 - Monitore suas leituras/escritas:

Como monitorar o numero de escritas e leituras? Um meio de fazer isso é adicionar o system monitor. Nesta plataforma podemos adicionar o tempo de espera dos processos por tempo na CPU. Se estiver alto demais, a chance de vc corromper seu cartão é altíssima.

- platform: systemmonitor
  resources:
    - type: load_1m
    - type: load_5m
    - type: load_15m

O último cartão que tive estava com mais de 50 processos aguardando processador na carga de 1m. hoje com o cartão apropriado este numero baixou para entre 0,5 a 1,5 processos em 1m.

3 - Compre um SD com bom numero de escritas de I/O:

Muitas pessoas compram SDcard Classe 10 pensando que somente isso é necessário para ter um cartão bom, mas a classe que define o numero de escritas/leituras I/O é a Classe A2.
Se o seu cartão for A2 ele prioriza entradas e saídas de um sistema operacional, alguns classe 10 nem possuem classificação A1, então escolham um cartão A2.

image

Funcionou para mim desta forma e acredito que possa funcionar para mais pessoas, espero ter ajudado.

6 Likes