hdparm - 获取/设置硬盘参数
总览
hdparm [ -a [扇区数] ] [ -A [0|1] ] [ -c [芯片组模式] ] [ -C ] [ -d [0|1] ] [ -f ] [ -g ] [ -i ] [ -k [0|1] ] [ -K [0|1] ] [ -L [0|1] ] [ -m [扇区数] ] [ -p [0|1|2|3|4|5] ] [ -P [扇区数] ] [ -q ] [ -r [0|1] ] [ -S [超时] ] [ -T ] [ -t ] [ -u [0|1] ] [ -v ] [ -W [0|1] ] [ -X [传输模式] ] [ -y ] [ -Y ] [ -Z ] [设备] ..
描述
hdparm 提供一个实现各种硬盘控制动作的命令行接口,它由内建 Linux IDE/ST-506设备驱动程序支持.要实现这种功能需要Linux 核心版本为1.2.13或更高.在早期的核心下有一些选项可能不能正常工作.另外,一些选项只是为包含了新的IDE设备驱动程序的核心所支持,像2.0.10版或者更高版本的核心.如果hdparm程序是在使用旧的核心文件(在目录usr/include/linux下)的机器上被编译的,这些选项将无法获得.
选项
当未给出标记时, -acdgkmnru 被作为假设值 (除非一个给定的设备是SCSI设备或某种老式 XT型MFM/RLL,在这种情况下 -gr 和 -adgr 分别是默认值).
- -a
- 为文件系统提前获得/设置扇区号,可以用来改善连续读取大文件时的系统性能,具体方式为提前读取额外的预期中正在运行的任务所需要的数据块.在当前核心版本(2.0.10版)中默认设置为8个扇区(4KB).对于大多数用途,这个值看起来不错,但在一个大多数文件访问行为是随机搜索的系统中,设置一个小一些的值可能效果会更好.当然,很多 IDE驱动器也有一个独立的内建的预读功能,这在很多情况下可以缓解对文件系统预读功能的需求.
- -A
- 关闭/打开IDE驱动器预读功能(通常默认为打开).
- -c
- 查询/打开(E)IDE 32-bit I/O 支持.一个数字的参数可以被用来打开/关闭32-bit I/O 支持.当前支持的值包括 0 关闭 32-bit I/O 支持, 1 打开 32-bit 数据传输, 和 3 以一个芯片组要求的特殊的 sync 流程打开 32-bit data 传输. 值 3 几乎对所有的32-bit IDE 芯片组起作用,但导致稍微多一些的系统开销. 注意,32-bit数据传输仅仅用于通过PCI或VLB总线与接口卡的连接; 所有的IDE驱动器通过排线从接口卡获得的连接仅为16-bit.
- -C
- 检查当前IDE能耗模式状态, 结果将是下面几种之一 未知 (驱动器不支持此命令), 活动/闲置 (普通操作), 待机 (低能耗模式,驱动器待机), or 睡眠 (最低能耗模式, 驱动器被完全关闭). 选项 -S, -y, -Y, and -Z 用来操纵能耗模式.
- -d
- 为驱动器关闭/打开 "using_dma" 标志. 此选项仅对一些支持 DMA并且对于IDE驱动程序来说是已知的驱动器-接口组合 (包括所有被支持的XT接口).特别的,Intel Triton 芯片组能和很多驱动器一起实现总线控制 DMA 操作.(根据实验).使用 -X34 选项与 -d1 选项组合确保驱动器自身是为多字DMA模式2设计的. 使用DMA不一定对吞吐量或系统性能有改进,但很多人信赖它.
- -E
- 设置光盘驱动器速度.对于一般性操作这不是必须的,因为驱动器将自动地自行选择自己的速度.如果你想要使用它,就在选项后提供一个数字,通常是2或4.
- -f
- 当设备退出时同步并刷新指针高速缓存.此操作也作为选项 -t 和 -T 定时的一部分被执行
- -g
- 显示驱动器物理位置(柱面,磁头,扇区),设备的大小(以扇区为单位), 以及相对于驱动器起始的设备偏移量(以扇区为单位).
- -h
- 显示简要使用信息(帮助).
- -i
- 显示引导驱动器时获得的识别信息,如果有的话. 这是一种现代IDE驱动器特性,可能不被较老式的设备支持. 返回的数据可能是或不是当前的,这取决于自系统引导后的行为. 然而,当前的复合模式的扇区计数始终被给出. 要获得更多的关于识别信息的详细阐释,请查阅 AT Attachment Interface for Disk Drives (ANSI ASC X3T9.2 working draft, revision 4a, April 19/93).
- -I
- 直接从驱动器获取识别信息, 并以原始的,未经过修改和更正的形式显示. 否则便与选项 -i 相同.
- -k
- 获得/设置驱动器 keep_settings_over_reset 标志. 当此标志被设置,驱动程序将在一个软性的重置后保护选项 -dmu (如同在出错恢复流程中完成的那样) 此标志默认值为关 , 以防止可能由与 -dmu 组合设置导致的驱动器重置循环. 选项 -k 应该仅在你确信用一组选定的设置进行正确的系统操作之后被设置. 实际中,校验驱动器能够读/些并且在此过程中没有出错记录(核心消息, 大多数系统上/var/adm/messages中),是测试一个配置(在用-k之前)必须的.
- -K
- 设置驱动器的 keep_features_over_reset 标志. 此项设置使驱动器在软性重置后保留 -APSWXZ 标志的设置 (如同在出错恢复流程中完成的那样). 并非所有的驱动器都支持此项特性.
- -L
- 设置驱动器的doorlock标志. 设置为 将锁住一些移动式硬驱动器(像 Syquest,ZIP,Jazz..)的门锁机构.设置为 一般Linux根据驱动器用法自动维护门锁机构.(当安装一个文件系统时锁住).但在系统关闭时,如果根分区在一个移动式磁盘上, 可能会有麻烦,因为在关闭后根分区仍在处在安装状态(只读). 所以,使用这个命令在根文件系统以只读的方式重新被安装 ,用户可以在关闭后从驱动器中移走磁盘.
- -m
- 获得/设置驱动器多重扇区I/O的扇区数.设置为 0 关闭这项特性.多重扇区模式(aka IDE Block 模式),是大多数现代硬盘驱动器的一项特性,它允许每次I/O中断传输多个扇区, 而不是通常的一次中断一个.当这项特性被打开时,操作系统处理磁盘I/O的开销降低30-50%.在许多系统上,它也会在任何地方增加5% - 50% 的数据流量大多数驱动器支持最小的设置为2,4,8或,16个(扇区).较大的设置也可能存在,这取决于驱动器.在许多系统上设置为16或32看起来是最理想的. Western Digital在他们的许多驱动器上推荐设置为4或8. 归因于微小的(32kB)磁盘缓冲和非最优化的缓冲算法. 选项 -i 被用来查出一个已安装驱动器支持的最大设置 (在输出中查找 MaxMultSect 值).一些驱动器声称支持多重扇区模式, 但在某些设置下丢失数据.在极少的情况下,这样的失败会导致 严重的文件系统损坏.
- -p
- 尝试为指定的PIO模式对IDE接口芯片重编程,或者尝试为驱动器支持的最佳的PIO模式进行自动调整.核心中仅针对于一些"知名"的芯片组支持这项特性,甚至这种支持不一定是最好的.一些IDE芯片组不能为一个单一的驱动器改变PIO模式,在这种情况下此选项可能导致PIO 模式的设置影响到 两个 驱动器.许多IDE芯片组支持少于或多于标准的六个(0到5)PIO模式, 所以实际实现的精确速度设置将由芯片组和驱动器复杂的配合改变. 谨慎使用. 这项特性不包含任何针对不谨慎的保护措施,一个不成功的结果可能导致 严重的文件系统损坏.
- -P
- 为驱动器的内部预读机制设置最大扇区数. 不是所有的驱动器都支持这项特性.
- -q
- 安静的操作下一个标志,压制正常输出. 当从/etc/rc.c/rc.local运行时,可用来减轻屏幕混乱程度. 不适用于 -i 或 -v 或 -t 或 -T 标志.
- -r
- 获得/设置驱动器的只读标志.当被设置时,设备上的写操作被禁止.
- -R
- 登记一个IDE接口. 危险. 参见 -U 选项获取更多信息.
- -S
- 设置驱动器待机(低速运转)超时值. 驱动器根据此值决定在关闭主轴电机以节约能耗之前等待多长时间(没有磁盘操作).在这种状态下,驱动器可能需要来响应一个接下来的磁盘访问,虽然大多数驱动器要快很多.超时值的编码有些特别.值0表示"关".值1到240被指定为5秒的倍数, 也就是超时可以从5秒到20分钟.值241到251指定30分钟的1到11倍, 也就是超时可以从30分钟到5.5个小时.值252表示超时21分钟, 253设置一个销售商定义的超时,255表示21分15秒.
- -T
- 用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不存取磁盘直接从Linux缓存读取数据的速度.这项测量实际上标示了被测系统的处理器,缓存和内存的吞吐量. 如果标志 -t 也被指定,那么一个基于 -T 输出结果的修正量将被综合到 -t 操作报告的结果中.
- -t
- 用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不使用预先的数据缓冲从磁盘这项测量标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取.为确保测量的精确,缓存在 -t 的过程中通过BLKFLSBUF控制被刷新. 如果标志 -T 也被指定,那么一个基于 -T 数促结果的修正量将被综合到 -t 操作报告的结果中.
- -u
- 获得/设置驱动器"不屏蔽中断"标志.设置为 1 允许驱动器在磁盘中断处理过程中不屏蔽别的中断, 它极大改善了Linux的响应性能,并排除了"串行端口溢出"错误. 谨慎使用: 一些驱动器/控制器组合不能承受可能是潜在的 I/O 增长, 而导致 严重的文件系统损坏. 特别, CMD-640B 和 RZ1000 (E)IDE 接口可能是 不可靠的 (由于某种硬件缺陷),当在早于 2.0.16 版本的核心下使用此选项时. 关闭这些接口的(通常通过设置BIOS/CMOS) IDE 预读 特性可以安全的解决这个问题.
- -U
- 注销一个IDE接口. 危险. -R 的对应选项. 是为特别设计用来做热交换的硬件准备的(很罕见!). 使用时要有充分的知识和 非常的谨慎 ,因为它很容易终止或破坏你的系统. hdparm 的源代码包括一个 'contrib' 目录,里面有一些用户捐赠的在一台 ThinkPad 600E的UltraBay上作热交换的记录. 自己去冒险吧.
- -v
- 显示所有的设置, 除了 -i (像 -acdgkmnru 对于 IDE, -gr 对于 SCSI 或 -adgr 对于 XT). 这也是未指定任何标志时的默认操作.
- -W
- 关闭/打开 IDE 驱动器的写缓存特性 (通常默认为 OFF ).
- -X
- 为较新的 (E)IDE/ATA2 驱动器设置 IDE 传输模式 . 特别是当在一个被支持的接口芯片组(像 Intel 430FX Triton) 上打开通向一个驱动器的DMA时与选项 -d1 组合使用,在这里用 -X34 来选择多字 DMA 模式2 传输. 对于支持 UltraDMA burst timings 的系统,用 -X66 来选择 UltraDMA mode2 传输 (你需要在这之前为 UltraDMA 准备好被支持的芯片组). 另外, 几乎没有必要 使用此标志,因为大多数/全部现代 IDE 驱动器默认它们最快的
PIO 传输模式为打开. 所以摆弄它是没有必要的也是冒险的. 在支持 alternate 传输模式的驱动器上, -X 可以被
仅 用来选择模式. 在改变传输模式之前, 应该为新模式的设置给 IDE 接口跳线或编程(见 -p 标志) 以防止数据的丢失或损坏.
请非常小心地使用它! 对于 Linux 使用的 PIO 传输模式,此值就是要求的 PIO 模式号加 8. 这样, 值 09 设置 PIO
mode1, 10 设置 PIO mode2,
11 设置 PIO mode3. 设置为 00 还原驱动器的默认 PIO 模式, 01 关闭
IORDY. 对于多字 DMA, 使用的值时要求的 DMA 模式号加 32. 对于 UltraDMA ,相应的值是要求 UltraDMA 模式号加64. - -y
- 迫使一个 IDE 驱动器立即进入低能耗 待机 模式, 通常使它低速运转. 当前能耗模式状态可以用 -C 标志来检查.
- -Y
- 迫使一个 IDE 驱动器立即进入最低能耗 睡眠 模式, 使它完全关闭. 一个来自硬件或软件的重置可以重新唤醒驱动器. (
如果需要,Linux IDE 驱动器将自动产生一个重置 ). - -Z
- 关闭某些 Seagate 驱动器(STxxx 型?)的自动节能功能, 以防止它们在不适当的时候空转或低速运转.
BUGS
像上面提到的, -m 扇区数 和 -u 1 选项尤其要小心使用, 最好在一个只读文件系统上使用.
大多数驱动器和这些特性配合得很好,但有一些驱动器/控制器组合不是100%兼容的.使用可能导致文件系统损坏. 请在实验之前给所有的数据作备份!
某些选项 (例如: -r 对于 SCSI) 可能在旧的核心下因为核心不支持必要的 icctl() 而不能工作.
虽然这个命令只是为使用 (E)IDE 硬盘设备准备的,但有几个选项也能够(允许)用于带有 XT 接口的 SCSI 硬盘设备和 MFM/RLL 硬盘.
hdparm - 获取/设置硬盘参数的更多相关文章
- 用hdparm获取硬盘参数
hdparm是Linux下一款能够获取和设置SATA/IDE设备参数的工具. 1.获取硬盘参数 $ sudo hdparm -i /dev/sda$ sudo hdparam -i /dev/sda ...
- 获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
- Scala命令设置JVM参数的规则
Scala下设置JVM参数简单分析 Scala 启动shell脚本,简化后的scala REPL 启动命令大致如下所示: java -Xmx256M -Xms32M \-Xbootclasspath/ ...
- 完善DriveInfoEx源代码 获取计算机硬盘序列号
概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...
- js获取元素transform参数得出的个人理解
之前写页面的时候有试过想用js获取某些元素的translate的数值什么的,但是translate又是transform的子样式(勉强说说),理所当然就是先获取transform样式,再读里面的值. ...
- javascript:设置URL参数的方法,适合多条件查询
适用场景:多条件查询情况,如下图所示: 通过设置URL参数,再结合数据源控件设置的RUL参数,就能进行简单的多条件查询了. javascript函数: <mce:script type=&quo ...
- Spring Boot获取前端页面参数的几种方式总结
Spring Boot的一个好处就是通过注解可以轻松获取前端页面的参数,之后可以将参数经过一系列处理传送到后台数据库. 获得的方式有很多种,这里稍微总结一下,大致分为以下几种: 1.指定前端url请求 ...
- Unity 琐碎5 : 利用反射设置编辑器参数
问题 最近处理unity资源打包问题时候经常遇到的一个问题就是平台切换和Bundle编译.一般情况下,平台转换我需要依赖Cache Serbver加快转换速度,但是在Build Bundle的时候我又 ...
- Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)
[转]Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Wind ...
随机推荐
- C++ - main()函数参数
main()函数及其参数说明 main()函数主要形式: int main(void) int main(int argc, char *argv[]) = int main(int argc, ch ...
- unity3d GUI字体设置
using System.Collections; using System.Collections.Generic; using UnityEngine; public class click001 ...
- mui 关闭当前窗口
在提交表单的时候,我们都需要关闭表单.需要关闭当前打开的窗口. bit.alert('提交成功' + (result.category.needAudit ? ",请耐心等待管理员审核信息后 ...
- [转]PBFT 算法详解
https://www.cnblogs.com/mafeng/p/8405375.html
- 【Ionic+AngularJS 开发】之『个人日常管理』App(一)
写在前面的话 过去一年自己接触了不少手机前端开发,得益于现在手机性能的提升和4G普及,感觉使用混合技术开发手机App已经可以满足越来越多的应用场景了.新年伊始,对自己2016年所学知识做一个阶段性 ...
- java中对List进行分组和排序
排序 对List进行排序,有两种办法 第一个是用java提供的工具类Collections提供的sort方法进行排序 废话不多说,上代码 首先定义一个Student public class Stud ...
- 洛谷 P1434 [SHOI2002]滑雪 解题报告
这题方法有很多, 这里介绍2种: 方法1 很容易想到搜索, bfs或dfs应该都可以, 就不放代码了: 方法2 这题还可以用 dp 来做. 做法:先将每个点按照高度从小到大排序,因为大的点只能向小的点 ...
- 黑马旅游网 url-pattern不加斜杠报错 java.util.concurrent.ExecutioException: org.apache.catalina.LifecycleException
- JSPs only permit GET POST or HEAD的解决方案(REST风格)
问题:原文链接 https://blog.csdn.net/tiberroot/article/details/76615727 看到很多人解决办法使用 @ResponseBody注解 这个意思是按照 ...
- 2017EIS高校运维大赛ctf wirteup
php代码审计 题目很简单GET传入参数args然后eval(var_dump($$args))直接传入全局变量GLOBALS就能执行 php是最好的语言 .bak泄露拿到源码 <?php $v ...