11

我们有8台Cisco服务器,12个旋转磁盘用于数据,2个SSD用于操作系统。这两个SSD位于linux软件raid 1中。SSD的磨损指示器都是单数字的,有些磨损指示器的值达到1时出现故障。我正在将它们全部从备件中更换出来(这是一个漫长而令人厌烦的过程),但我注意到磨损指标每周下降1%或2%(我没有进行精确测量)。这些服务器上运行着一个应用程序,供应商给了我一些模糊的想法,但我真的需要找到它正在写入的目录。这样我才能真正突出问题,并推动供应商进行修复。我找了一些,但找不到太多。例如,iotop显示了包括12个旋转磁盘在内的完整磁盘吞吐量。操作系统为Redhat 7.9

回答一些问题:

  • 磁盘为“480GB 2.5英寸企业价值6Gb SATA SSD”
  • 产品ID为“UCS-SD480GBKS4-EB”
  • 2018年,服务器标配了磁盘
  • 磨损最近似乎加速了(我现在正在记录磨损情况,以便在几天后得到更好的答案)
  • 我已经用几年后购买的相同磁盘替换了大多数磁盘。
  • iotop显示恒定的8MB/s写入。
  • 该系统正在8台服务器上运行hadoop。hadoop文件系统位于旋转磁盘上,因此不应接触SSD
  • 虽然磁盘IO看起来仍然很高(8MB/s),但根据供应商的建议,我已经大大降低了磁盘IO
10
  • 2
    大多数是重复的serverfault.com/q/169676/28549 5月10日21:07
  • 2
    iostat-t nvme0n1p6--人类1可以让您随时了解从一秒钟到下一秒钟有多少数据被读/写到SSD驱动器。(更换nvme0n1p6当然是SSD分区的名称) 5月12日3:56
  • 你确定内核知道这些是SSD并使用TRIM等吗? 5月12日5:03
  • @MikeKulls很酷,这意味着他们被智能网覆盖(如果你有智能网并且一直在付费的话),而且这不是50美元的国产级固态硬盘。
    – 克里吉
    5月13日7:03
  • 1
    @Criggie我们确实获得了1个SSD的保修,但我们又去了RMA,服务器已经停止运行。我把它们都从备用磁盘中换了出来,这是一项了不起的工作,每个磁盘1个小时,一次只能换一个,在一个冰冷的交换环境中工作:-) 5月16日3:34

4个答案4

重置为默认值
5

您可以使用ProcMon for Linux跟踪文件系统调用。

https://github.com/Sysinternals/ProcMon-for-Linux网站

1
  • 这看起来像是我想要的,但它似乎并不针对RHEL。我在编译它时遇到了一些问题,已经没有时间解决了。 5月13日6:50
13

如果没有更多关于系统使用年限、SSD的确切型号和使用年限以及其他一些因素的详细信息,很难确定。

假设SSD质量好,一周内磨损指标达到1-2%,这意味着你要写几个兆兆字节(最少)一周内发送给他们的数据。那是一个巨大的操作系统卷的数据量。我要研究的首要问题依次是:

  • 廉价SSD。简单地说,这听起来像许多就像在这个系统中没有质量特别好的SSD一样,这将使1-2%的可用预期寿命转化为多TB数据的假设无效。我建议对您使用的SSD的确切模型进行一些研究,以确认其实际额定寿命写持久性是多少,并且没有记录的固件问题。过去五年左右的好成绩应该被评为至少100倍于其列出的容量(因此,1 TB SSD上的容量至少为100 TB),但理想情况下要高于此容量(相比之下,目前高端消费类1 TB SSDs的额定写入容量通常约为300 TB)。
  • 阻止设备缓存。如果您有使用SSD上空间的bcache、dm-cache、ZFS L2ARC或其他块设备缓存设置,则可能罪魁祸首,试着关掉它,看看会发生什么(好吧,除了可能严重影响性能之外)。
  • 登录中。大多数日志可能位于操作系统卷上。如果您启用了详细日志记录,并且您的应用程序非常繁忙时,这很容易在一周内达到TB的范围。但它也可以是其他东西,比如来自SELinux的日志、进程记帐或审计守护进程。
  • 非块缓存。基本上,东西在下面/变量/缓存或存储缓存的其他位置(例如~/.cache在用户主目录中)。除非它是一个非常活跃的终端服务器,否则这应该不会达到要求的数量,但值得检查。
  • 交换。可能不是主要原因,因为达到所需的数字会导致频繁交换,从而导致系统上的其他性能问题。
  • 此外,atime更新也不是什么大事。
    – 贾森
    5月11日7:25
  • 4
    在每个日志行之后使用磁盘刷新进行日志记录通常是罪魁祸首
    – 高的
    5月11日7:32
  • 不在企业级驱动器上,也不在配备超级电容器的情况下,这些超级电容器可以刷新到dram,并具有超级电容器来处理故障时对单元的写入-这是多年来任何非低端SSD的标准配置。 5月11日11:34
11

检查交换-这是一个典型的指标。检查您是否为任何软件运行任何临时文件-这可能是另一个软件。两者都需要您进行检查,并考虑到临时文件依赖于软件-没有真正的帮助可能。构建服务器目录是我上次观察到的地方——技术上是一个临时结构,因为每次运行都会下载存储库(好的,更新它),然后初始化源树和构建——这是大量写入。最终用户SSD不是为此而制作的。真的取决于软件-没有通用的答案可能。

否则,请考虑是否适合从使用低端SSD开始-这听起来像是降幅过大

2
  • FWIW我已经运行构建服务器五年了,它只在磨损指标上减少了4%,尽管SSD在大多数时间都是瓶颈。 5月11日9:09
  • 这取决于SSD,以及您是否做了大量清理工作。我做的那些人不得不重建源代码树,基本上一直忙个不停。我们在大约6个月内用完了三星SSD。现在,企业级驱动器每天可以处理5次写入,而且这些驱动器在过去几年都不会成批增长。 5月11日11:33
2

你可以自上而下地解决这个问题。

这意味着首先设置一个监控,例如网络数据持续将所有相关IO指标写入所有服务器的数据库。

使用这些数据,您可以检查交换活动、SSD的写入量以及随时间的变化。

这样,您可以交叉检查磨损诱导器的更改是否实际可行。我的意思是,SSD固件中影响SMART报告的错误并非闻所未闻。


为了识别高速写入的目录和文件,您可以运行文件柜来自bcc工具包装,例如:

#/usr/share/bcc/tools/filetop23:56:12平均载荷:1.32 0.83 0.60 4/1273 563644TID命令读取写入R_Kb W_Kb T文件563614是0 36757 0 294056 R foo.bar[..]
  • 我们在服务器上使用了Dockerized netdata,它在一两个月内写入了大约1 TB的数据,所以要小心,netdata会加速磨损。 5月13日15:17
  • 1
    @答:。L-saynotoAI理想情况下,被调查服务器上的网络数据配置为仅收集所有相关指标,并通过网络将其发送到运行网络数据主实例的单独主机,该主机将所有内容写入时间序列数据库并为web-UI服务。或者,您可以使用telegraf/grafana、prometheus/grafan或类似工具实现此类监控。netdata的优点是它的主收集器非常高效,它在UI中提供了一组精心管理的有用面板,而且是现成的。 5月13日21:58
  • @答:。L-saynotoAI FWIW,截至2024年,每月1 TB可能只消耗SSD耐久性评级预算中相对较小的一部分。例如,Micron 7500数据中心SSD的额定值为每天1或3个驱动器写入(DWPD),保修期为5年。因此,使用-3.84 TB/1 DWPD SSD,每月1 TB的写负载消耗了每月耐久性预算的1/115左右。 5月13日22:32

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.