我只是尝试在我的硬盘上运行测试,但它不想完成自测。结果如下:
smartctl --attributes --log=selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 697
3 Spin_Up_Time 0x0027 206 160 021 Pre-fail Always - 691
4 Start_Stop_Count 0x0032 074 074 000 Old_age Always - 26734
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail …Run Code Online (Sandbox Code Playgroud) man smartctl 状态(为简洁起见被剪掉):
在第一类,称为“在线”测试。在第二类测试被称为“离线”的测试。通常,磁盘会在进行磁盘访问时暂停离线测试,然后在磁盘空闲时自动恢复它。在第三类测试(和其'testing'实在是一个合适的选择单词的唯一类别)是“自我”测试。
启用或禁用 SMART 自动离线测试,它每四小时扫描一次驱动器是否存在磁盘缺陷。可以在正常系统操作期间给出该命令。
谁运行测试驱动固件?这些是什么类型的测试 - 固件是否读/写到磁盘 - 到底发生了什么?在操作系统 (linux) 中调用测试是否安全,或者可以安排稍后的测试 - 这是如何发生的 - 当您在 BIOS 提示下重新启动操作系统(“离线测试”)时?结果显示在哪里 - SMART 日志?
SMART(用于自我监控分析和报告技术)是一项出色的技术,可以在硬盘故障真正发生之前对其进行检测。
但是 SMART 与 SSD 相关吗?
我的 Linux 系统开始在系统日志中抛出 SMART 错误。我追踪了它并相信问题出在磁盘上的单个块上。我如何轻松地让磁盘重新分配那个块?我想知道在这个过程中哪个文件被破坏了。(我知道,如果磁盘上的一个块出现故障,其他块可能会出现故障;我有一个很好的持续备份,只想尝试保持该磁盘正常工作。)
在网上搜索会找到坏块 HOWTO,它描述了卸载磁盘上的手动过程。这看起来很复杂而且容易出错。是否有工具可以在 Linux 中自动执行此过程?我唯一的其他选择是制造商的诊断工具,但我认为这会破坏坏块而没有任何关于被破坏的东西的报告。最坏的情况,可能是文件系统元数据。
有问题的磁盘是主系统分区。使用 ext3fs 和 LVM。这是来自 syslog 的错误日志和来自 smartctl 的相关位。
smartd[5226]: Device: /dev/hda, 1 Currently unreadable (pending) sectors
Error 1 occurred at disk power-on lifetime: 17449 hours (727 days + 1 hours)
... Error: UNC at LBA = 0x00d39eee = 13868782
Run Code Online (Sandbox Code Playgroud)
pastebin上有一个完整的 smartctl 转储。
在 Debian 6.0.6 系统中,有 74 个 2TB Toshiba DT01ABA200 驱动器。这些驱动器被标识为运行固件版本 MZ4OAAB0 的 Hitachi HDS5C3020BLE630 驱动器。64 个驱动器通过 HP SAS 扩展卡连接到 LSI 2008 SAS 控制器,另外 5 个驱动器直接连接到主板,4 个驱动器连接到基于 Sil 的 PCI 控制器,最后一个驱动器仅通电且未连接数据线。控制器 LSI 和 Sil 卡的板载 BIOS 均已禁用,并且 mpt2sas 和 sata_sil 模块已从 Linux debian 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux 内核中删除。mpt2sas 模块在启动后使用 /etc/rc.local 中的 modprobe 命令加载。这 74 个驱动器没有分区,没有格式化,也没有挂载。
系统消耗:
smartctl 工具允许启动长时间的自检 ( smartctl -t long /dev/sda)。但是badblocks,我也可以在驱动器上运行。两者有什么关系?如果 badblocks 检测到坏块,驱动器是否会自动更新其 SMART 值(例如,通过更新其重新定位的扇区数)?坏块可以代替smartctl -t long,反之亦然?
我有一个使用了一个多月的 NAS 设备。它被配置为通过电子邮件发送从硬盘驱动器的 SMART 数据生成的警报。一天后,其中一个硬盘驱动器报告一个扇区损坏并被重新分配。在第一周,这个数字攀升到有问题的硬盘驱动器的六个扇区。一个月后,这个数字达到了 9 个重新分配的扇区。这个速度似乎肯定在减速。
NAS 在 RAID-5 配置中配置了六个 1.5 TB 驱动器。使用如此大容量的驱动器,我预计某个扇区会不时出现故障,因此我并不担心最初的几个扇区何时被重新定位。尽管其他磁盘都没有报告任何问题,但让我感到困扰。
我应该开始担心驱动器的健康状况吗?这可能会因驱动器的容量而异吗?
我刚刚按如下方式配置了 Debian 服务器
apt-get install smartmontools
vi /etc/default/smartmontools - 在这里取消注释这两行
# uncomment to start smartd on system startup
start_smartd=yes
# uncomment to pass additional options to smartd on startup
smartd_opts="--interval=1800"
然后我编辑了 /etc/smartd.conf 并只取消了这一行的注释
DEVICESCAN -S on -o on -a -m myemail@mydomain.com -s (S/../.././02|L/../../6/03)
我想知道这是否足以让系统在出现问题时向我发送警报消息和/或是否有办法模拟问题并查看 smartd 是否通过电子邮件向我发送警告。
几年前,我被告知要像瘟疫一样避免 SMART。原因是测试对驱动器施加的压力实际上会导致它失败。
现在还是这样吗?如果不是,运行测试的合理频率是多少?如果我仍然应该避免它,有什么更好的方法来监控我的硬盘驱动器的健康状况?
我收到了这样的消息/var/log/messages:
Jun 25 06:29:27 server.ru smartd[4477]: Device: /dev/sda, SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 46 to 47
Run Code Online (Sandbox Code Playgroud)
#smartctl -a /dev/sda:
smartctl version 5.38 [i686-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 110 088 006 Pre-fail Always - 28526210
3 Spin_Up_Time …Run Code Online (Sandbox Code Playgroud) smart ×10
hard-drive ×7
smartctl ×4
bad-blocks ×2
linux ×2
hardware ×1
lvm ×1
monitoring ×1
raid ×1
ssd ×1