我一直在寻找从 ESXi 5.1 中 LSI MegaRAID 控制器 (9260-4i) 后面的驱动器获取 SMART 信息和 R/W 统计信息的方法。ESXi 有一个命令“esxcli storage core device smart get”来从驱动器获取 SMART 数据,但它不适用于 LSI RAID 控制器下的磁盘。到目前为止,我一直在查看 ESXi 文档和 LSI 文档,但一无所知。我认为使用 smartctl 在 Linux 中可以轻松完成。有没有人经历过类似的情况或对如何做到这一点有一些想法?我正在寻找的信息是智能日志页面和单个磁盘的读/写性能。
我可以使用以下命令列出所有 megaraid 适配器上的物理驱动器:
megacli -PDList -aALL
Run Code Online (Sandbox Code Playgroud)
这将为每个适配器显示一个适配器 #,然后列出连接到它们的物理驱动器。
PDList 输出中的各个设备也有一个设备 ID,用于 smartctl 命令,例如设备 ID 3:
smartctl -a -d sat+megaraid,3 /dev/sda
Run Code Online (Sandbox Code Playgroud)
两个命令都使用相同的设备 ID,所以没问题。但是我们如何正确地将适配器 # 映射到设备节点?
在 CentOS 6 上运行 smartmontools-5.43-1.el6。查看源代码似乎需要从 ioctlSG_GET_SCSI_ID或SCSI_IOCTL_GET_BUS_NUMBER在命名设备节点上获取的总线编号 / host_no 。这是否与 MegaCLI 输出中使用的“适配器编号”相同?
实际上,就我而言,我可能可以将其硬编码到 /dev/sda,但我想知道是否有更好的方法。
我有一台繁忙的服务器,设置了 RAID 1。该应用程序(在 PHP 中运行)对数据库 (MariaDB) 的读/写非常密集。
cronjobsmartctl每天运行简短的测试并检查smartctl -H和的输出mdadm -D。
有时我想运行长时间测试,但我担心它对性能的影响。我读到可能需要几个小时才能完成。如果它导致服务器性能在运行时下降,我的用户将受到 5 个多小时的影响。
所以,这里有几个问题:
1) 长时间的智能测试通常会影响对用户来说很重要的性能吗?
2)既然我有RAID 1并且做了短测试,那么长测试还需要吗?
3)如果我发现长时间测试对服务器性能造成了问题,是否有办法停止它?
在我拥有的带有 HDD 或 SSD 的服务器上,我有一个定期运行的 cron:
/usr/sbin/smartctl --test=short/long /dev/sd1
Run Code Online (Sandbox Code Playgroud)
(对于每个磁盘)
当它运行时,它只是查看 的输出/usr/sbin/smartctl -c /dev/sd1,循环直到它不再包含:
[0-9]+% of test remaining.
Run Code Online (Sandbox Code Playgroud)
然后检查它是否完成且没有错误:
( 0) The previous self-test routine completed
Run Code Online (Sandbox Code Playgroud)
smartctl但是,从版本 7.0 开始,似乎尚不支持 NVMe 测试:https : //www.smartmontools.org/wiki/NVMe_Support
它确实这么说
smartd 守护进程跟踪运行状况 (-H)、错误计数 (-l error) 和温度 (-W DIFF,INFO,CRIT)
但实际运行测试的是什么?我不确定 和 的输出是否会-H更新-l,除非我们运行短/长测试?
我还阅读了有关 的内容nvme-cli,但我似乎没有找到用它在磁盘上运行运行状况测试的方法。
有任何想法吗?
这里使用 CentOS 7。
我有一个硬盘驱动器,它是 Linux 软件 raid5 阵列的一部分。SMART 报告说它的 multi_zone_error_rate 是 0,然后是 1,然后是 3。所以我想我最好开始更频繁地备份并准备更换驱动器。现在,今天,同一个驱动器的 multi_zone_error_rate 又回到了 1。在我不看的时候,似乎有 2 个错误没有发生。
我还通过检查服务器上的系统日志看到了类似的行为。
Jun 7 21:01:17 FS1 smartd[25593]: Device: /dev/sdc, SMART Usage Attribute: 7 Seek_Error_Rate changed from 200 to 100
Jun 7 21:01:17 FS1 smartd[25593]: Device: /dev/sde, SMART Usage Attribute: 7 Seek_Error_Rate changed from 200 to 100
Jun 7 21:01:18 FS1 smartd[25593]: Device: /dev/sdg, SMART Usage Attribute: 7 Seek_Error_Rate changed from 200 to 100
Jun 8 02:31:18 FS1 smartd[25593]: Device: /dev/sdg, SMART Usage Attribute: 7 Seek_Error_Rate …Run Code Online (Sandbox Code Playgroud) 我目前的 mdstat:
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid6 sde[8] sdh[4] sdg[1] sdd[6] sdb[5] sdc[7]
9766914560 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/6] [UUUUU_U]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
这是 mdadm --detail:
$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Apr 26 21:52:21 2013
Raid Level : raid6
Array Size : 9766914560 (9314.46 GiB 10001.32 GB)
Used Dev Size : 1953382912 (1862.89 GiB 2000.26 …Run Code Online (Sandbox Code Playgroud) 我刚刚更换了服务器上的硬盘。
它是 RAID 1 阵列的一部分。sdb1 分区现在每隔几个小时就会出现故障。
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multi path] [faulty]
md1 : active raid1 sdb1[2](F) sda1[0]
463216576 blocks [2/1] [U_]
md3 : active raid1 sdb3[1] sda3[0]
20970432 blocks [2/2] [UU]
Run Code Online (Sandbox Code Playgroud)
妈妈:
# mdadm -D /dev/md1
/dev/md1:
Version : 0.90
Creation Time : Tue Dec 25 15:04:23 2012
Raid Level : raid1
Array Size : 463216576 (441.76 GiB 474.33 GB)
Used Dev Size : 463216576 (441.76 GiB 474.33 GB)
Raid …Run Code Online (Sandbox Code Playgroud) 我给自己买了一个发出奇怪声音的硬盘。
我想检查错误,我想使用smartctl,
这个命令
[root@defiant ~]# smartctl -V
Run Code Online (Sandbox Code Playgroud)
产生一个错误:
bash: smartctl: command not found...
Run Code Online (Sandbox Code Playgroud)
yum install smartctl不起作用。我如何 yum 安装 smartctl?
smartctl ×8
smart ×4
hard-drive ×3
raid ×3
bad-blocks ×1
centos ×1
fedora ×1
healthcheck ×1
installation ×1
linux ×1
lsi ×1
mdadm ×1
megacli ×1
megaraid ×1
nvme ×1
raid1 ×1
vmware-esxi ×1