我正在使用SmartMonTools测试硬盘。
测试前的硬盘状态(几天前仅进行了一次简短的测试):
$ sudo smartctl -l selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 5167 -
Run Code Online (Sandbox Code Playgroud)
所以我开始了漫长的测试:
$ sudo smartctl -t long /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian …Run Code Online (Sandbox Code Playgroud) tl; dr:我将如何修复 RAID1 阵列中 1 个磁盘上的坏块?
但是请阅读整篇文章,了解我已经尝试过的内容以及我的方法中可能存在的错误。我已经尝试尽可能详细,我真的希望得到一些反馈
这是我的情况:我在 RAID1 阵列中设置了两个 2TB 磁盘(相同型号)mdadm。大约 6 个月前,当 SMART 报告它时,我注意到了第一个坏块。今天我注意到了更多,现在正在尝试修复它。
这个 HOWTO 页面似乎是每个人都链接到的一篇文章来修复 SMART 报告的坏块。这是一个很棒的页面,充满了信息,但是它已经过时了并且没有解决我的特定设置。这是我的配置的不同之处:
所以,让我们开始吧。这是我所做的,但是它似乎不起作用。请随时仔细检查我的计算和方法是否有错误。磁盘报告错误是/dev/sda:
# smartctl -l selftest /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-3.4.4-2-ARCH] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed: …Run Code Online (Sandbox Code Playgroud) 有时我在启动我的计算机(运行 Debian)时遇到奇怪的麻烦。所以我发出了“dmesg”命令。在它的输出中,我看到了很多错误。但是,当我在硬盘上运行扩展 SMART 测试时(使用“smartctl -t long /dev/sda”命令),结果是我的磁盘没有损坏。
这些错误的原因是什么?
以下是错误:
(...)
[ 505.918537] ata3.00: exception Emask 0x50 SAct 0x400 SErr 0x280900 action 0x6 frozen
[ 505.918549] ata3.00: irq_stat 0x08000000, interface fatal error
[ 505.918558] ata3: SError: { UnrecovData HostInt 10B8B BadCRC }
[ 505.918566] ata3.00: failed command: READ FPDMA QUEUED
[ 505.918579] ata3.00: cmd 60/40:50:20:5b:60/00:00:0b:00:00/40 tag 10 ncq 32768 in
res 40/00:54:20:5b:60/00:00:0b:00:00/40 Emask 0x50 (ATA bus error)
[ 505.918586] ata3.00: status: { DRDY }
[ 505.918595] ata3: hard resetting link
[ …Run Code Online (Sandbox Code Playgroud) 我有一个外部硬盘驱动器,它没有正确报告 SMART 信息(它给出了无意义的结果)。
因此,smartd守护程序( 的一部分smartmontools)不断发出有关设备可能出现故障的错误警报。
在/etc/smartmontools/smartd.conf(我在这里使用默认值)中,我看到了一堆选项,但没有一个与我的需要相关(忽略特定硬盘驱动器的警报 - 我希望能够通过 USB ID 等引用它,因为/dev如果我连接了更多设备,则输入会有所不同)。
我可以编辑/usr/libexec/smartmontools/smartdnotify(smartd事件发生时调用的脚本)并手动强制它关闭该特定设备,但我想知道是否有一种不那么丑陋的方法来做到这一点。
如何smartd不报告特定硬盘的任何警告?我不喜欢禁用该守护程序; 我希望它不关心这个特定的硬盘。
我有三个相同的SATA / 600 3TB硬盘的服务器:/dev/sda,/dev/sdb,/dev/sdc。使用 GPT 对驱动器进行分区,每个分区具有三个分区:
三个驱动器中的一个是热备份,另外两个在 RAID 组中处于活动状态。它工作正常,我可以在断开任何单个硬盘驱动器后启动。我想使用smartd(smartmontools 的一部分)来监控驱动器的健康状况并向 syslog(我使用logcheck监控)报告错误。该服务器应具有尽可能高的可用性,但在测试期间性能下降是可以接受的。
这是输出smartctl -a /dev/sda:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD30EZRX-00MMMB0
Serial Number: WD-WMAWZ0412093
LU WWN Device Id: 5 0014ee 2b19fbdcd
Firmware Version: 80.00A80
User Capacity: …Run Code Online (Sandbox Code Playgroud) 我想随着时间的推移开始存储 SMART 数据,并根据磁盘 ID/序列号查看任何趋势。例如,可以让我每天从磁盘中获取一次智能信息并将其放入数据库中。Linux 中是否已经有用于此的工具,还是我必须自己推出?
我有一个外部 USB 驱动器,在运行命令时会给出以下输出
$ smartctl /dev/sdb -H
Run Code Online (Sandbox Code Playgroud)
在上面:
SMART Status not supported: Incomplete response, ATA output registers missing
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.
Run Code Online (Sandbox Code Playgroud)
您能详细说明一下这是值得担心的事情还是只是一个错误的设置吗?一般来说,简化形式的健康状况是什么意思?
也许作为一个相关的旁白:短期和长期测试都没有问题地完成。
我使用最近购买的 1T Seagate Backup Plus Slim 外置硬盘ID 0bc2:ab24 Seagate RSS LLC(NTFS 文件系统)作为备份工具。我想在此磁盘上运行 Smartmontools 软件,但是当我尝试使用以下命令启用它时
smartctl -s on -d scsi /dev/sdb (as a root)
Run Code Online (Sandbox Code Playgroud)
我得到以下回复:
smartctl 6.6 2016-05-31 r4324 [i686-linux-4.15.0-23-generic] (local b$
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontoo$
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
Informational Exceptions (SMART) disabled
Temperature warning disabled
Run Code Online (Sandbox Code Playgroud)
事实上,当我尝试跑步时
smartctl -all -d scsi /dev/sdb
Run Code Online (Sandbox Code Playgroud)
输出是:
smartctl 6.6 2016-05-31 r4324 [i686-linux-4.15.0-23-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF …Run Code Online (Sandbox Code Playgroud) smartd会很高兴地记录这样的消息:
Sep 2 12:33:59 Watt smartd[438]: Device: /dev/sda, 2 Offline uncorrectable sectors
Sep 2 12:34:01 Watt smartd[438]: Device: /dev/sdc, 16 Currently unreadable (pending) sectors
Sep 2 12:34:01 Watt smartd[438]: Device: /dev/sdc, 16 Offline uncorrectable sectors
Run Code Online (Sandbox Code Playgroud)
这些都用于 mdraid 阵列,因此可以通过 mdraid 清理阵列轻松修复。但这需要很长一段时间(并且会损害性能)。选择性地仅擦洗需要的部件会快得多。
有没有办法从磁盘获取待处理扇区列表?我在 中没有看到任何内容smartctl -x,但这里是sda和sdc,以防有帮助。(是的,sdc 很快就会被替换。)如果我可以获得扇区列表,我可以将其提供给 mdraid 以仅擦除那些部分。
这些都是SATA磁盘。如果重要的话,机器正在运行 Debian 测试/不稳定。但我很想在运行 Debian stable 和 oldstable 的机器上解决这个问题。
我设置 smartd 来向我发送邮件报告,以防我的磁盘出现故障。不幸的是,我每天都会收到具有相同(不变)值的相同属性的垃圾邮件:
The following warning/error was logged by the smartd daemon:
Device: /dev/sdb [SAT], 1 Offline uncorrectable sectors
Device info:
ST32000542AS, S/N:XXXXX, WWN:5-XXXXXX-XXXXXXXX, FW:XXXX, 2.00 TB
Run Code Online (Sandbox Code Playgroud)
我完全意识到具有不可纠正扇区的磁盘所隐含的危险。(此磁盘用于 RAID10 配置)
我只是不想每天收到相同的电子邮件,我只想在值发生变化/增加时收到一封电子邮件。
这是我的当前配置/etc/smartd.conf:
DEVICESCAN -d removable -n standby -t -m root -M exec /usr/share/smartmontools/smartd-runner
Run Code Online (Sandbox Code Playgroud)
为了实现 smartd 的预期行为,我必须改变什么?
我刚刚意识到我的一些硬盘有一个巨大的 Load_Cycle_Count在读取他们的 SMART 数据时。有些人在失败之前很短,我问自己为什么会这样,如果我能做些什么来防止他们死亡。
alex@ga-P55A-UD5:~$ sudo smartctl -a /dev/sdb smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-142-generic](本地构建) 版权所有 (C) 2002-16,Bruce Allen,Christian Franke,www.smartmontools.org === 信息部分开始 === 型号系列:西部数据鱼子酱绿色(AF) 设备型号:WDC WD10EARS-00Y5B1 [...] 具有阈值的供应商特定 SMART 属性: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 4 Start_Stop_Count 0x0032 090 090 000 Old_age Always - 10281 9 Power_On_Hours 0x0032 062 062 000 Old_age Always - 28456 193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 611460
alex@ga-P55A-UD5:~$ sudo smartctl -a /dev/sdc smartctl 6.5 2016-01-24 r4214 …
我刚刚在带有 NVMe 驱动器的服务器上设置了 CentOS 7,但很惊讶无法smartctl在它们上运行:
# smartctl -a /dev/nvme0
/dev/nvme0: Unable to detect device type
Please specify device type with the -d option.
# smartctl -a /dev/nvme0 -d nvme
/dev/nvme0: Unknown device type 'nvme'
Run Code Online (Sandbox Code Playgroud)
然后我注意到 CentOS 附带 Smartmontools 版本 6.2,而Smartmontools 从版本 6.5 开始支持 NVMe。
如何在 CentOS 7 上将 Smartmontools 升级到 6.5 版?
他们的下载页面仅提供适用于 CentOS 7 的 Smartmontools 6.2。
理想情况下,我不想从源代码编译,我更喜欢 RPM,或者更好的第三方存储库,其中包含最新的 Smartmontools,以获得定期更新。
如果您知道另一个工具(最好包含在 CentOS 7 中),我也愿意接受建议,它可以让我从 NVMe 驱动器获取 SMART 信息。
2013年,我使用了一个程序来分析硬盘并提供有关硬盘的详细而深入的信息。但是,该程序CrystalDiskInfo仅适用于 Windows。
是否有类似于 CrystalDiskInfo 的 GUI 来显示基于 SMART 特性的信息?
我正在专门寻找使用时间来估计笔记本电脑工作了多少小时。
我在 DELL inspiron 1546 上运行 Linux Mint 18.3 Sylvia 64 位 - MATE 1.18
smart ×13
hard-disk ×8
smartctl ×6
external-hdd ×2
badblocks ×1
centos ×1
disk ×1
disk-usage ×1
hardware ×1
linux-mint ×1
mdadm ×1
nvme ×1
raid ×1
raid1 ×1
sata ×1