机械硬盘 运行 linux 很慢,如果读写硬盘操作有问题,假死机、很慢等,就检查一下硬盘坏道...

本帖最后由 tonyliu2ca 于 16-3-28 11:12 编辑

这个问题要是写出来有时一个大块文章,咱们这里简单说说。

现代的硬磁盘技术已经相当成熟和智能,成熟并不是说就不是好就是坏,磁盘的状态可能是健康、好、可能坏、变好了、正在变坏,坏了等等。之所以不是我们所想象的非好即坏,是其智能话的结果,也就是S.M.A.R.T.技术,也简写SMART。

检查一个硬盘状态,有两个基本操作:表面扫描和检查SMART状态、让SMART检测并报告。

下载

然而问题是,OSX只支持最简单的SMART检测,要想使用上面的两个操作,需要第三方程序。放心我们这里介绍的是开源的,不要钱。如果你不差钱,那就使用商业软件如TechTool Pro等。第三方开源软件是Linux版,传统方法需要使用MacPort等软件来在本地编译以形成本地可执行的OSX版本。不过对于,大多数用户来说,我提取了其中的最最核心的部分,供大家直接下载安装,主要是第一个,第二个的用法后面有解释:

badblocks_1_42.dmg下载:链接:http://pan.baidu.com/s/1Zx5oi 密码:z85t

OS-X-SAT-SMART-Driver-master.zip链接:http://pan.baidu.com/s/1gebVfgR 密码:gtsn

具体使用,要想讲清楚也很麻烦,我们只简单说说.

磁盘表面扫描:

首先使用命令:$ diskutil list来找到所要检测目标盘/分区的设备名,比如/dev/disk1s2

然后卸载该盘/分区: $ diskutil unmount disk1s2

这是就可以检测了:$ badblock -ns /dev/disk1s2碰上坏扇区,它会显示

检查SMART状态:

注意,应为OSX内置的USB等外置设备不支持SMART数据传输,所以需要使用第三方的驱动,也就是上面第二个下载。

SMART状态时针对整个硬盘的,它不管什么分区。

获得目标硬盘的SMART信息:$ smartctl -i disk1

读取重要的SMART的计数器信息:$ smartctl -A disk1

读取更详细的SMART信息:$ smartctl -a disk1

我们最关心的计数器是下面几个:

SMART 005(0x05) - Reallocated Sectors Count:是并被成功重新分配了的坏扇区计数。每个厂家的不同型号硬盘都可能会有一个保留扇区池,这个池中会有不同数量的扇区以供重分配,如果池中所有的都被使用了,那么再有坏扇区就无法分配。这个数值太大就会有问题。

SMART 187(0xBB) - Reported_Uncorrectable_Errors:对于读取的区块的硬件ECC校验错误的计数。一般应该为0,如果非零,就该考虑换硬盘了。

SMART 188(0xBC) - Command_Timeout:硬盘命令超时而放弃的计数。正常值应该是0,如果远大于0,那么可能是电源或者数据线有问题。

SMART 197(0xC5) - Current Pending Sector Count:这些“不稳定”扇区,有可能使用写操作使其恢复读写校验正常,这样他们就会被从这个技术中减去。如果写操作也失败,那么固件程序就可能会对其重分配。

SMART 198(0xC6) - Offline_Uncorrectable:读写扇区数据错误的总计数。正常值为0,否则说明此硬盘的磁盘表面或者机械可能出现问题。

我们还可以让硬盘内的固件程序进行自检:

比如:$ smartctl -t long disk1

或者:$ smartctl -t short disk1

一个坏盘的例子:

下面的WHEN_FAILED中的FALLING_NOW说明磁盘需要换了

$ smartctl -A disk2

smartctl 6.4 2015-06-04 r4109 [x86_64-apple-darwin14.4.0] (local build)

Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org

=== 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     0x000e   107   086   006    Old_age   Always       -       189521545

3 Spin_Up_Time            0x0003   100   099   000    Pre-fail  Always       -       0

4 Start_Stop_Count        0x0032   097   097   020    Old_age   Always       -       3299

5 Reallocated_Sector_Ct  0x0033   026   026   036    Pre-fail  Always   FAILING_NOW 1521

7 Seek_Error_Rate         0x000f   076   060   030    Pre-fail  Always       -       49575918

9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       1637

10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0

12 Power_Cycle_Count       0x0032   097   097   020    Old_age   Always       -       3241

184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0

187 Reported_Uncorrect     0x0032   001   001   000    Old_age   Always       -       3036

188 Command_Timeout        0x0032   100   099   000    Old_age   Always       -       64425492496

189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0

190 Airflow_Temperature_Cel 0x0022   079   059   045    Old_age   Always       -       21 (Min/Max 21/21)

191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       538

192 Power-Off_Retract_Count 0x0032   098   098   000    Old_age   Always       -       4798

193 Load_Cycle_Count        0x0032   065   065   000    Old_age   Always       -       70066

194 Temperature_Celsius     0x0022   021   041   000    Old_age   Always       -       21 (243 52 0 0 0)

195 Hardware_ECC_Recovered  0x001a   054   049   000    Old_age   Always       -       189521545

197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       5

198 Offline_Uncorrectable  0x0010   100   100   000    Old_age   Offline      -       5

199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0254 Free_Fall_Sensor        0x0032   001   001   000    Old_age   Always       -       2927

买个关子回复可看,详细的看知乎文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值