RAID卡的缓存与磁盘自带的缓存的关系

RAID卡是否有(启用)缓存对“随机读写”性能有巨大的影响。中高端的RAID卡都有缓存(价格也高)。

那么RAID卡的缓存与磁盘自带的缓存是如何设置的?

 

戴尔服务器的perc H710 RAID卡有512M缓存,并带电池。

建立阵列的时候(raid5),关于RAID卡缓存的默认选项是:

读取策略:自适应 

写策略:回写 

磁盘高速缓存策略:禁用 

 

属性解释:

读取策略:一般要启用,采用预读取策略,可提高“随机读取”性能。第二次读取相同数据时可以命中缓存。

写策略:

一般要启用“回写”,操作的是RAID卡上的缓存。

写入数据时先写入到缓存就算写入成功了,然后RAID卡控制器再把多个写IO合并为一个写IO一次性写入磁盘,提高“随机写入”的性能。

因为RAID卡带电池,机房停电时,电池可给缓存供电72小时。缓存中的数据不会丢失。

另外,如果没有给缓存接电池,默认“写缓存”是不被启用的(除非强行设定为“没有电池也启用写缓存”)。

 

磁盘高速缓存策略: 

操作的是磁盘自带的高速缓存。 做RAID时,一般要禁用,防止机房停电时磁盘自带缓存中的数据丢失。磁盘可不带电池。

RAID卡控制器可控制磁盘自带的缓存是否启用。

家用台试机(未使用RAID卡)在windows操作系统中有选项可以控制磁盘自带的缓存是否启用(默认启用)。

 

 

Windows如何开启、关闭磁盘写缓存

 

打开磁盘写入缓存可以提高操作系统的性能 ;但是,突然停电时它可能导致信息的丢失。下面介绍如何启用磁盘写入缓存打开或关闭。

打开或关闭磁盘写入缓存:

1、用鼠标右键单击我的电脑,然后单击属性

2、单击硬件选项卡,然后单击设备管理器

3、扩展磁盘驱动器

4、用鼠标右键单击您要在其打开磁盘写入缓存打开或关闭,的驱动器,然后单击属性

5、单击策略选项卡。

6、单击以选中或清除相应的启用写入缓存在磁盘上复选框。

7、单击确定

 

 

 

 Linux如何开启、关闭硬盘写缓存(Write Cache)

 

在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)