只读文件系统,并在120台计算机上重复执行fsck

背景知识:我在一家安全公司工作,该公司由于其稳定性和定制性而决定使用Linux。这些机器是我公司根据消费者组件制造的NVR。他们正在记录安全录像,正常运行时间和可靠性是关键-这就是我的问题所在。

我们部署了约120台计算机,所有计算机均由相同的组件统一构建,并全部从源2磁盘(一个16.04和一个18.04)克隆。无论克隆如何,FS都是Ext4

在所有这些计算机上,无论它们是18.04还是16.04(两者都是出于克隆目的而单独构建),我们都遇到问题,这些计算机正在运行某种IO错误,并且根分区将变为只读状态。重新启动后,计算机将放入initramfs提示符下,在该提示符下必须执行手动fsck。一堆孤立的Inode需要固定和错误的位图大小。此后,“丢失+找到”中没有任何内容。然后,机器将正常运行,直到再次随机发生。错误之间的时间间隔从一天到四个月后不等。驱动器始终通过短,长和SMART测试。我可以在网上找到的所有内容都显示“驱动器故障,Sata电缆损坏”等。我很难相信我拥有的每台金士顿SSD都会变坏。尤其是所有这些驱动器的使用年限为9个月或更短。

这是受影响机器之一的syslog的摘录。

May 19 03:54:55   kernel: [43799.504870] sd 4:0:0:0: [sdb] tag#23 FAILED Result: hostb
yte=DID_OK driverbyte=DRIVER_TIMEOUT
May 19 03:54:55   kernel: [43799.504877] sd 4:0:0:0: [sdb] tag#23 CDB: Write(10) 2a 00
 0d 05 fa e0 00 00 08 00
May 19 03:54:55   kernel: [43799.504882] blk_update_request: I/O error, dev sdb, secto
r 218495712 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 0
May 19 03:54:55   kernel: [43799.504890] EXT4-fs warning (device sdb1): ext4_end_bio:3
15: I/O error 10 writing to inode 6815752 (offset 0 size 4096 starting block 27311965)
May 19 03:54:55   kernel: [43799.504894] Buffer I/O error on device sdb1, logical bloc
k 27311708
May 19 03:54:55   kernel: [43799.504928] sd 4:0:0:0: [sdb] tag#28 FAILED Result: hostb
yte=DID_OK driverbyte=DRIVER_TIMEOUT
May 19 03:54:55   kernel: [43799.504931] sd 4:0:0:0: [sdb] tag#28 CDB: Write(10) 2a 00
 06 ca 5a c0 00 00 40 00
May 19 03:54:55   kernel: [43799.504935] blk_update_request: I/O error, dev sdb, secto
r 113924800 op 0x1:(WRITE) flags 0x800 phys_seg 8 prio class 0
May 19 03:54:55   kernel: [43799.504954] JBD2: Detected IO errors while flushing file 
data on sdb1-8
May 19 03:54:55   kernel: [43799.505014] Aborting journal on device sdb1-8.
May 19 03:54:55   kernel: [43799.505020] EXT4-fs error (device sdb1) in ext4_reserve_i
node_write:5976: Journal has aborted
May 19 03:54:55   kernel: [43799.506540] EXT4-fs (sdb1): Remounting filesystem read-on
ly
May 19 03:54:55   kernel: [43799.508041] EXT4-fs error (device sdb1): ext4_journal_che
ck_start:61: Detected aborted journal0

我通常了解这里发生了什么,但是没有任何迹象表明原因。我知道是某种原因导致IO错误,这导致日志中止,这使FS变为RO。在所有这些不同的机器上都发生这种情况只是没有意义的。为了使这一过程变得更加有趣,我没有物理访问这些计算机的权限,因为它们在该地区的所有客户站点中。我每次必须走一个人去做fsck / dev / sdb1 -y。

硬件:

  • 华擎H370M-ITX / ac主板
  • 金士顿Q500 120 GB SSD
  • WD 6 TB紫色驱动器
  • 英特尔奔腾G5400
  • 季节性SSP-300SUB FlexATX PSU
  • 至关重要的4 GB DDR4-2400 RAM

自从开始以来我做了什么:

  • 在某些计算机上将内核更新为5.3
  • 在某些机器上禁用fstrim
  • 添加了noatime在某些机器上挂载选项

进行了这些更改的机器仍然存在该问题。