Ubuntu的load/unload cycles损伤硬盘的问题

本文探讨了Ubuntu操作系统在笔记本电脑上可能导致硬盘损伤的问题,解释了Load/unload cycles的概念,提供了诊断和解决方法,包括如何使用smartmontools检查硬盘状态、设置AdvancedPowerManagement为禁用,以及通过调整Laptop-mode配置来保护硬盘寿命。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu的load/unload cycles损伤硬盘的问题

来源: 何露凡的日志

前段时间跟CC争论了一个关于Ubuntu损伤硬盘的问题,今天上网了解下,这个问题确实存在于大部分的笔记本电脑中,在IBM ThinkPad Z60m/T43、HP Compaq nw9440等笔记本上都已确认了这一bug,广大的笔记本&&ubuntu用户要注意了啊!由于我2年前的正确选择,我的电脑幸免于难,原因很简单,因为我的是台式机,闲话少说,下面附上一网友的解决方案:

链接:http://brucebot.blogbus.com/logs/17373564.html

 

今天很累也很困了,但是在浏览文章中发现了Ubuntu如果设置不好,会损坏甚至毁坏笔记本硬盘的问题,于是决定将这篇文章看完并写下这篇文章。这里就是看到的第一篇文章<Ubuntu电源管理问题的说明和解决方案>, 看完之后对这个所谓的Load/unload Cycle还不是很了解,于是就做了一些调查,并且发现这个问题已经发给官方了,具体BUG Report可以在这里看到(https://bugs.launchpad.net/ubuntu/+bug/104535)。请看上图,所谓的 load/unload cycle就是slider与硬盘盘片接触的周期,每一个硬盘出厂前都会有这么一个参数是固定的,也就是当硬盘快接近这个出厂参数时,就意味着这块硬盘已 经接近报销的边缘。在西部数据官方上找到我的硬盘的相关参数信息,里面就有一个是Load/unload cycles at ambient condition 600,00(DATA Sheet),也就是说,我的硬盘的寿命取决于现有使用的这个参数值与官方值是否接近,具体查看及设置方法如下:

  • 安装smartmontools,因为需要名为smartctl的来检查相关的信息
    sudo apt-get install smartmontools
  • 启用硬盘SMART监控功能
    sudo smartctl -s on /dev/sda
    brucebot@brucebot-laptop:/etc/laptop-mode$ sudo smartctl -s on /dev/sda
    smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
    Home page is http://smartmontools.sourceforge.net/

    === START OF ENABLE/DISABLE COMMANDS SECTION ===
    SMART Enabled.

    注:/dev/sda请选择你的硬盘,如果是IDE的,则是/dev/hda
  • 查看当前硬盘的详细状态
    sudo smartctl -d ata -A /dev/sda
    brucebot@brucebot-laptop:/etc/laptop-mode$ sudo smartctl -d ata -A /dev/sda
    smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
    Home page is 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   199   197   051    Pre-fail  Always       -       426
      3 Spin_Up_Time            0x0003   185   180   021    Pre-fail  Always       -       1733
      4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       450
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail  Always       -       0
      9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       480
     10 Spin_Retry_Count        0x0013   095   095   051    Pre-fail  Always       -       23
     11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
     12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       263
    192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       153
    193 Load_Cycle_Count        0x0032   195   195   000    Old_age   Always       -       15977
    194 Temperature_Celsius     0x0022   108   099   000    Old_age   Always       -       39
    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   100   253   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
    200 Multi_Zone_Error_Rate   0x0009   100   253   051    Pre-fail  Offline      -       0
    请看,红色的即为我的硬盘的load/unload cycles看起来,已经有了四分之一多了,也就是说这块硬盘的四分之一寿命已经没有了。
    当 然,如果仅仅想知道这个参数,可以使用sudo smartctl -a /dev/sda | grep Load_Cycle_Count仅仅导出这个参数。如果你安装了Ubuntu,并且没有经过相应的设置,再次执行上面的命令 后,load_Cycle_count的数值会不断增大。 Ubuntu默认不会改动内置的参数,笔记本硬盘内置的自动进入低耗状态的参数过于严厉,导致频繁的Load/Unload,其他系统则无视或者不使用硬 盘的这一功能,反而保护了硬盘的寿命。也就是说,只有Ubuntu存在这个问题。
  • 解决方法
    1. 关闭高级电源管理模块(Advanced Power Management setting)
      Sudo hdparm -B 255 /dev/sda
      brucebot@brucebot-laptop:/etc/laptop-mode$ sudo hdparm -B 255 /dev/sda

      /dev/sda:
       setting Advanced Power Management level to disabled
    2. 使用laptop-mode-tools
      • Sudo apt-get install laptop-mode-tools
      • 查看Laptop-mode是否启动
        grep ENABLE_LAPTOP_MODE /etc/default/acpi-support
        brucebot@brucebot-laptop:/etc/laptop-mode$ grep ENABLE_LAPTOP_MODE /etc/default/acpi-support
        ENABLE_LAPTOP_MODE=false
      • 启动laptop-mode
        sudo cp /etc/default/acpi-support /etc/default/acpi-support_backup
        sudo gedit /etc/default/acpi
        找到ENABLE_LAPTOP_MODE=false,并且将其设置成true

 

 

 

 

### Scan Chain 的加载与卸载过程 在数字设计领域,扫描链(Scan Chain)是一种用于测试集成电路的技术。通过将电路中的触发器串联成一条链路,在测试模式下可以方便地加载测试向量并捕获响应数据。以下是关于扫描链加载和卸载过程中涉及的关键概念和技术细节: #### 加载与卸载的核心流程 扫描链的操作通常分为以下几个阶段:初始化、加载测试向量、捕获响应以及卸载结果。 - **加载测试向量** 测试向量被串行输入到扫描链中,这一过程称为“Shift”。在此期间,每个触发器的状态会被依次更新为所需的测试值[^1]。为了确保测试的有效性,加载操作需要精确控制时钟信号和其他辅助条件。 - **捕获响应** 当测试向量完全加载完毕后,进入正常功能模式(Functional Mode),此时电路运行实际逻辑运算,并将输出结果存储回扫描链内的触发器中。此步骤被称为“Capture”,即捕捉目标节点的行为状态。 - **卸载结果** 完成 Capture 后重新切换至测试模式,将保存的结果从扫描链中逐位读取出来以便后续分析处理。这个动作同样依赖于 Shift 操作来实现数据外送。 上述三个环节会不断重复执行直到整个测试完成为止。 #### 解决常见问题的方法论 尽管 scan chain 技术极大简化了复杂芯片的功能验证工作,但在具体实施过程中仍可能遇到一些挑战,比如性能瓶颈或者资源冲突等问题。下面列举了几种典型情况及其应对策略: - **带宽不足** 如果发现由于序列化带来的负面影响降低了整体吞吐率,则可以通过优化协议结构减少开销,从而逆转这种消极效应;另外还可以探索增加总线宽度等方式提升传输效率[^2]。 - **错误诊断困难** 面对难以定位缺陷的情况,可借助专门工具如 `ScanPBNJ` 来管理大规模网络映射任务下的探测活动记录数据库[^3]。该软件允许用户定义灵活的任务调度计划并将获取的信息持久化存档供进一步审查之用。 ```python def simulate_scan_chain(test_vectors): """ Simulate the loading and unloading processes of a scan chain. Args: test_vectors (list): A list containing binary values representing test vectors. Returns: str: The captured output after processing all input vectors. """ result = "" for vector in test_vectors: # Load phase simulation current_state = apply_test_vector(vector) # Functional mode execution & capture response next_state = execute_functional_logic(current_state) # Unload phase simulation by shifting out data extracted_data = extract_output(next_state) result += extracted_data return result def apply_test_vector(vector_value): pass # Placeholder function to represent applying one test vector into scan chain. def execute_functional_logic(state_input): pass # Placeholder function simulating real logic operations based on given state. def extract_output(final_state): pass # Function responsible for reading outputs from final states during unload cycle. ``` 以上代码片段展示了如何模拟一次完整的扫描链运作周期——包括应用单个测试矢量、经历功能性计算部分再到最终提取外部可见的数据流这三个主要组成部分。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值