当前位置:   article > 正文

hdparm 命令 - 关闭磁盘写缓存

hdparm 命令 - 关闭磁盘写缓存

最近需要测试数据库的性能,需要关闭磁盘的写缓存,因此记录下 hdparm 命令的使用方法。

Linux下的hdparm(英文全称:hard disk parameters)命令,主要用来查看硬盘的相关信息或对硬盘进行测速、优化、修改硬盘相关参数设定。它提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数。
若没有安装hdparm ,可以通过sudo yum install hdparm 来安装。

其对应的参数如下:

  1. hdparm [options] ...[device]...
  2. hdparm [参数]...[设备]...
  3. Options:
  4. -a Get/set fs readahead
  5. -A Get/set the drive look-ahead flag (0/1)
  6. -b Get/set bus state (0 == off, 1 == on, 2 == tristate)
  7. -B Set Advanced Power Management setting (1-255)
  8. -c Get/set IDE 32-bit IO setting
  9. -C Check drive power mode status
  10. -d Get/set using_dma flag
  11. -D Enable/disable drive defect management
  12. -E Set cd/dvd drive speed
  13. -f Flush buffer cache for device on exit
  14. -F Flush drive write cache
  15. -g Display drive geometry
  16. -h Display terse usage information
  17. -H Read temperature from drive (Hitachi only)
  18. -i Display drive identification
  19. -I Detailed/current information directly from drive
  20. -J Get/set Western DIgital "Idle3" timeout for a WDC "Green" drive (DANGEROUS)
  21. -k Get/set keep_settings_over_reset flag (0/1)
  22. -K Set drive keep_features_over_reset flag (0/1)
  23. -L Set drive doorlock (0/1) (removable harddisks only)
  24. -m Get/set multiple sector count
  25. -M Get/set acoustic management (0-254, 128: quiet, 254: fast)
  26. -n Get/set ignore-write-errors flag (0/1)
  27. -N Get/set max visible number of sectors (HPA) (VERY DANGEROUS)
  28. -p Set PIO mode on IDE interface chipset (0,1,2,3,4,...)
  29. -P Set drive prefetch count
  30. -q Change next setting quietly
  31. -Q Get/set DMA queue_depth (if supported)
  32. -r Get/set device readonly flag (DANGEROUS to set)
  33. -R Get/set device write-read-verify flag
  34. -s Set power-up in standby flag (0/1) (DANGEROUS)
  35. -S Set standby (spindown) timeout
  36. -t Perform device read timings
  37. -T Perform cache read timings
  38. -u Get/set unmaskirq flag (0/1)
  39. -U Obsolete
  40. -v Use defaults; same as -acdgkmur for IDE drives
  41. -V Display program version and exit immediately
  42. -w Perform device reset (DANGEROUS)
  43. -W Get/set drive write-caching flag (0/1)
  44. -x Obsolete
  45. -X Set IDE xfer mode (DANGEROUS)
  46. -y Put drive in standby mode
  47. -Y Put drive to sleep
  48. -z Re-read partition table
  49. -Z Disable Seagate auto-powersaving mode
  50. --dco-freeze Freeze/lock current device configuration until next power cycle
  51. --dco-identify Read/dump device configuration identify data
  52. --dco-restore Reset device configuration back to factory defaults
  53. --direct Use O_DIRECT to bypass page cache for timings
  54. --drq-hsm-error Crash system with a "stuck DRQ" error (VERY DANGEROUS)
  55. --fallocate Create a file without writing data to disk
  56. --fibmap Show device extents (and fragmentation) for a file
  57. --fwdownload Download firmware file to drive (EXTREMELY DANGEROUS)
  58. --fwdownload-mode3 Download firmware using min-size segments (EXTREMELY DANGEROUS)
  59. --fwdownload-mode3-max Download firmware using max-size segments (EXTREMELY DANGEROUS)
  60. --fwdownload-mode7 Download firmware using a single segment (EXTREMELY DANGEROUS)
  61. --idle-immediate Idle drive immediately
  62. --idle-unload Idle immediately and unload heads
  63. --Istdin Read identify data from stdin as ASCII hex
  64. --Istdout Write identify data to stdout as ASCII hex
  65. --make-bad-sector Deliberately corrupt a sector directly on the media (VERY DANGEROUS)
  66. --offset use with -t, to begin timings at given offset (in GiB) from start of drive
  67. --prefer-ata12 Use 12-byte (instead of 16-byte) SAT commands when possible
  68. --read-sector Read and dump (in hex) a sector directly from the media
  69. --repair-sector Alias for the --write-sector option (VERY DANGEROUS)
  70. --security-help Display help for ATA security commands
  71. --trim-sector-ranges Tell SSD firmware to discard unneeded data sectors: lba:count ..
  72. --trim-sector-ranges-stdin Same as above, but reads lba:count pairs from stdin
  73. --verbose Display extra diagnostics from some commands
  74. --write-sector Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)

选项说明:

  1. -a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定;
  2. -A<01>:启动或关闭读取文件时的快取功能;
  3. -c<I/O模式>:设定IDE32位I/O模式;
  4. -C:检测IDE硬盘的电源管理模式;
  5. -d<01>:设定磁盘的DMA模式;
  6. -f:将内存缓冲区的数据写入硬盘,并清除缓冲区;
  7. -g:显示硬盘的磁轨,磁头,磁区等参数;
  8. -h:显示帮助;
  9. -i:显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供;
  10. -I:直接读取硬盘所提供的硬件规格信息;
  11. -k<01>:重设硬盘时,保留-dmu参数的设定;
  12. -K<01>:重设硬盘时,保留-APSWXZ参数的设定;
  13. -m<磁区数>:设定硬盘多重分区存取的分区数;
  14. -n<01>:忽略硬盘写入时所发生的错误;
  15. -p<PIO模式>:设定硬盘的PIO模式;
  16. -P<磁区数>:设定硬盘内部快取的分区数;
  17. -q:在执行后续的参数时,不在屏幕上显示任何信息;
  18. -r<01>:设定硬盘的读写模式;
  19. -S<时间>:设定硬盘进入省电模式前的等待时间;
  20. -t;评估硬盘的读取效率;
  21. -T:评估硬盘缓存的读取速度;
  22. -u<01>:在硬盘存取时,允许其他中断要求同时执行;
  23. -v:显示硬盘的相关设定;
  24. -w<01>:设定硬盘的写入快取;
  25. -X<传输模式>:设定硬盘的传输模式;
  26. -y:使IDE硬盘进入省电模式;
  27. -Y:使IDE硬盘进入睡眠模式;
  28. -Z:关闭某些Seagate硬盘的自动省电功能。

用来查看硬盘的相关信息或对硬盘进行测速、优化、修改硬盘相关参数设定。

用法如下:

 显示硬盘的相关设置

  1. # hdparm /dev/vda
  2. /dev/vda:
  3. HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
  4. readonly = 0 (off)
  5. readahead = 8192 (on)
  6. geometry = 104025/16/63, sectors = 104857600, start = 0
显示硬盘的柱面、磁头、扇区数
  1. # hdparm -g /dev/vda
  2. /dev/vda:
  3. geometry = 104025/16/63, sectors = 104857600, start = 0
  4. #其中:
  5. geometry = 104025[柱面数]/16[磁头数]/63[扇区数], sectors = 104857600[总扇区数], start = 0[起始扇区数]
评估硬盘的读取效率
  1. # hdparm -t /dev/vda
  2. /dev/vda:
  3. Timing buffered disk reads: 290 MB in 3.15 seconds = 92.08 MB/sec
评估硬盘缓存的读取速度
  1. # hdparm -T /dev/vda
  2. /dev/vda:
  3. Timing cached reads: 20508 MB in 2.00 seconds = 10267.18 MB/sec
检测硬盘的电源管理模式
  1. # hdparm -C /dev/vda
  2. /dev/vda:
  3. drive state is: unknown
查看并设置硬盘多重扇区存取的扇区数,以增进硬盘的存取效率
  1. #查看
  2. # hdparm -m /dev/vda
  3. #设置
  4. # hdparm -m 8 /dev/vda
读取硬盘所提供的硬件规格信息
#hdparm -I /dev/vda

将内存缓冲区的数据写入硬盘,并清空缓冲区

# hdparm -f /dev/vda

查看当前硬盘写Cache状态:

hdparm -W /dev/sda

关闭硬盘的写Cache

hdparm -W 0 /dev/sda

打开硬盘的写Cache

hdparm -W 1 /dev/sda

对于硬盘较多,可以使用linux系统中的for循环结构来快速实现,例:
for dev in a b c d e f g h i g k l m n o..z;do hdparm -W 0(1) /dev/&dev;done。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/416295
推荐阅读
相关标签
  

闽ICP备14008679号