> CentOS > CentOS服务器 >

centos 配置NFS服务器

系统是CentOS5.6,假设NFS Server IP为192.168.1.2,NFS Clinet IP为192.168.0.100。
 
 1.服务端安装NFS:
 
 yum install nfs-utils protmap
 
 nfs-utils包提供了NFS服务器程序和相应的管理工具。
 protmap是一个管理RPC连接的程序,portmap服务对NFS是必须的,因为它是NFS的动态端口分配守护进程,如果portmap不启动,NFS就是启动不了的。
 
 2.配置NFS服务端,编辑/etc/exports文件:
 
 vim /etc/exports
 
 设置共享文件目录:
 
 /home/nfsdir *(rw)
 /home/share 192.168.0.100(rw,sync,no_root_squash) *(ro)
 其中:
 /home/nfsdir *(rw)
 表示共享/home/nfsdir目录,所有用户都有读写权限。
 /home/share 192.168.0.100(rw,sync,no_root_squash) *(ro)
 表示共享/home/share目录,192.168.0.100有读写权限并且root用户有完全管理访问权限,其他机器仅有只读权限。
 
 配置文件的格式为:
 [共享的目录] [主机名或IP(参数,参数)]
 其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是sync,ro,root_squash,no_delay。
 当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
 当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
 [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
 下面是一些NFS共享的常用参数:
 
 ro                                只读访问
 rw                                读写访问
 sync                            同步写入资料到内存与硬盘中
 async                          资料会先暂存于内存中,而非直接写入硬盘
 secure                         NFS通过1024以下的安全TCP/IP端口发送
 insecure                      NFS通过1024以上的端口发送
 wdelay                         如果多个用户要写入NFS目录,则归组写入(默认)
 no_wdelay                   如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
 hide                             在NFS共享目录中不共享其子目录
 no_hide                       共享NFS目录的子目录
 subtree_check            如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
 no_subtree_check      和上面相对,不检查父目录权限
 all_squash                  共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
 no_all_squash            保留共享文件的UID和GID(默认)
 root_squash                root用户的所有请求映射成如anonymous用户一样的权限(默认)
 no_root_squash          root用户具有根目录的完全管理访问权限
 anonuid=xxx                指定NFS服务器/etc/passwd文件中匿名用户的UID
 anongid=xxx                指定NFS服务器/etc/passwd文件中匿名用户的GID
 
 当exports文件修改后,使用以下命令,不需要重启NFS服务,就可以重新挂载/etc/exports里面的设定:
 
 exportfs -arv
 
 3.配置iptables:
 因为NFS会为以上三个服务分配临时端口,所以很难在防火墙上控制要开放哪些端口。所以要将几个端口固定住。
 vim /etc/services
 在文件最后添加:
 mountd 1011/tcp #rpc.mountd
 mountd 1011/udp #rpc.mountd
 在NFS-Server的防火墙里开放相关端口
 要开放1011/tcp, 1011/udp, 111/tcp, 111/udp, 2049/tcp, 2049/udp这六个端口。如果是通过图形界面配置,可以手工添加前四个端口,而后面2049这两个端口,可以通过勾选上面的nfs4来开放。
 
 4.先启动portmap服务:
 
 service portmap restart
 
 5.再启动NFS服务:
 
 service nfs restart
 
 如果之前没有先启动portmap服务,那么当启动NFS服务时会停在
 
 Starting NFS daemon:
 
 很长时间。
 
 6.设置nfs、portmap开机自启动:
 
 chkconfig –level 345 nfs on
 chkconfig –level 345 portmap on
 
 查看服务运行的相关端口情况
 rpcinfo -p 192.168.1.2
 
 程序 版本 协议 端口
 100000 2 tcp 111 portmapper
 100000 2 udp 111 portmapper
 100011 1 udp 875 rquotad
 100011 2 udp 875 rquotad
 100011 1 tcp 875 rquotad
 100011 2 tcp 875 rquotad
 100003 2 udp 2049 nfs
 100003 3 udp 2049 nfs
 100003 4 udp 2049 nfs
 100021 1 udp 32769 nlockmgr
 100021 3 udp 32769 nlockmgr
 100021 4 udp 32769 nlockmgr
 100021 1 tcp 32803 nlockmgr
 100021 3 tcp 32803 nlockmgr
 100021 4 tcp 32803 nlockmgr
 100003 2 tcp 2049 nfs
 100003 3 tcp 2049 nfs
 100003 4 tcp 2049 nfs
 100005 1 udp 1011 mountd
 100005 1 tcp 1011 mountd
 100005 2 udp 1011 mountd
 100005 2 tcp 1011 mountd
 100005 3 udp 1011 mountd
 100005 3 tcp 1011 mountd
 
 如果你只需要配置一个简单的nfs服务器的话,那只需要开放3个守护进程端口就行了:
 
 111,portmap启动的端口,用来提供nfs端口
 
 2049,NFS启动的端口,用来管理Client登入主机的权限
 
 1011,刚才配置的mountd端口,这个端口主要用来管理NFS文件系统权限的
 
 7.客户端也需要安装nfs-utils、portmap软件包,并启动portmap服务和netfs服务:
 
 yum install nfs-utils portmap
 service portmap restart
 
 service netfs restart
 chkconfig –level 345 on
 
 8.NFS服务端启动成功后,客户端可以利用showmount命令测试是否能连上服务端:
 命令格式:showmount -e [hostname|IP],showmount命令需要安装了nfs-utils软件包才有。
 
 showmount -e 192.168.1.2
 
 显示如下:
 
 /home/nfsdir *
 /home/share (everyone)
 
 9.客户端建立挂载的文件夹:
 
 cd /mnt
 mkdir nfs1
 mkdir nfs2
 
 10.客户端使用mount命令挂载NFS共享文件:
 
 mount -t nfs 192.168.1.2:/home/nfsdir /mnt/nfs1
 mount -t nfs 192.168.1.2:/home/share /mnt/nfs2
 
 命令格式:mount – t nfs nfs服务器地址:目录共享 本地挂载目录点
 
 11.客户端可使用df命令,mount命令查看挂载情况:
 
 mount
 192.168.1.2:/home/share on /mnt/nfs2 type nfs (rw,addr=192.168.1.2)
 192.168.1.2:/home/nfsdir on /mnt/nfs1 type nfs (rw,addr=192.168.1.2)
 
 或者
 
 df -h
 
 12.客户端卸载NFS文件命令:
 
 umount /mnt/nfs1
 umount /mnt/nfs2
 
 13.客户端可以设置系统启动时自动挂载NFS文件:
 需要将NFS的共享目录挂载信息写入/etc/fstab/文件,以实现对NFS共享目录的自动挂载。
 编辑/etc/fstab文件:
 
 vim /etc/fstab
 
 在最后加入如
 
 192.168.1.2:/home/nfsdir /mnt/nfsdir nfs defaults 0 0
 
 在/etc/fstab里加上需要自动挂载的NFS
 首先测试,使用mount  -a,NFS能成功挂载上来,说明fstab文件语法没有问题,NFS服务也没有问题。
 于是重启系统,期望它能自动挂载。奇怪的是,系统启动完后,NFS没有挂载上来,系统日志有下面的信息:
 mount: mount: mount to NFS server ’192.168.1.2’ failed:
 mount: System Error: No route to host.
 但是,一旦系统启动完成,尝试mount -a命令时,一切OK。由此看来应该是网络的问题。也许是网络起来后,但是路由还没有完全准备好,或者网络还在初始化状态,那么我们需要再自动挂载NFS 的自动化脚本上来一个短暂的休眠而保证网络能够初始化完成。
 修改/etc/init.d/netfs在(注意使用vim修改,不要使用图形化)
 [ ! -f /var/lock/subsys/portmap ] && service portmap start
 action $”Mounting NFS filesystems: ” mount -a -t nfs,nfs4
 之间加上下面一行
 action $”Sleeping for 30 secs: ” sleep 30
 保存后,再测试,OK,你可以需要根据实际的环境来测试,不过30秒基本上能满足需求了。
 如果你能在系统日志中看到类似下面的信息,那表示一切正常
 kernel: bnx2: eth0 NIC Link is Up, 1000 Mbps full duplex
 netfs: Sleeping for 30 secs: succeeded
 netfs: Mounting NFS filesystems: succeeded
 
 14.查看当前主机RPC状态:
 
 rpcinfo -p localhost
(责任编辑:IT)