120-test:/# apt-get install hdparm
真实机器120上测试结果:
测试磁盘性能(不cache)
120-test:/home/lai# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 346 MB in 3.02 seconds = 114.65 MB/sec
测试磁盘性能(带cache)
120-test:/home/lai# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 2786 MB in 2.00 seconds = 1393.80 MB/sec
真实机器121上测试结果:
121:~# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 310 MB in 3.01 seconds = 102.89 MB/sec
121:~# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 2578 MB in 2.00 seconds = 1289.01 MB/sec
服务器sas硬盘测试结果:
sudo hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 442 MB in 3.01 seconds = 146.89 MB/sec
sudo hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 8306 MB in 2.00 seconds = 4162.04 MB/sec
虚拟机的测试结果1:
HA:/home/lai# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 176 MB in 3.01 seconds = 58.51 MB/sec
HA:/home/lai# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 2966 MB in 2.00 seconds = 1483.26 MB/sec
虚拟机的测试结果2:
153:/home/lai# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 186 MB in 3.00 seconds = 61.93 MB/sec
153:/home/lai# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3012 MB in 2.00 seconds = 1505.78 MB/sec
hdparm优化硬盘
hdparm -tT /dev/hda 测试硬盘速度
hdparm -A1 /dev/hda 开启硬盘预读取功能
hdparm -c3 /dev/hda 开启硬盘32位
hdparm -d1 /dev/hda 开启DMA
-d 和 -A 参数对IDE硬盘读写性能影响最大(尤 -d)
关闭预读
121:~# hdparm -A 0 /dev/sda
/dev/sda:
setting drive read-lookahead to 0 (off)
look-ahead = 0 (off)
121:~# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 2454 MB in 2.00 seconds = 1227.17 MB/sec
Timing buffered disk reads: 26 MB in 3.02 seconds = 8.60 MB/sec
开启预读
121:~# hdparm -A 1 /dev/sda
/dev/sda:
setting drive read-lookahead to 1 (on)
look-ahead = 1 (on)
121:~# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 2586 MB in 2.00 seconds = 1293.30 MB/sec
Timing buffered disk reads: 312 MB in 3.00 seconds = 103.93 MB/sec
dd工具使用重要参数
参数
|
含义
|
if
|
输入设备或者文件
|
of
|
输出设备或文件
|
bs
|
dd缓冲区。设定dd时一次io拷贝多少数据,它与输入文件和输出文件的block size都没有直接联系。
一般来说,bs越大,拷贝速度越快
|
skip
|
设定dd时从输入文件中跳过多少个dd缓冲区开始拷贝数据。一般在裸设备有offset时使用
|
seek
|
设定dd时从输出文件中跳过多少个dd缓冲区开始写入数据。一般在裸设备有offset时使用
|
count
|
设置dd的io数量。如果省略了count,表示完全拷贝输入文件到输出文件上
|
dd参数适用范围
备份源
|
备份目的地
|
适用参数
|
裸设备
|
裸设备
|
if of bs skip seek count
|
裸设备
|
文件系统
|
if of bs skip count
|
文件系统
|
裸设备
|
if of bs seek
|
文件系统
|
文件系统
|
if of bs
|
dd拷贝oracle数据文件需要考虑的因素
因素
|
含义
|
block size
|
dd一次io的buffer大小
|
offset
|
只适用于裸设备,有些操作系统在裸设备上保留一定的空间给内部使用,拷贝时要跳过这部分内容
|
block 0
|
每一个oracle数据文件的头都包含一个与数据文件所在表空间的blocksize的相等的block
这个block是不计算入oracle数据文件的bytes的,但在操作系统中,它是会占用空间的。
|
测试磁盘速度?
首先要了解两个特殊的设备:
/dev/null:回收站、无底洞
/dev/zero:产生字符
? 测试磁盘写能力
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
? 测试磁盘读能力
time dd if=/dev/sdb1 of=/dev/null bs=8k
因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。
? 测试同时读写能力
time dd if=/dev/sdb1 of=/test1.dbf bs=8k
这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb1是读,对/test1.dbf是写),假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。
可以通过使用dd if=/dev/zero of=/file 来测试磁盘的纯写入性能
使用dd if=/file of=/dev/null 来测试磁盘的纯读取性能
使用dd if=/file1 of=/file2 来测试磁盘的读写性能
读性能:
120-test:/home/lai# time dd if=xiangnai250.f4v of=/dev/null bs=10M
105+1 records in
105+1 records out
1104677904 bytes (1.1 GB) copied,9.66456 秒,114 MB/秒
real 0m9.666s
user 0m0.004s
sys 0m1.032s
读写性能:
120-test:/home/lai# dd if=xiangnai250.f4v of=/home/lai/2 bs=10M
105+1 records in
105+1 records out
1104677904 bytes (1.1 GB) copied,24.5128 秒,45.1 MB/秒
iozone和hdparm的区别:
iozone文件系统的表现是pagecache和磁盘性能的综合体, 在用iozone的时候, 如果文件大小在pagecache的容量之内, 你所看到的高性能通常是pagecache的性能, 也就是内存访问的速度. 如果想利用iozone测试真正的磁盘访问能力, 文件大小需要远大于内存容量. 比方说, 512M内存的机器, 可以用2G-4G的文件进行测试, 这样可以在统计上消除pagecache带来的噪音.
HDparam是直接访问块设备, 所以本身没有受到cache的影响. 17MB/sec是你硬盘的真正顺序访问的吞吐能力.
磁盘CACHE的两大功能:预读和回写
|
|
|
对于磁盘I/O 来说,如果没有CACHE ,就直接从硬盘读写;如果有CACHE ,则首先从CACHE 读写。
CACHE 具有两大功能:
1 、预读
CACHE 预读提高了计算机系统中的硬盘读的功能,尤其是在读取含有大量文件碎片的文件时。具有良好预读功能的RAID 卡能在看起来很随机的读访问中,识别出读取磁盘的规律, 通过这个规律提前将系统要读取的数据放在CACHE 中。
预读的两种方式:
Read Ahead
由于硬盘数据经常是以一族连续的硬盘扇区组织起来的,所以有时侯如把系统所请求的扇区随后的一个扇区里的数据 同时读进来是有价值的。对于数据文件的读取有利, 特别是系统CPU 的性能低时。
Pre-Fetch
当RAID 卡发现系统要读的是先前已经读过的数据时,在 这一次,便将这一个数据块的数据写到CACHE 里。对于程序文件的读取有利 。
2 、回写
回写是通过暂时将数据存在CACHE 里,从而推迟将数据写到慢设备(如硬盘、磁带机)的一种工作方式。数据将在随后的时间,硬盘闲置的时候写到硬盘中。写的时候也是统一将CACHE 内的尚未写出的数据按照数据块的在硬盘中的BLOCK 序号写入,这样可以提高写的效率。
回写需要加电池给CACHE 供电,以免数据在写到硬盘之前系统断电导致硬盘数据丢失。
增加CACHE 大小对于预读来说,为系统提供了更多的来自CACHE 的可供读取的记录。 对于回写来说,允许控制卡保存更多的记录留待后期写磁盘。特别是对于电梯式回写,使得连续的回写段之间有更近的间隔,降低硬盘写操作的平均访时间并提高了吞吐率。
写策略
通写模式下,所有数据在以命令完成状态返回到计算机之前,直接写到硬盘。两种写策略比较来说,写策略由通写改为回写时,可大幅度提高性能。但回写具有一定的数据危险性。在突然断电的情况下,会丢失存于Cache 尚未写入硬盘的数据。
RAID卡 工作在写策略为THROUGH 时,缓存大小对RAID卡 的性能影响很小,只有当写策略改为BACK 时,缓存的作用才会发挥出来。
影响RAID卡 性能的因素很多,其中可调因素主要有RAID卡 缓存(CACHE )大小、写策略(WRITE POLICY)、读策略(READ POLICY )、条带的大小(STRIPE SIZE )。不同的RAID卡 虽然说法略有不同,但意思是一样的。很多设置可以在RAID卡 的配置工具中调整。
|
|