一组NFS和OCFS2的对比数据

By , 2013年6月16日 2:35 下午

nfs_ocfs2

[测试环境]

两台DELL PowerEdge R420服务器,分别配置2 颗Intel E5-2620处理器(6 个核心,12个线程),24 GB内存,2 块300GB的15000转SAS硬盘做RAID1。一台DELL MD3200磁盘阵列,配置10块300GB的15000转SAS硬盘做RAID5。将磁盘阵列的存储空间划分为两块,一块750 GB通过SAS线缆连接到服务器A,另一块750 GB通过SAS线缆连接到服务器B。两台服务器均运行64位Ubuntu 12.04服务器版操作系统,通过KVM进行虚拟化。两台服务器之间通过万兆交换机提供网络连接。

服务器A 将来自磁盘阵列的存储空间/dev/sdb挂载为本机上的/nfs目录,并在此基础上提供NFS服务。服务器B 通过NFS客户端将来自服务器A 的/nfs目录挂载为本机上的/nfs目录。

服务器B 安装iSCSI TGT服务,将来自磁盘阵列的存储空间/dev/sdb通过iSCSI协议暴露到局域网。服务器A 和服务器B 均通过open-iscsi将如上所述iSCSI目标发现为本机上的/dev/sdc。在服务器A 和服务器B 上通过配置OCFS2集群文件系统共享同一个块设备,且都挂载为本机上的/tgt目录。

[测试方法]

利用iozone软件分别测试服务器A 上的/目录(本地磁盘)和/nfs目录(磁盘阵列)、服务器B 上的/nfs目录(NFS共享文件系统)和/tgt目录(OCFS2集群文件系统)、以及运行在NFS和OCFS2上的虚拟机/目录的文件IO性能进行测试。虚拟机的配置为4 个处理器核,4 GB内存,10 GB磁盘,运行64位Ubuntu 12.04服务器版,磁盘和网卡都启用了virtio,并且设置虚拟机磁盘缓存参数为cache=”none”。在对虚拟机进行测试的时候,虚拟机运行在计算节点B 上。

测试参数:

$ ./iozone -Mcew -i0 -i1 -s3g -r256k -f [file_name]

[测试结果]

测试环境 write rewrite read reread
服务器A | 本地硬盘 168123 177677 3775577 6146712
服务器A | 磁盘阵列 312041 335915 3566998 5952576
服务器B | NFS共享文件系统 246113 285600 3798812 5695323
服务器B | OCFS2集群文件系统 250326 300573 5193533 5346467
虚拟机 | NFS 189379 238361 3534514 6041784
虚拟机 | OCFS2 108236 213260 3582519 4949598

基于这个特定的试验环境,有三个小小的发现:

(1)基于磁盘阵列的NFS共享文件系统与OCFS2集群文件系统的文件IO性能在同一水平线上。

(2)NFS共享文件系统的性能可以达到磁盘阵列性能的80%左右。

(3)运行在NFS上的虚拟机比运行在OCFS2上的虚拟机似乎具有更好的文件IO性能,原因待进一步研究。

[测试结果]

后续工作,找几个更大的测试环境,弄两台真正的IP SAN和FC SAN进行对比测试。

2 Responses to “一组NFS和OCFS2的对比数据”

  1. xkglob说道:

    我觉得OCFS2可能是为oracle数据库的使用做了优化, 比如对于8K或以上的块更友好。 但是虚拟机软件可能都是读小文件, 这个OCFS2可能不擅长…

  2. qyjohn说道:

    不一定。虚拟机磁盘映像文件是个大文件。

Leave a Reply

Panorama Theme by Themocracy