Abbiamo un gruppo di terminali consumer su cui è installato Linux, un server Web locale e PostgreSQL. Stiamo ricevendo segnalazioni sul campo di macchine con problemi e dopo un'indagine sembra che ci sia stata un'interruzione di corrente e ora c'è qualcosa che non va nel disco.
Avevo supposto che il problema sarebbe dovuto al fatto che il database veniva danneggiato o che i file con le modifiche recenti venivano confusi, ma ci sono altri rapporti strani.
- file con autorizzazioni errate
- file che sono diventati directory (ad esempio,
index.php
ora è una directory) - directory che sono diventate file
- file con dati codificati
Ci sono problemi con il database che viene danneggiato, ma è qualcosa che mi posso aspettare. Ciò di cui sono più sorpreso sono i problemi di base del file system, ad esempio le autorizzazioni o la modifica di un file nella directory. I problemi si verificano anche in file che non sono stati modificati di recente (ad esempio, il codice software e la configurazione).
Questo è "normale" per la corruzione SSD? Inizialmente pensavamo che stesse succedendo su alcuni SSD economici, ma abbiamo avuto questo su un marchio di marca (di qualità consumer).
FWIW, non stiamo facendo autofsck all'avvio impuro (non so perché, sono nuovo). Abbiamo UPS installati in alcune località, ma a volte non è fatto correttamente, ecc. Questo dovrebbe essere risolto, ma anche in questo caso le persone possono spegnere il terminale in modo impuro, ecc., Quindi non è infallibile. Il filesystem è ext4.
La domanda: c'è qualcosa che possiamo fare per mitigare il problema a livello di sistema?
Ho trovato alcuni articoli che si riferiscono allo spegnimento della cache hardware o al montaggio dell'unità in modalità di sincronizzazione, ma non sono sicuro che ciò possa aiutare in questo caso (corruzione dei metadati e modifiche non recenti). Ho anche letto un riferimento sul montaggio del filesystem in modalità di sola lettura. Non possiamo farlo perché dobbiamo scrivere, ma potremmo creare una partizione di sola lettura per il codice e la configurazione, se ciò potesse aiutare.
Questo è un esempio di unità 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
. Questo è un grosso problema La cache di scrittura non dovrebbe mai essere abilitata sui dischi rigidi che dispongono di un database. Alcuni fornitori, ad esempio HP, in realtà impediscono di abilitare la memorizzazione nella cache del disco rigido proprio per questo motivo.