有人告诉我,我只能使用 KVM 验证我的 HW RAID 阵列是否正常工作。但是,我希望服务器出现问题时自动通知我。
有没有一种方法可以通过 SSH(将通过 php 中的 system() 调用)来检测驱动器是否有问题?我不需要识别哪个驱动器。
我想到了一个理论,但我不知道它在实践中是否可行。如果我运行一个 PHP 脚本来 fopen('/dev/[filesystem]', 'r') 并搜索每个 xGB 中的 1 个字节,并且它搜索有问题的文件系统的位置,它应该会返回一个错误。我这样想对吗?
我使用 XFS 文件系统,我听说过 xfs_check,但它说它需要在只读模式下运行,这很不方便。
我使用 3ware RAID 控制器。
答案1
tw_cli
在您的机器上安装 3Ware 工具 ( )。
安装它们之后,获取控制器的 ID 号(我从来不明白其背后的系统,据我所知它可能是随机的):
$ tw_cli show
Ctl Model (V)Ports Drives Units NotOpt RRate VRate BBU
------------------------------------------------------------------------
c0 9550SXU-4LP 4 2 1 0 1 1 -
然后您可以使用以下方式查询阵列状态
$ tw_cli /c0 show
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy
------------------------------------------------------------------------------
u0 RAID-1 OK - - - 74.4951 ON OFF
Port Status Unit Size Blocks Serial
---------------------------------------------------------------
p0 NOT-PRESENT - - - -
p1 NOT-PRESENT - - - -
p2 OK u0 74.53 GB 156301488 9QZ07NP2
p3 OK u0 74.53 GB 156301488 9QZ08DS2
显然,这在你的机器上看起来会有所不同。这些示例摘自这里。
要主动验证(清理)您的驱动器,请使用
$ tw_cli /c0/u0 start verify
对于自动通知,您应该设置一个监控系统,例如 Nagios 或 Icinga,并使用一个插件在 的帮助下检查阵列的健康状况tw_cli
。这些插件在没有 Nagios/Icinga 的情况下也能很好地工作,并且可以很容易地以 cron 作业的形式用于最小监控系统中,当插件没有返回时,它会发送邮件0
。