智能长测试 - 对繁忙服务器的性能影响是什么?

Nun*_*uno 6 raid hard-drive smart raid1 smartctl

我有一台繁忙的服务器,设置了 RAID 1。该应用程序(在 PHP 中运行)对数据库 (MariaDB) 的读/写非常密集。

cronjobsmartctl每天运行简短的测试并检查smartctl -H和的输出mdadm -D

有时我想运行长时间测试,但我担心它对性能的影响。我读到可能需要几个小时才能完成。如果它导致服务器性能在运行时下降,我的用户将受到 5 个多小时的影响。

所以,这里有几个问题:

1) 长时间的智能测试通常会影响对用户来说很重要的性能吗?

2)既然我有RAID 1并且做了短测试,那么长测试还需要吗?

3)如果我发现长时间测试对服务器性能造成了问题,是否有办法停止它?

Jes*_*man 5

  1. 这取决于。(哈哈哈)什么?您的应用程序使用磁盘的程度以及您的应用程序可以利用多少缓存。这里没有什么神奇之处 - 如果驱动器正在接受测试,它就无法以与未测试时相同的最大速度和低延迟提供服务。但是,如果您的最低延迟要求小于测试的影响,那么就应用程序影响而言,这就是一次洗礼。
  2. 可能不会。大型企业存储公司(EMC、IBM、NetApp 等)根据其 M(ean) T(ime) B(etween) F(ailures) 更换驱动器,而不仅仅是等待驱动器的固件报告问题。简短的测试首先测试所有可能失败的内容。长测试与短测试的测试相同,只是没有时间限制。假设所有驱动器都会发生故障,但保修期满后发生故障的可能性会更高。
  3. 是的,前提是驱动器支持中止(或“暂停”)脱机收集。

来自“smartctl(8)”手册页:

       -X, --abort
              Aborts  non-captive  SMART  Self  Tests.  Note that this command
              will abort the Offline Immediate Test routine only if your  disk
              has the "Abort Offline collection upon new command" capability.
Run Code Online (Sandbox Code Playgroud)

(我认为如果您看到“根据新命令暂停离线收集”,您也可以中止;我认为手册页需要更新。)您可以通过以下方式检查该功能:

smartctl -x <device>
Run Code Online (Sandbox Code Playgroud)