pNFS实验环境部署

什么是pNFS?
pNFS是并行网络文件系统,即NFSv4.1,与NFSv3不同的是,它将元数据与数据进行分离,允许客户端直接与数据服务器进行交互。这种机制解决了传统NFS的性能瓶颈问题,从而使得系统获得高性能和高扩展性的特性。pNFS支持多种协议(Block[FC], Object[OSD], Files[NFS])直接访问数据,需要对客户端功能进行扩展以支持不同的layout(LAYOUT4_FILE, LAYOUT4_BLOCK_VOLUME, LAYOUT4_OSD2_OBJECTS)。NFSv41和pNFS主要由RFC5661(NFSv4.1)、RFC5662(NFSv4.1 XDR)、RFC5663(pNFS Block/Volume Layout)、RFC5664(Object-Based pNFS Operations)描述,这些标准已经于2010.01正式发布。目前,pNFS商业和开源产品都比较少,而且实现方面还不成熟。Linux kernel从2.6.30版本加入了pNFS支持,目前最新版本为2.6.38,pNFS仍处于Expermental,包括Server和Client。对于pNFS感兴趣的用户,可以通过安装新内核和nfs-util来安装配置pNFS,进行测试和体验。

什么是spNFS?
spNFS是一个简单的pNFS LAYOUT4_FILE服务器实现,它使用标准的NFS服务器作为数据服务器,主其要逻辑在用户空间实现,最初由NetAPP公司支持开发,主要用于pNFS演示和Client测试。spNFS现在已经不再维护,但是仍然可以工作并用于pNFS演示和测试。目前已经有更好的pNFS服务器实现,比如GFS2、OCFS2、EXOFS(http://wiki.linux-nfs.org/wiki/index.php/PNFS_server_projects),但比spNFS要复杂些。

pNFS实验环境
整个pNFS测试环境由4台服务器组成,其中2台数据服务器,1台元数据服务器和1台客户端,操作系统为CentOS 5.4 X86_64。这里是使用虚拟机来搭建测试环境,主要是为了验证pNFS的功能。如果想测试pNFS性能,建议采用物理服务器来部署测试环境。pNFS实验环境配置如下:
MDS:192.168.233.130
DS1: 192.168.233.131
DS2: 192.168.233.132
Client: 192.168.233.134
4台服务器(DS、MDS和Client)均需要安装配置pNFS kernel和nfs-utils软件。

从RPM安装
对于使用Redhat/CentOS/Fedora的用户来说,pNFS社区已经有人制作了RPM安装包供大家测试,从如下URL下载:
http://fedorapeople.org/~steved/repos/pnfs/
根据OS版本和体系结构选择下载合适的RPMs,其中kernel和nfs-utils安装包是必需的。RPM安装过程中根据提示使用yum或apt-get安装相关的依赖包。kernel安装成功后,需要验证一下/boot和Grub相关信息是否正确,然后reboot机器即可。

从源码安装
源码安装相对要比RPM安装复杂许多,但这是很不错的体验,建议搞开发的用户采用这种方式进行安装。Kernel和nfs-utils最新源码可以从如下Git库下载:


根据内核源码中的Documents/fs/spnfs.txt配置kernel编译选项,make menuconfig时把NFSv41/spnfs的相关选项选中。配置完成后,.config中应该包含以下诸项:

接下来就可以编译和安装内核了


如果没有生成initramfs,mdinitrd /boot/initramfs-2.6.38-pnfs 2.6.38-pnfs生成。
与RPM安装一样,成功安装kernel后,验证相关信息正确配置后,即可reboot机器。

nfs-utils依赖许多开发库,编译前需要进行安装解决依赖问题。

配置Data Server

每个Data Server均进行如上配置,DS是常规的NFSv4.1服务器。

配置Metadata Server

vi /etc/export,编辑如下内容:


vi /etc/spnfsd.conf,编辑如下内容:(可以从nfs-util源码中util/spnfsd/spnfsd.conf复制并修改)

然后将DS服务器输出目录mount至元MDS上,启动nfs server和spnfs server:

配置Client
pNFS支持Block, Object, Files协议,我们这里使用Files协议访问,需要加载nfs_layout_nfsv41_files。

pNFS测试
cd /mnt/pnfs
dd if=/dev/zero of=f8g bs=4M count=2K
dd中使用top监控DS和MDS系统负载情况,看看IO是不是发生在DS与Client之间。如果MDS I/O负载很高,接近与DS,则安装配置可能有问题。

分别在MDS和DS使用stat查看f8g的属性:
stat /export/spnfs/f8g (MDS上f8g的block数量应该为0,只表现名字空间)
stat /export/pnfs/* (DS1和DS2上f8g对应对象的block数量应该>0,实际存储文件数据)

参考资料
http://www.pnfs.com
http://wiki.linux-nfs.org/
http://wiki.linux-nfs.org/wiki/index.php/Configuring_pNFS/spnfsd
kernel Documents/fs/spnfs.txt
http://fedorapeople.org/~steved/repos/pnfs/

你可能感兴趣的:(nfs)