Temos um grupo de terminais de consumidores com o Linux, um servidor da Web local e o PostgreSQL instalado. Estamos recebendo relatórios de campo de máquinas com problemas e, sob investigação, parece que houve uma queda de energia e agora há algo errado com o disco.
Eu tinha assumido que o problema seria apenas com o banco de dados sendo corrompido ou arquivos com alterações recentes sendo embaralhadas, mas existem outros relatórios estranhos.
- arquivos com permissões erradas
- arquivos que se tornaram diretórios (por exemplo,
index.php
agora é um diretório) - diretórios que se tornaram arquivos
- arquivos com dados codificados
Há problemas com o banco de dados sendo corrompido, mas isso é algo que eu poderia esperar. O que mais me surpreende são os problemas mais básicos do sistema de arquivos - por exemplo, permissões ou alteração de um arquivo em diretório. Os problemas também estão acontecendo em arquivos que não foram alterados recentemente (por exemplo, o código e a configuração do software).
Isso é "normal" para corrupção de SSD? Originalmente, pensávamos que isso estava acontecendo em alguns SSDs baratos, mas temos isso em uma marca de nome (classe de consumidor).
FWIW, não estamos fazendo o autofsck na inicialização suja (não sei por que, eu sou novo). Temos no-breaks instalados em alguns locais, mas às vezes isso não é feito corretamente etc. Isso deve ser consertado, mas mesmo assim as pessoas podem desligar o terminal de maneira não limpa, etc. - para que não seja à prova de idiotas. O sistema de arquivos é ext4.
A questão: existe alguma coisa que possamos fazer para atenuar o problema no nível do sistema?
Encontrei alguns artigos referentes à desativação do cache de hardware ou à montagem da unidade no modo de sincronização, mas não tenho certeza se isso ajudaria nesse caso (corrupção de metadados e alterações não recentes). Também li uma referência sobre a montagem do sistema de arquivos no modo somente leitura. Não podemos fazer isso porque precisamos escrever, mas poderíamos criar uma partição somente leitura para o código e a configuração, se isso ajudasse.
Este é um exemplo de uma unidade sudo hdparm -i /dev/sda1
:
Model=KINGSTON RBU-SMS151S364GG, FwRev=S9FM02.5, SerialNo=<deleted>
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=125045424
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-3,4,5,6,7
WriteCache=enabled
. Este é um problema enorme. O cache de gravação nunca deve ser ativado em discos rígidos que possuem um banco de dados. Alguns fornecedores, por exemplo, a HP, na verdade, impedem a ativação do cache de gravação no disco rígido por esse motivo.