在做测试前,先说下iozone这个测试软件。
iozone是一个文件系统的基准程序,可以用来模拟多种不同的硬盘访问模式。IOzone的配置非常丰富,所以可以比较准确的模拟特定负载。通过使用不同的块大小,IOzone可以写一个或多个不同大小的文件。

iozone的命令选项较多,常用到的如下:
-a 全面测试,比如块大小它会自动加
-i N 用来选择测试项, 比如Read/Write/Random 比较常用的是0 1 2,可以指定成-i 0 -i 1 -i 2.具体如下:
0=write/rewrite
1=read/re-read
2=random-read/write
3=Read-backwards
4=Re-write-record
5=stride-read
6=fwrite/re-fwrite
7=fread/Re-fread
8=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv

-R 产生execl格式的输出日志。 
-b 将产生二进制的execl的日志文件名。 
-s 测试的文件大小。 
-r 文件块大小。 
-a 在希望的文件系统上测试,不过只有-a的话会进行全面测试,要花费很长时间,最好用-i指定测试范围。 
-g 指定最大测试文件大小。 
-n 指定最小测试文件大小。 
-f 指定测试文件。 
-C 显示每个节点的吞吐量。 
-c 测试包括文件的关闭时间
-h 显示帮助

熟悉了这个工具。我们可以开始做性能测试了。
实验环境:
物理机器xen01:cpu Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz 内存:2G 硬盘:sata 320G
物理机器kvm02:cpu Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz 内存:2G 硬盘:sata 320G

虚拟机xen01-vm1:1核cpu 内存:1G 硬盘:40G
虚拟机kvm02-vm1:1核cpu 内存:1G 硬盘:40G
1、在kvm机器安装iozone
下载tar 包并安装
wget http://www.iozone.org/src/current/iozone3_373.tar
tar xvf iozone3_373.tar 
cd iozone3_373/src/current/
make make linux-ia64
使用以下命令分别在两台虚拟机上测试
./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /tmp/iozone -Rb ./iozone.xls

xen01-vm1测试结果如下:

kvm02-vm1测试结果如下:

iozone可以利用 gnuplot软件做3D图,弄了一会老是报错所以没去用了。下次再补上。

从以上的数据库可以得出:
1、由于内存有缓冲机制导致测试文件为512M和1G时读写数据非常的快,此数据对I/O性能分析没有太多作用。
2、当测试文件为2G或者4G时,读、写、重读、重写速度能比较真实的表现磁盘的I/O性能情况。对比xen和kvm虚拟机可以得出,xen在写的速度在80Mbytes/s以上,而kvm的写的速度在16Mbytes/s以下。写的性能相处非常大。由此得出xen虚拟机在写性能上远远胜过kvm虚拟机。
3、读和重读速度可以看出,kvm虚拟机在103Mbytes/s以上,xen虚拟机最高时不超过95Mbytes/s,因此kvm在读取数据性能上略省一筹。

整体看:xen虚拟机的I/O性能会更好写。本文只对两种虚拟技术使用本地img文件的 I/O性能做个粗略的分析。有时间再做个挂载硬盘的性能测试。