1:前期说明
(1)pvfs2需要ssh免密码访问
关于ssh免密码访问可以参看如下链接: ssh免密码访问
(2)pvfs2要安装在每台机器相同的位置
2:pvfs2版本选择: pvfs2.8.2 系统环境为:redhat 6.1企业版
3:pvfs2安装配置启动
安装过程:
下载源码包pvfs2-2.8.2.tar.gz 解压 tar -zxvf pvfs2-2.8.2.tar.gz
切换到源码包目录下 配置:./configure --enable-segv-backtrace 需要加上这条参数,不然编译的时候会报错! 不清楚为什么 当然可以指定安装的路径 --prefix=/xxx ;
然后 make
make install
到此安装完毕,基本不会出现什么问题了
配置过程:
配置文件只需要在一台机器上生成即可,然后用scp发送到其他机器相同的目录下
生成配置文件用安装包bin目录下面的pvfs2-genconfig 命令
./pvfs2-genconfig /etc/pvfs2-fs.conf
然后就会让你选择通信协议,存储目录,日志位置啥的,一般都默认选择直接按回车就好, 只有两个地方需要自己修改
元数据存放:默认是localhost 这里写上你想存放元数据的机器名(ps:直白点写IP )
I/Oserver:同上
这里就配置完毕了,一般也不会有啥问题
只需要配置一台机器,然后将配置文件用scp发送到其他机器
配置文件内容如下所示(只配了两台机器):
[root@node2 bin]# cat /etc/pvfs2-fs.conf
<Defaults>
UnexpectedRequests 50
EventLogging none
EnableTracing no
LogStamp datetime
BMIModules bmi_tcp
FlowModules flowproto_multiqueue
PerfUpdateInterval 1000
ServerJobBMITimeoutSecs 30
ServerJobFlowTimeoutSecs 30
ClientJobBMITimeoutSecs 300
ClientJobFlowTimeoutSecs 300
ClientRetryLimit 5
ClientRetryDelayMilliSecs 2000
PrecreateBatchSize 512
PrecreateLowThreshold 256
StorageSpace /pvfs2-storage-space
LogFile /tmp/pvfs2-server.log
</Defaults>
<Aliases>
Alias node1 tcp://node1:3334
Alias node2 tcp://node2:3334
</Aliases>
<Filesystem>
Name pvfs2-fs
ID 1308600785
RootHandle 1048576
FileStuffing yes
<MetaHandleRanges>
Range node1 3-2305843009213693953
Range node2 2305843009213693954-4611686018427387904
</MetaHandleRanges>
<DataHandleRanges>
Range node1 4611686018427387905-6917529027641081855
Range node2 6917529027641081856-9223372036854775806
</DataHandleRanges>
<StorageHints>
TroveSyncMeta yes
TroveSyncData no
TroveMethod alt-aio
</StorageHints>
</Filesystem>
启动:
设置开机启动pvfs2-server守护进程 cp ~/pvfs2-2.8.2/examples/pvfs2-server.rc /etc/rc.d/init.d/pvfs2-server
chmod a+x /etc/rc.d/init.d/pvfs2-server
chkconfig pvfs2-server on
然后根据配置文件启动pvfs
/pvfs2-2.8.2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f 第一次启动需要加上参数f 执行完了,会在根目录发现多了/pvfs2-storage-space
/pvfs2-2.8.2/sbin/pvfs2-server /etc/pvfs2-fs.conf 这样就启动完毕了 可以用netstat -nplt 命令查看是否开启服务,默认端口号是3334
在每台机器上都这样设置一次。pvfs2服务器就安装完毕了
4:客户端安装测试
客户端测试有三种方式(pvfs提供了三种):1 使用pvfs2提供的api 2 与linux内核重新编译(目前只支持内核2.4和2.6的版本) 3 MPI ROMPI
我只尝试了前面两种,最后一种没有尝试 下面介绍以下两种
1 将node1作为客户端(可以是任意一台机器,前提是安装了pvfs),创建挂载点,设置开机挂载文件pvfs2tab
mkdir /mnt/pvfs2
touch /etc/pvfs2tab
chmod a+r /etc/pvfs2tab
vi /etc/pvfs2tab
输入pvfs2tab中的内容为:tcp://node2:3334/pvfs2-fs /mnt/pvfs2/ pvfs2 defaults, noauto 0 0
这样客户端就配置好了 重启就可以自动挂载!
可以测试一下 用pvfs2-ping pvfs2 cp pvfs2-ls 命令测试
./pvfs2-ping -m /mnt/pvfs2
login as: tangjie
tangjie@node1 ~]$ pvfs2-ping -m /mnt/pvfs2
(1) Parsing tab file...
(2) Initializing system interface...
3) Initializing each file system found in tab file: /etc/pvfs2tab...
PVFS2 servers: tcp://node2:3334
Storage name: pvfs2-fs
Local mount point: /mnt/pvfs2
/mnt/pvfs2: Ok
(4) Searching for /mnt/pvfs2 in pvfstab...
PVFS2 servers: tcp://node2:3334
Storage name: pvfs2-fs
Local mount point: /mnt/pvfs2
meta servers:
tcp://node1:3334
tcp://node2:3334
data servers:
tcp://node1:3334
tcp://node2:3334
(5) Verifying that all servers are responding...
meta servers:
tcp://node1:3334 Ok
tcp://node2:3334 Ok
data servers:
tcp://node1:3334 Ok
tcp://node2:3334 Ok
(6) Verifying that fsid 1308600785 is acceptable to all servers...
Ok; all servers understand fs_id 1308600785
(7) Verifying that root handle is owned by one server...
Root handle: 1048576
Ok; root handle is owned by exactly one server.
=============================================================
The PVFS2 filesystem at /mnt/pvfs2 appears to be correctly configured.
2 安装内核模块(这样可以使用linux的命令 如ls cp 等)
(1)编译安装
一般系统内核源码路径为 :/usr/local/kernels/
所以在配置时 切换到pvfs2源码包目录下 ./configure --with-kernel =/内核源码路径 --enable--segv-backtrace
make kmod //编译模块
make kmod_install //安装模块
insmod ./src/kernel/linux-2.6/pvfs2.ko 这时候可以检查下是否加载了模块: lsmod|grep pvfs2
./src/app/kernel/linux/ 如果在configure的时候 就从这个路径寻找下面的执行文件,如果在configure时添加了prefix 指定了安装路径,那么就从安装路径下面的sbin文件夹下面找到下面的命令执行
pvfs2-client -f -p ./pvfs2-client-core -f 在前台运行 -p 指定 pvfs2-client-core路径
因为在前台运行,需要重新开ssh 输入如下命令
mount -t pvfs2 -o noreservation tcp://node2:3334/pvfs2-fs /mnt/pvfs2 挂载文件 -o noreservation 是用于提高文件系统性能的,也可以不使用这条参数
这样就可以了,可以用ls等命令了 可以使用df 指令查看挂载点和文件系统:
如果客户机重新启动了,那么就失效了,需要从 insmod 这条命令从新开始操作一遍
问题总结:
1 no route to host
防火墙问题 关闭防火墙或者开启端口号
2 还有就是配置文件的问题,一定要保证配置文件在相同位置,且是同一份,如果配置不同,则需要删除存储目录和日志目录,重新启动server,不然配置时会报错