Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1734844
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: LINUX

2010-02-01 15:01:22

基本配置介绍

服务器端编辑配置文件 /etc/exports,类似以下内容:

### /etc/exports - a list of directories for NFS to export ###

## Read-only export to the 192.168.1.0/24 network ##

/home/NFSv4 192.168.1.0/24 (fsid=0,sync,anonuid=65534,anongid=65534)

请注意,使用fsid=0选项的时候只能共享一个目录,这个目录将成为NFS服务器的根目录。要通过NFS4共享一个目录,首先需要在/etc/exports文件中定义这个目录,并且使用 fsid=0 的参数。本例中,/home/NFSv4 就是根目录。

NFSv4中,所有的共享看上去像一个类似ftp或者网页服务器的单独的根目录结构。 然后重新读取NFS配置文件:

# exportfs -rv

可使用如下命令查看

# exportfs -v 客户端手动挂载和卸载挂载共享文件夹

配置 rpcidmapd 服务

参考:

server & client端,/etc/idmapd.conf [General]

Verbosity = 0

Pipefs-Directory = /var/lib/nfs/rpc_pipefs

Domain = master

[Mapping]

Nobody-User = nfsnobody

Nobody-Group = nfsnobody

[Translation]

Method = nsswitch

重起 rpcidmapd 服务

service rpcidmapd restart

修改Server端防火墙规则

放开nfs-v4服务需要的tcp 2049访问权限

iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 2049 -j ACCEPT

Client 加载共享目录

# mount -t nfs4 -o ro,intr server1:/ /mount/point/

Client 卸载共享文件夹

# umount /mount/point/

可使用如下命令查看

# mount | grep nfs

使用 /etc/fstab 挂载添加以下内容到 /etc/fstab 文件中

server1:/ /mount/point nfs4 ro,hard,intr,proto=tcp,port=2049,noauto 0 0

然后就可以使用 /etc/fstab 文件中的配置挂载

# mount -v /mount/point

/etc/fstab 文件中的内容也会在系统重启后自动加载。

共享多个目录

使用NFSv4方式共享多个目录时,所有的目录都要作为共享根目录的子目录。

例如:有以下目录需要共享:

/first/very/long/path1

/second/very/long/path2

同时让客户端看上去共享的目录是

/dir1 和 /dir2。

服务器端创建子目录

# mkdir /home/NFSv4/dir1

# mkdir /home/NFSv4/dir2

使用参数挂载需要共享的目录

# mount –bind /first/very/long/path1 /home/NFSv4/dir1
# mount –bind /secend/very/long/path2 /home/NFSv4/dir2

修改/etc/exports文件,添加如下条目

/home/NFSv4 192.168.1.0/24 (fsid=0,sync,anonuid=65534,anongid=65534)
/home/NFSv4/dir1 *(rw,nohide,no_root_squash,sync)
/home/NFSv4/dir2 *(rw,nohide,no_root_squash,sync)

注意:需要使用nohide参数,重新读取NFS配置文件

# exportfs -rv

这时你就可以在客户端上挂载服务器上的多个共享文件夹了:从根目录挂载

# mount -t nfs4 server1:/ /mount/point/ 单独挂载

# mount -t nfs4 server1:/dir1 /mount/point1/

# mount -t nfs4 server1:/dir2 /mount/point2/

调优

在默认情况下,NFS 的配置不适合大容量磁盘。

每个客户机应该用 rsize=32768,wsize=32768,intr,noatime 挂装远程文件系统,如。 mount -o rsize=32768,wsize=32768,intr,noatime server1:/ /mount/point/

从而确保: 使用大的读/写块(数字指定最大块大小,在这个示例中是 32KB)。

在挂起时 NFS 操作可以被中断。 不持续更新 atime。 可以将这些设置放在 /etc/fstab 中。

如果使用自动挂装器,那么应该将这些设置放在适当的 /etc/auto.* 文件中。

在 服务器端,一定要确保有足够的 NFS 内核线程来处理所有客户机。

在默认情况下,只启动一个线程,但是 Red Hat 和 Fedora 系统会启动 8 个线程。对于繁忙的 NFS 服务器,应该提高这个数字,比如 32 或 64。

可以用 nfsstat -rc 命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据。

下表显示一个 Web 服务器的客户机统计数据。

# nfsstat -rc

Client rpc stats:calls retrans authrefrsh1465903813 0 0

第二列 retrans 是零,这表示从上一次重新引导以来没有出现需要重新传输的情况。如果这个数字比较大,就应该考虑增加 NFS 内核线程。

设置方法是将所需的线程数量传递给 rpc.nfsd,比如 rpc.nfsd 128 会启动 128 个线程。任何时候都可以进行这种设置,线程会根据需要启动或销毁。同样,这个设置应该放在启动脚本中,尤其是在系统上启用 NFS 的脚本。

关于 NFS,最后要注意一点:如果可能的话,应该避免使用 NFSv2,因为 NFSv2 的性能比 v3 和 v4 差得多。

在现代的 Linux 发行版中这应该不是问题,但是可以在服务器上检查 nfsstat 的输出,了解是否有任何 NFSv2 调用。

------------------------------------------------------------------------

nfs4 配置 实例需求 :

share(nfs v4版本)
192.168.0.107                 #nfs client1
/opt/app-data/mq/share
192.168.0.108                 #nfs server1
/opt/app-data/mq/share

图片共享
192.168.0.108
/opt/web-app/application/aplus-operator-manage/upload
192.168.0.106                 #nfs server2
/opt/web-app/application/aplus-club/upload
192.168.0.107                 #nfs client1
/opt/web-app/application/aplus-club/upload

程序代码共享
192.168.0.106                 #nfs server2
/opt/web-app/code_target
192.168.0.107                 #nfs client1
/opt/web-app/code_target
192.168.0.108
/opt/web-app/code_target

nfs server1 配步骤:
修改/etc/fstab,添加如下行
/opt/app-data/mq/share /home/NFSv4/share bind defaults,bind 0 0

然后执行 mount -a
或者直接执行 mount --bind /opt/app-data/mq/share /home/NFSv4/share

修改/etc/exports,添加如下行
/home/NFSv4 192.168.0.107(fsid=0,sync,anonuid=65534,anongid=65534)
/home/NFSv4/share *(rw,nohide,no_root_squash,sync)

然后执行如下命令启动nfs服务
service portmap start
service nfs start

修改防火墙规则,放开tcp 2049访问权限
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT

nfs server2 配步骤:
修改/etc/fstab,添加如下行
/opt/web-app/application/aplus-club/upload /home/NFSv4/upload bind defaults,bind 0 0
/opt/web-app/code_target /home/NFSv4/code_target bind defaults,bind 0 0

然后执行 mount -a
或者直接执行 mount --bind /opt/web-app/application/aplus-club/upload /home/NFSv4/upload
mount --bind /opt/web-app/application/aplus-club/upload /home/NFSv4/upload

修改/etc/exports,添加如下行
/home/NFSv4 192.168.0.107(fsid=0,sync,anonuid=65534,anongid=65534)
/home/NFSv4 192.168.0.108(fsid=0,sync,anonuid=65534,anongid=65534)
/home/NFSv4/upload *(rw,nohide,no_root_squash,sync)
/home/NFSv4/code_target *(rw,nohide,no_root_squash,sync)

然后执行如下命令启动nfs服务
service portmap start
service nfs start

配置 rpcidmapd 服务
参考:

server & client端,/etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = master

[Mapping]

Nobody-User = nfsnobody
Nobody-Group = nfsnobody

[Translation]
Method = nsswitch

重起 rpcidmapd 服务
service rpcidmapd restart

修改防火墙规则,放开tcp 2049访问权限
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT

nfs client1 加载 nfs server1,server2 输入目录:
启动rpc 服务
service portmap start  #如未启动,客户端加载会出现(mount.nfs4: Cannot allocate memory)的问题.
service rpcidmapd start

加载共享目录
mount -t nfs4 192.168.0.108:/share /opt/app-data/mq/share 
mount -t nfs4 192.168.0.106:/upload /opt/web-app/application/aplus-club/upload 
mount -t nfs4 192.168.0.106:/code_target /opt/web-app/code_target

------------------------------------------------------------------

参考文档

http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-1/index.html

阅读(1964) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~