我家里有一个旧的 P4 盒子,上面有 Ubuntu Server,我将其用作媒体服务器。
除了 IDE 启动驱动器外,还有一个 1TB SATA 磁盘,通过一个便宜的 IDE 转 SATA 适配器连接,例如这个。
该磁盘应该是那些“绿色”磁盘之一,我认为它的转速为 5400RPM。
一段时间内它运行得还不错,但现在(大约 70% 已满)但最近在我的媒体渲染器上播放媒体文件时它开始出现问题(尽管并非总是如此)。起初我以为是我的 WiFi 有问题。
但当我运行 iostat 时,出现了一些奇怪的数字。(顺便说一下,这些数字是在 Twonkymedia 服务器尝试索引磁盘时产生的)
以下是 iostat -dkx 2 的一些典型结果
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.99 0.00 0.00 99.50
... 就这样一直持续下去... 然后:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sdb 0.00 0.00 0.50 0.00 64.00 0.00 256.00 1.58 206436.00 2000.00 100.00
磁盘是否坏了?
好的,我运行 smartctl -a /dev/sdb 并且结果如下:
=== START OF INFORMATION SECTION ===
Device Model: WDC WD10EADS-00M2B0
Serial Number: WD-WCAV50522614
Firmware Version: 01.00A01
User Capacity: 1,000,204,886,016 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sun Feb 7 07:43:21 2010 EST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x84) Offline data collection activity
was suspended by an interrupting command from host.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: (20760) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 239) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x303f) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
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 167 167 051 Pre-fail Always - 910436
3 Spin_Up_Time 0x0027 134 110 021 Pre-fail Always - 6283
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 158
5 Reallocated_Sector_Ct 0x0033 159 159 140 Pre-fail Always - 322
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 2625
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 151
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 34
193 Load_Cycle_Count 0x0032 176 176 000 Old_age Always - 72261
194 Temperature_Celsius 0x0022 112 088 000 Old_age Always - 35
196 Reallocated_Event_Count 0x0032 001 001 000 Old_age Always - 320
197 Current_Pending_Sector 0x0032 192 192 000 Old_age Always - 1388
198 Offline_Uncorrectable 0x0030 200 199 000 Old_age Offline - 22
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 1
200 Multi_Zone_Error_Rate 0x0008 001 001 000 Old_age Offline - 125532
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
然后我运行两个测试,一个简短的测试和一个传送测试。输出如下:
=== 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 Conveyance offline Completed: read failure 90% 2625 1070661197
# 2 Short offline Completed: read failure 90% 2625 1070661197
好的,那么,对于那些感兴趣的人来说:磁盘已经死了。
首先,由于这是一个旧盒子并且只有一个 SATA 到 IDE 连接,所以我不得不取出磁盘并使用主台式机作为 SATA 磁盘之间的传输机器。
我尝试运行 gParted 将分区复制到新磁盘。但默认情况下,它会在复制之前运行 fsck,而且会花很长时间,而且由于它不使用 -C 选项运行,所以两个小时后,你无法知道它在哪里、在做什么或还要花多长时间,所以我取消了它。
然后,我以 LiveCD 的形式启动了 Ubuntu Desktop,并运行 fsck 试图在传输数据之前清理我能清理的东西。这又花了很长时间,但进度条让我确信它正在进展。虽然有时感觉对磁盘的猛烈冲击可能对已降级的磁盘造成的损害大于好处。
当 fsck 完成后,我尝试将文件复制到一个副本中,但这也花了很长时间。我运行 iostat 来检查传输速率,结果发现平均传输速率为 40kB/s,等待时间在 10,000ms 到 60,000ms 之间。
两个小时后,我让 iostat 运行起来,然后同时从磁盘启动多个复制操作。结果好多了,但也不是很好,现在平均传输速率在 100-600kB/s 之间波动。
此时很明显,由于我必须传输大约 800GB 的数据,因此需要 10-20 天的操作才能传输。
我只传输了最新的数据,这耗时大约 16 个小时,此时对服务器再次可用的需求(更不用说我的主桌面了)变得比恢复所有数据的需要更大。
因此我决定将新磁盘放入盒子中,并且由于传输速度太慢,将旧磁盘连接到主桌面并尝试通过 WiFi 传输我可以管理的任何其他数据。
现在问题变成了我的主桌面,因为它运行的是 Windows,所以我安装了 Ext2FSD 来尝试访问数据,但当连接磁盘时,它根本无法启动 - CD 检查后冻结。尝试在 Windows 运行时热插拔它,但它也没有看到它。
因此,此时我将等待另一台带有 SATA 连接器的可用机器,该机器主要不需要用于任何事情,然后让它缓慢地尝试获取它能获取的任何数据,并在磁盘变得无用之前通过网络传输它。
就这样吧,我想让大家知道,以供将来参考。
我将最终状态作为问题的附录发布,而不是答复,以便对第一个答案打勾。
谢谢大家的建议。
答案1
“打嗝”是什么意思?它是一种声音,还是一种行为?
我会使用 SMART 实用程序查看磁盘级诊断程序,看看发生了什么。如果那里有很多读取错误或其他迹象表明磁盘快要坏了,它们应该会在那里显示出来。
顺便说一句,如果您指的是 WD“绿色”硬盘,那么它们不仅仅涉及低功率。它们甚至可能使用替代格式,这对于 Windows 来说没问题,但对于其他操作系统来说(一旦执行)就很糟糕。