我们有一组消费者终端,这些终端装有Linux,本地Web服务器和PostgreSQL。我们正在获取有关存在问题的计算机的现场报告,经过调查,似乎断电了,现在磁盘出现了问题。
我以为问题只是数据库损坏了,或者最近更改的文件被打乱了,但是还有其他奇怪的报告。
- 权限错误的文件
- 已成为目录的文件(例如,
index.php
现在是目录) - 已成为文件的目录
- 数据混乱的文件
数据库损坏有一些问题,但这是我可以预期的。更令我惊讶的是更基本的文件系统问题-例如,权限或将文件更改为目录。在最近没有更改的文件(例如,软件代码和配置)中也出现了问题。
这是SSD损坏的“正常”现象吗?最初,我们认为这是在某些便宜的SSD上发生的,但我们在一个名牌(消费级)上发生这种情况。
FWIW,我们不会在不干净的引导上执行autofsck(不知道为什么-我是新手)。我们在某些位置安装了UPS,但有时操作不正确等。应该解决此问题,但是即使那样,人们也可以不干净地关闭终端电源,等等。因此,这并非万无一失。文件系统是ext4。
问题是:我们有什么办法可以减轻系统级的问题?
我发现一些文章涉及关闭硬件缓存或以同步模式安装驱动器,但是我不确定在这种情况下是否有帮助(元数据损坏和最近的更改)。我还阅读了有关以只读模式挂载文件系统的参考。我们不能这样做,因为我们需要编写,但是如果可以的话,我们可以为代码和配置创建一个只读分区。
这是驱动器的示例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
。这是一个巨大的问题。永远不要在具有数据库的硬盘驱动器上启用写缓存。因此,某些供应商(例如HP)实际上阻止了启用硬盘写缓存。