use hdparm change ATA SATA DISK's Write-Read-Verify feature set

简介:
前面测试了OCZ PCI-E接口的SSD硬盘RevoDrive3的性能, 确实不错.
其中hdparm看到的信息如下 : 
有一条, Write-Read-Verify feature set
也就是说这个硬盘支持这个特性, 只是没有开启.
但是hdparm系统带的版本不能修改这个. 需要用到更新的hdparm版本.
编译时会有点问题, 我这用到的是CentOS 5.7 x64的版本.
hdparm.o: In function `dump_sectors':
hdparm.c:(.text+0x19c0): undefined reference to `le16toh'
hdparm.c:(.text+0x19ee): undefined reference to `le16toh'
hdparm.c:(.text+0x1a24): undefined reference to `le16toh'
collect2: ld returned 1 exit status
gmake: *** [hdparm] Error 1

原因是找不到这个函数, 这个函数原本应该在endian.h中声明的. 但是CentOS 5.7 x64的endian.h中没有. 
这个函数的功能参考 : 
所以需要修改一下hdparm.c 以下行 :
printf("%04x", le16toh(w[0]));  
注释这行
// printf("%04x", le16toh(w[0]));  

或者修改这行.
printf("%04x", w[0]);  

再编译 :
gmake
gmake install

确认版本信息 :
[root@db-172-16-3-150 hdparm-9.43]# hdparm -V
hdparm v9.43

使用帮助 :
[root@db-172-16-3-150 hdparm-9.43]# hdparm -h

hdparm - get/set hard disk parameters - version v9.43, by Mark Lord.

Usage:  hdparm  [options] [device ...]

Options:
 -a   Get/set fs readahead
 -A   Get/set the drive look-ahead flag (0/1)
 -b   Get/set bus state (0 == off, 1 == on, 2 == tristate)
 -B   Set Advanced Power Management setting (1-255)
 -c   Get/set IDE 32-bit IO setting
 -C   Check drive power mode status
 -d   Get/set using_dma flag
 -D   Enable/disable drive defect management
 -E   Set cd/dvd drive speed
 -f   Flush buffer cache for device on exit
 -F   Flush drive write cache
 -g   Display drive geometry
 -h   Display terse usage information
 -H   Read temperature from drive (Hitachi only)
 -i   Display drive identification
 -I   Detailed/current information directly from drive
 -J   Get/set Western DIgital "Idle3" timeout for a WDC "Green" drive (DANGEROUS)
 -k   Get/set keep_settings_over_reset flag (0/1)
 -K   Set drive keep_features_over_reset flag (0/1)
 -L   Set drive doorlock (0/1) (removable harddisks only)
 -m   Get/set multiple sector count
 -M   Get/set acoustic management (0-254, 128: quiet, 254: fast)
 -n   Get/set ignore-write-errors flag (0/1)
 -N   Get/set max visible number of sectors (HPA) (VERY DANGEROUS)
 -p   Set PIO mode on IDE interface chipset (0,1,2,3,4,...)
 -P   Set drive prefetch count
 -q   Change next setting quietly
 -Q   Get/set DMA queue_depth (if supported)
 -r   Get/set device readonly flag (DANGEROUS to set)
 -R   Get/set device write-read-verify flag
 -s   Set power-up in standby flag (0/1) (DANGEROUS)
 -S   Set standby (spindown) timeout
 -t   Perform device read timings
 -T   Perform cache read timings
 -u   Get/set unmaskirq flag (0/1)
 -U   Obsolete
 -v   Use defaults; same as -acdgkmur for IDE drives
 -V   Display program version and exit immediately
 -w   Perform device reset (DANGEROUS)
 -W   Get/set drive write-caching flag (0/1)
 -x   Obsolete
 -X   Set IDE xfer mode (DANGEROUS)
 -y   Put drive in standby mode
 -Y   Put drive to sleep
 -z   Re-read partition table
 -Z   Disable Seagate auto-powersaving mode
 --dco-freeze      Freeze/lock current device configuration until next power cycle
 --dco-identify    Read/dump device configuration identify data
 --dco-restore     Reset device configuration back to factory defaults
 --direct          Use O_DIRECT to bypass page cache for timings
 --drq-hsm-error   Crash system with a "stuck DRQ" error (VERY DANGEROUS)
 --fallocate       Create a file without writing data to disk
 --fibmap          Show device extents (and fragmentation) for a file
 --fwdownload            Download firmware file to drive (EXTREMELY DANGEROUS)
 --fwdownload-mode3      Download firmware using min-size segments (EXTREMELY DANGEROUS)
 --fwdownload-mode3-max  Download firmware using max-size segments (EXTREMELY DANGEROUS)
 --fwdownload-mode7      Download firmware using a single segment (EXTREMELY DANGEROUS)
 --idle-immediate  Idle drive immediately
 --idle-unload     Idle immediately and unload heads
 --Istdin          Read identify data from stdin as ASCII hex
 --Istdout         Write identify data to stdout as ASCII hex
 --make-bad-sector Deliberately corrupt a sector directly on the media (VERY DANGEROUS)
 --offset          use with -t, to begin timings at given offset (in GiB) from start of drive
 --prefer-ata12    Use 12-byte (instead of 16-byte) SAT commands when possible
 --read-sector     Read and dump (in hex) a sector directly from the media
 --security-help   Display help for ATA security commands
 --trim-sector-ranges        Tell SSD firmware to discard unneeded data sectors: lba:count ..
 --trim-sector-ranges-stdin  Same as above, but reads lba:count pairs from stdin
 --verbose         Display extra diagnostics from some commands
 --write-sector    Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)

开启write-read-verify :
[root@db-172-16-3-150 hdparm-9.43]# hdparm -R 2 /dev/mapper/mpath1
/dev/mapper/mpath1:
 setting write-read-verify to 2
 write-read-verify =  2

确认已经开启 :
[root@db-172-16-3-150 hdparm-9.43]# hdparm -I /dev/mapper/mpath1|grep Write-Read-Verify
           *    Write-Read-Verify feature set

开启后IO性能将急剧下降.

关闭write-read-verify :
[root@db-172-16-3-150 hdparm-9.43]# hdparm -R 0 /dev/mapper/mpath1
/dev/mapper/mpath1:
 setting write-read-verify to 0
 write-read-verify =  0

确认已经关闭 : 
[root@db-172-16-3-150 hdparm-9.43]# hdparm -I /dev/mapper/mpath1|grep Write-Read-Verify
                Write-Read-Verify feature set


【参考】


目录
相关文章
|
1月前
|
云安全 人工智能 自然语言处理
AI说的每一句话,都靠谱吗?
阿里云提供AI全栈安全能力,其中针对AI输入与输出环节的安全合规挑战,我们构建了“开箱即用”与“按需增强”相结合的多层次、可配置的内容安全机制。
1769 3
|
4月前
|
编解码 文字识别 自然语言处理
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
Dots.ocr 是一款仅1.7B参数的视觉语言模型,正在重塑文档处理技术。它将布局检测、文本识别、阅读顺序理解和数学公式解析等任务统一于单一架构,突破传统OCR多模块流水线的限制。在多项基准测试中,其表现超越大参数模型,展现出“小而精”的实用价值,标志着OCR技术向高效、统一、灵活方向演进。
616 0
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
|
1月前
|
人工智能 调度 开发工具
MemOS 正式上线魔搭社区 MCP 广场,让你的智能体拥有「长期记忆」
MemOS 正式上线魔搭社区 MCP 广场,作为首个大模型记忆操作系统,支持标准化记忆读写,7天调用量超14.9万次。开发者可一键集成,让AI具备持久化、可调度的记忆能力,实现连续思考与长期进化。
333 3
|
2月前
|
JSON Go iOS开发
企业微信iPad协议演进:从私有二进制到可扩展接口
企业微信iPad端协议演进:从封闭二进制到mmtls加密与OAuth2令牌体系,融合TLV结构、双工长连接及JSON回调,实现合规化与开放性统一。(239字)
253 3
|
关系型数据库 MySQL Linux
成功解决:2003 -Can‘t connect toMySQL server on ‘10.1.46.42(10060 “Unknown error“) 使用navicate连接虚拟机出错
这篇文章记录了在CentOS 7系统上安装并配置MySQL后,使用Navicat尝试进行远程连接但失败的问题。问题的主要原因是虚拟机的防火墙没有关闭。文章详细介绍了如何检查防火墙的状态,如何临时关闭它,以及如何禁止防火墙在系统启动时自动启动。当防火墙处于开启状态时,远程连接无法成功;关闭或禁用防火墙后,远程连接便能成功建立。
成功解决:2003 -Can‘t connect toMySQL server on ‘10.1.46.42(10060 “Unknown error“) 使用navicate连接虚拟机出错
|
Shell
shell获取命令输出和返回值
shell获取命令输出和返回值
2780 0
|
监控 网络协议 安全
中间人攻击(Man-in-the-Middle, MitM)
【8月更文挑战第10天】
519 1
|
算法 安全 网络安全
|
JavaScript
vue npm install安装插件请求github过慢问题
vue npm install安装插件请求github过慢问题
226 0