ubuntu对硬盘的“Load/Unload Cycle威胁”分析及官方解决办法,以及网上其它解决方法的评价。

Ubuntu系统存在导致硬盘频繁进行Load/UnloadCycle动作的bug,这会大幅缩短硬盘寿命。通过创建并放置一个名为99-fix-park.sh的脚本文件到指定目录中,可有效避免这一问题。

由于ubuntu本身的问题,会导致大部分硬盘在使用过程中出现大量Load/Unload Cycle(磁头复位)动作,大概2-3次/分钟。

而一个硬盘正常使用过程中 ,基本上一天也不会出现几次Load/Unload Cycle,而ubuntu的这个bug会使得本来可以忽略不计的Load/Unload Cycle变成巨大系统隐患,直接缩短硬盘寿命(通常硬盘可以Load/Unload Cycle 600,000次,然后就Over了)。

以上不是危言耸听,这就像早期BT下载软件会加重硬盘磁头负担一样(后来的BT软件都有缓存功能,就是为了减少硬盘读取次数),是有根据的。

https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695

https://wiki.ubuntu.com/DanielHahler/Bug59695

都有问题的分析及解决方法。不过是e文滴。一下是官网的wiki的解决方法部分原文。

Force hdparm values in acpi hooks

Gilles posted the following workaround: Create a file called 99-fix-park.sh (keep the '99-' and the '.sh', but you can name the file as you like otherwise) with the following two lines:

 #!/bin/sh
 hdparm -B 254 $HDD

and copy it to the following directories: /etc/acpi/resume.d/ and /etc/acpi/start.d/

([WWW] https://launchpad.net/ubuntu/+source/acpi-support/+bug/59695/comments/10)

简单的说,就是在ubuntu的 etc/acpi/resume.d/ 和 /etc/acpi/start.d/ 目录里放一个 99-fix-park.sh 文件(99-xx-xx.sh,xx部分可以随便写),内容就是那两行了。然后系统启动时会执行这个命令,这样就不会去做不必要的Load/Unload Cycle了,当然一天还是会有几次的,不过足以忽略掉了。

当然,那两个目录都是有权限限定的。

还是进入终端,输入 su ,回车,然后输入root密码,这样就获取了root权限,可以对/etc目录操作。

cd /Desktop进入桌面,然后在桌面建立那个文件,再用 cp xxx(文件名)  /etc/acpi/resume.d/

以及 cp xxx(文件名)  /etc/acpi/start.d/ 把文件复制过去(如果没有root权限,是无法复制的)。

然后可以删掉桌面的那个文件,去etc目录里看看是不是复制过去了。

 

注:网上有的地方说要复制到三个文件夹,且文件内容不是 hdparm -B 254 $HDD,关于这个,上面两个帖子都有讨论,如果是内容是255(理论最大值),则程序可能不会被执行(硬盘电源管理被关闭),如果复制到三个文件夹而不是上面两个,那么会有副作用。所以,相信官网的wiki,就按上面办。

然后,要是有时间,可以AIDA等系统硬件查看工具去看看自己的硬盘已经有了多少小时,启动过多少次,已经Load/Unload Cycle了多少,然后可以估计一下离变成咔咔咔的“拖拉机”还有多久。

 

### 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. ``` 以上代码片段展示了如何模拟一次完整的扫描链运作周期——包括应用单个测试矢量、经历功能性计算部分再到最终提取外部可见的数据流这三个主要组成部分。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值