Linux 2013-06-07
RAID卡是否有(启用)缓存对“随机读写”性能有巨大的影响。中高端的RAID卡都有缓存(价格也高)。
那么RAID卡的缓存与磁盘自带的缓存是如何设置的?
戴尔服务器的perc H710 RAID卡有512M缓存,并带电池。
建立阵列的时候(raid5),关于RAID卡缓存的默认选项是:
读取策略:自适应
写策略:回写
磁盘高速缓存策略:禁用
属性解释:
读取策略:一般要启用,采用预读取策略,可提高“随机读取”性能。第二次读取相同数据时可以命中缓存。
写策略:
一般要启用“回写”,操作的是RAID卡上的缓存。
写入数据时先写入到缓存就算写入成功了,然后RAID卡控制器再把多个写IO合并为一个写IO一次性写入磁盘,提高“随机写入”的性能。
因为RAID卡带电池,机房停电时,电池可给缓存供电72小时。缓存中的数据不会丢失。
另外,如果没有给缓存接电池,默认“写缓存”是不被启用的(除非强行设定为“没有电池也启用写缓存”)。
磁盘高速缓存策略:
操作的是磁盘自带的高速缓存。 做RAID时,一般要禁用,防止机房停电时磁盘自带缓存中的数据丢失。磁盘可不带电池。
RAID卡控制器可控制磁盘自带的缓存是否启用。
家用台试机(未使用RAID卡)在windows操作系统中有选项可以控制磁盘自带的缓存是否启用(默认启用)。
打开磁盘写入缓存可以提高操作系统的性能 ;但是,突然停电时它可能导致信息的丢失。下面介绍如何启用磁盘写入缓存打开或关闭。
打开或关闭磁盘写入缓存:
1、用鼠标右键单击我的电脑,然后单击属性
2、单击硬件选项卡,然后单击设备管理器
3、扩展磁盘驱动器
4、用鼠标右键单击您要在其打开磁盘写入缓存打开或关闭,的驱动器,然后单击属性
5、单击策略选项卡。
6、单击以选中或清除相应的启用写入缓存在磁盘上复选框。
7、单击确定
在Linux中,有时我们希望打开或关闭硬盘写缓存(Write Cache),此时可以用hdparm命令来实现。
建议下载最新hdparm版本,网址为:http://sourceforge.net/projects/hdparm/ 下载自行安装
CentOS 5.4 默认带的hdparm是6.6版本,要升级一下。yum update hdparm,试了好几个yum源,最新的都是6.6,不能通过yum升级。
hdparm的改变是个临时的状态,下次再次启动Linux系统的时候hdparm将会消失。所以要想永久的保存修改后的信息,就必须把修改后的参数和数据写入/etc/rc.d/rc.local或/etc/rc.local文档,甚至比启动过程要早运行的程式中。
安装 hdparm
用以下命令安装 hdparm:
make &&
make install
注意在默认情况下, hdparm 是安装在 /sbin 因为一些系统可呢能需要它在启动时在/usr被连接前. 如果你想把 hdparm 安装在 /usr下, 那么替换上面的命令为下面这个:
make &&
make binprefix=/usr install
测试服务器磁盘读写速度:hpparm -T -t /dev/sdx
-T 表示不读取磁盘,直接从Linux缓存读取数据的速度
-t 表示不使用预先的数据缓冲从磁盘连续读取的速度
/dev/sdx是设备名
查看当前硬盘写Cache状态
root@ubuntu:~/hdparm-9.37# hdparm -W /dev/sda
关闭硬盘的写Cache
root@ubuntu:~/hdparm-9.37# hdparm -W 0 /dev/sda
打开硬盘的写Cache
root@ubuntu:~/hdparm-9.37# hdparm -W 1 /dev/sda
hdparm的参数参数说明:
root@ubuntu:~/hdparm-9.37# ./hdparm -h
hdparm – get/set hard disk parameters – version v9.37, 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
-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 Obsolete
-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)