2016-02-03 11:31:29
来 源
中存储网
文件系统
pNFS实验环境由4台服务器组成,其中2台数据服务器,1台元数据服务器和1台客户端,操作系统为CentOS 5.4 X86_64。

什么是pNFS?(相关文章:什么是pNFS(并行NFS)

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库下载:

  1. git clone git://git.linux-nfs.org/projects/bhalevy/linux-pnfs.git (这个比较大,约1GB)  
  2. git clone git://linux-nfs.org/~bhalevy/pnfs-nfs-utils.git  

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

  1. CONFIG_NETWORK_FILESYSTEMS=y  
  2. CONFIG_NFS_FS=m  
  3. CONFIG_NFS_V4=y  
  4. CONFIG_NFS_V4_1=y  
  5. CONFIG_PNFS=y  
  6. CONFIG_NFSD=m  
  7. # CONFIG_PNFSD_LOCAL_EXPORT is not set  
  8. CONFIG_SPNFS=y  
  9. CONFIG_SPNFS_LAYOUTSEGMENTS=y  

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

  1. make  
  2. make modules  
  3. make modules_install  
  4. make install  

如果没有生成initramfs,mdinitrd /boot/initramfs-2.6.38-pnfs 2.6.38-pnfs生成。

与RPM安装一样,成功安装kernel后,验证相关信息正确配置后,即可reboot机器。

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

  1. yum install libtirpc{,-devel} tcp_wrappers{,-devel} libevent{,-devel} nfs-utils-lib{,-devel} libgssglue{,-devel} libnfsidmap{,-devel} libblkid{,-devel} libcap{,-devel} device-mapper-devel  
  2. sh autogen.sh  
  3. ./configure --prefix=/usr  
  4. make  
  5. make install  

配置Data Server

  1. mkdir /export  
  2. mkdir /export/pnfs  
  3. vi /etc/export,编辑如下内容:  
  4. /export/pnfs  *(rw,sync,fsid=0,insecure,no_subtree_check,no_root_squash, pnfs)  
  5. /etc/init.d/nfs start,启动nfs server。  

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

配置Metadata Server

  1. mkdir /export  
  2. mkdir /export/spnfs  
  3. mkdir /spnfs  
  4. mkdir /spnfs/192.168.233.131  (第一个DS mount点)  
  5. mkdir /spnfs/192.168.233.132  (第二个DS mount点)  

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

  1. /export/spnfs  *(rw,sync,fsid=0,insecure,no_subtree_check,no_root_squash, pnfs)  

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

  1. [General]  
  2. Verbosity = 1  
  3. Stripe-size = 8192  
  4. Dense-striping = 0  
  5. Pipefs-Directory = /var/lib/nfs/rpc_pipefs  
  6. DS-Mount-Directory = /spnfs  
  7.   
  8. [DataServers]  
  9. NumDS = 2  
  10.   
  11. DS1_IP = 192.168.233.131  
  12. DS1_PORT = 2049  
  13. DS1_ROOT = /pnfs  
  14. DS1_ID = 1  
  15.   
  16. DS2_IP = 192.168.233.132  
  17. DS2_PORT = 2049  
  18. DS2_ROOT = /pnfs  
  19. DS2_ID = 2  

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

  1. mount -t nfs4 -o minorversion=1 192.168.233.131:/pnfs /spnfs/192.168.233.131  
  2. mount -t nfs4 -o minorversion=1 192.168.233.132:/pnfs /spnfs/192.168.233.132  
  3. /etc/init.d/nfs start  
  4. spnfs  

配置Client

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

  1. modprobe nfs_layout_nfsv41_files  
  2. mount -t nfs4 -o minorversion=1 192.168.233.130:/ /mnt/pnfs  

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/

本文作者刘爱贵,原文地址:http://blog.csdn.net/liuaigui/article/details/6554866

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。