[ 已解决 ]opensuse 的电源管理有问题??笔记本电脑硬盘 lcc 值上升过快。

揍你,SSD 哪来的磁头!

科普来了
baike.baidu.com/view/4124777.htm
AAM:Automatic acoustics-management ,即自动声音管理。硬盘的噪音大多由于本身的震动和磁头的不断操作产生,换言之在相同的环境下,同类硬盘的转速越高,噪音越大。为了解决这一问题,不少厂商为硬盘提供了声音管理功能,硬盘通过 AAM 的调节,在安静模式 / 高性能模式中调节以满足用户的需求。也就是牺牲部分性能换来静音。
APM:Advanced Power Management,这里特指 硬盘高级电源管理 。为了省电,在硬盘没有读取操作的时候, 就将磁头复位。(这 APM 不和 WD 的 IntelliPark 一个性质嘛)
APM(0~255) 设置为 0,表示完全开启,硬盘连续 8 秒没有读写,磁头会复位;设置为 255 表示,关闭 APM,磁头除了在开关机时复位,其他时间不复位。
AAM(128~254) 设置为 128,表示适当降低转速,换取静音;设置为 254 表示不降低转速。
这样,我们就明白了。将 APM 设置为 255 就可以避免磁头复位(相反,耗电和发热可能增加),因此 C1 值就不会再增加。同时,那些可能由于磁头复位造成的“咔咔”声和游戏、视频时的卡顿现象也可能得到解决(实际效果待大家反馈了);将 AAM 设置为 128 可以略微降低因转速高而产生的噪音,也可以减少耗电和发热。

哎哟!疼!…QAQ

我也是 128,我也不懂。。。不过我估计问题应该不大吧。。。我现在坚信 openSUSE 的默认设置。。。话说 google 了后有个办法就是换 SSD。。。。

60 万次硬盘就会挂了,这个应该是 bug。因为以前 ubuntu 就出过,linuxtoy 也报道过。解决方法有点麻烦。我也是偶尔查下 smart 才发现的 LCC 读数太高了,现在已经去到 1 万多了,去年十月份才买的。台式机用了三年才三千次。

原来是这样,楼主说得是这篇文章么?

linuxtoy.org/archives/ubuntu-harddisk.html

我没看到其它方法了,可以先尝试一下。。。。我抽空也测试一下。。。。

文中是这样说的

我的本本,插上电源时是 254,拔了电源后是 128。这么说来,我的是正常的么?

sudo ./smartctl -A /dev/sda | grep Load_Cycle_Count
225 Load_Cycle_Count        0x0032   034   034   000    Old_age   Always       -       674085




sbin  sudo ./hdparm -B /dev/sda

/dev/sda:
 APM_level      = off

照这么说我的 off 是很安全的啦?

但这个 1TB 的机械硬盘是我 11 年 12 月刚换上的。也已经 67w 次了。而且最关键的是它没坏。硬盘是西部数据的。

另外这种东西既然研究了就不妨研究的深入透彻一些。看中文炒冷饭甚至以讹传讹没意思。

据我 google 看到的内容总结了一下,大概以下几点:

  1. openSUSE 是最早发现这个问题的,要早于 Ubuntu,甚至我们的这个 wiki 页面:

old-en.opensuse.org/Disk_Power_Management

被好多其它发行版(Ubuntu)引用来作为修复该问题的依据。看你们都还在翻 08/09 年的老文,所以澄清下,你们现在纠结的问题是我们几年前发现的。

我们在 11.0 里就一度修复过这个问题:

bugzilla.novell.com/show_bug.cgi?id=386555

但是在 11.4 中又移除了该修复,因为它给用户造成的问题比硬盘寿命降低更大 (more dangerous than useful):

bugzilla.novell.com/show_bug.cgi?id=663067

  1. 硬盘的 load cycle count 是硬盘磁头挂起到滑道中的次数,这个问题有两面性:

挂起到滑道的次数越多,越伤磁头 ; 挂起到滑道的次数越少,越容易损坏硬盘磁碟中的数据,甚至刮出坏道。(机械硬盘的内部跟老式唱片机是一样的)

而这个挂起间隙是由硬盘制造商出厂前来设定的,跟 openSUSE 乃至整个 Linux 都没有关系:

howtoeverything.net/linux/hardware/why-some-hard-disks-wont-spin-down-hdparm

bugzilla.novell.com/show_bug.cgi?id=816388

比如西部数据是 8 秒,日立也很短,这可能是他们的侧重点在于数据的安全性而不是硬盘的寿命造成的(西部数据的 1TB 笔记本机械硬盘在淘宝卖不到 600,能用两年以上,一天一块钱不到,我 07 年的日立现在也还能用); 而 APM 是 Linux 的内核 ATA 驱动提供的一个 hack,它也有局限,对一些厂商的硬盘就毫无办法,人家把电源(AC/Battery 切换)和声音(parking 磁头时的咔哒声)管理硬编程到硬盘固件中,显示的是跟 SSD 一样的 not supported,而另一些厂商的硬盘则成为了 ATA 驱动已知的老大难问题:

ata.wiki.kernel.org/index.php/Known_issues#Drives_which_perform_frequent_head_unloads_under_Linux

但即使没有问题,使用 ATA 驱动来 hack 也是很脏的一个 hack。

因为那是你的硬盘硬件乃至设计目的的问题。

正如 openSUSE 的开发者在 bugzilla 所说:

「没有一个值是通吃的。有些厂家要 255 才行,有些要 254,有些 128 就够了。」

言下之意就是:这个值设的越大,你冒的风险就越大。你硬盘的理论寿命提升到 10 万年,笔记本电脑猛得歪一下数据丢一半,又有什么意义呢。看开发者的意思是宁可承担「openSUSE 杀硬盘」,也不承担「openSUSE 丢数据」的骂名。更何况该骂名本来就该由厂家来承担,「安全但不耐用」和「长寿但爱坏」两害相权的问题。

  1. 为什么同样的厂家设置,Windows 的 LCC 升得慢?

好多人包括我的第一感觉在内,是「卧槽 openSUSE 粗大事了」。

但实际上这是 Linux 文件系统的设计问题。Ext3/Ext4/Btrfs 等文件系统有 Journal 日志功能,每 3 到 4 秒就会唤醒磁盘一次,即使你在休眠 / 挂起。而如果你的 APM 是默认的 8 秒,ok,那你 LCC 增加得可快了,刚 park 磁头又被叫回来。

Windows 的 NTFS/FAT 文件系统没有 Journal 功能。直接表现就是:Windows 唤醒很慢。

================================================================

大环境摆在这里,现在的问题就是:

  1. 你对机械硬盘价格的接受程度如何?如果每天一块钱比较 Okay 的话,那就不用管。

  2. 如果不 Okay 的话,笔记本是拿来供着的,或者真的很穷,那你可以查 ata wiki 看你的硬盘 parking 时间是否厂家设置太短,然后自行参考 old-en 的 workaround 去冒险~

正确的解决方法应该像这个里面说的那样:

bugzilla.novell.com/show_bug.cgi?id=816388

找问题多的硬盘厂商,提供建议,由 openSUSE 来修。

PS:我贴的那些链接我自己也还没时间看完。可能说的有偏差,见谅。

日立 1T 使用了 2 个月,数值是 63127, 如果按照 60W 的标准,两年都用不到。

:nauseated_face:



60W 就会挂??……另外那个 754 的已经使用已经用了四五年了~这都是啥数据啊~ :sweat:

首先膜拜下苏姐的钻研精神 m<(_ _)>m

其次,并不是所有的硬盘 60w 都会挂。只是部分笔记本硬盘出现了这个问题,于是就出现了这样的叫嚣。

因为笔记本要经常移动,有可能在移动过程中伤害磁盘,所以 APM 值设置的高一点应该也是为了这个原因。ThninkPad 笔记本都有主动式硬盘保护系统,也是在检测到震动的时候会暂时关闭硬盘。因为现在普遍的认知是:数据是无价的——为了数据安全几块硬盘并不算什么。

附上服务器上的一块西数企业级硬盘数据。已经运行了 2w 多小时,lcc 依然不到三位数。

smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-39-generic-uksm0.1.2.2] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== 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     0x000f   200   200   051    Pre-fail  Always       -       3
  3 Spin_Up_Time            0x0003   211   185   021    Pre-fail  Always       -       4416
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       27
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000e   200   200   051    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   071   071   000    Old_age   Always       -       21836
 10 Spin_Retry_Count        0x0012   100   253   051    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0012   100   253   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       27
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       95
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       97
194 Temperature_Celsius     0x0022   107   102   000    Old_age   Always       -       43
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   168   168   051    Old_age   Offline      -       2186

而这块硬盘的 APM 显示是 Not supported.

Thinkpad 的主动式硬盘保护需要安装一个软件支持的,支持系统是 windows 哦。 think.lenovo.com.cn/support/driver/detail.aspx?DEditid=4993&docTypeID=DOC_TYPE_DRIVER&osid=234&treeid=3107518&args=%3Fcategoryid%3D3107518%26CODEName%3D3259B73%26SearchType%3D1%26wherePage%3D1%26SearchNodeCC%3D3259B73
在 Linux 应该无效吧。
所以是说不要管硬盘 apm 的配置值吗?恩,ssd 果然才是主角!

ssd 如果数据挂了是没有可能恢复的吧。

  1. SSD 挂了数据就全完了。

  2. ThinkPad 的 APS 是支持 Linux 的。需要安装 tp_smapi 和 hdapsd

1赞

为了避免移动过程中伤害磁盘,APM 应该是设置低一点吧。

同学… 台机硬盘没有暂泊磁头的设置呦,只有开关机才会增加 LCC 次数。然后你偏偏还是个关机就是事故的服务器… 讲什么好呢…

得了吧,如果只是有开机才会增加 LCC 俺的那块 LCC70W+ 的盘是个啥情况,那得开关多少回机~

还有 suspend to ram/disk 以及 resume。

PS:说话客气点会死?说人不行你学阿苏找证据啊,你那块硬盘你得问你干什么了。

使用su -c 'hdparm -B 254 /dev/sda’可以设置APM_level值,但这样做不持久,每次重新启动系统就又变回原来的值,可以通过安装laptop-mode,然后修改/etc/laptop-mode/laptop-mode.conf中的

Power management for HD (hdparm -B values)

BATT_HD_POWERMGMT=128

LM_AC_HD_POWERMGMT=254

NOLM_AC_HD_POWERMGMT=254

这样做以后可以解决比如硬盘老响问题,并修改hdparm -B valuse