大纲:
一、NFS简介
二、系统环境
三、安装配置NFS
四、NFS配置文件详解
一、NFS简介
NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
二、系统环境
系统平台:CentOS release 6.5 (Final)
NFS-Server端:172.16.1.103 node1
NFS-Client端:172.16.1.104 node2
三、安装配置NFS
NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的。
nfs-utils-* :包括基本的NFS命令与监控程序
rpcbind :支持安全NFS RPC服务的连接
1、先查看所需安装包(nfs-utils、rpcbind)是否已经安装
[root@node1 ~]# rpm -qa | grep "rpcbind" rpcbind-0.2.0-11.el6.x86_64 [root@node1 ~]# rpm -qa | grep "nfs" nfs-utils-1.2.3-64.el6.x86_64 nfs-utils-lib-1.1.5-11.el6.x86_64
2、没有安装的话则执行以下命令安装
[root@node1 ~]# yum -y install nfs-utils rpcbind
3、NFS配置文件及共享目录
[root@node1 ~]# mkdir /www [root@node1 ~]# vim /etc/exports /data/www 172.16.0.0/16(rw,no_root_squash)
4、先启动rpcbind,再启动NFS
[root@node1 ~]# service rpcbind start Starting rpcbind: [ OK ] [root@node1 ~]# netstat -tunlp | grep :111 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 60625/rpcbind tcp 0 0 :::111 :::* LISTEN 60625/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 60625/rpcbind udp 0 0 :::111 :::* 60625/rpcbind [root@node1 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@node1 ~]# rpcinfo -p # 可以看到NFS服务器端已向RPC注册端口 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 34849 mountd 100005 1 tcp 53780 mountd 100005 2 udp 55188 mountd 100005 2 tcp 34271 mountd 100005 3 udp 52608 mountd 100005 3 tcp 35970 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 41610 nlockmgr 100021 3 udp 41610 nlockmgr 100021 4 udp 41610 nlockmgr 100021 1 tcp 53871 nlockmgr 100021 3 tcp 53871 nlockmgr 100021 4 tcp 53871 nlockmgr ps:如果要让开机自启动,则执行如下命令 chkconfig rpcbind on chkconfig nfs on
5、客户端挂载
(1).showmount查看NFS共享目录
[root@node2 ~]# mount -t nfs 172.16.1.103:/data/www /mnt # 客户端挂载NFS [root@node2 ~]# ls /mnt/ a.com b.net c.edu d.org node1.com # 此时可以看到里面的文件了 [root@node2 ~]# showmount -d 172.16.1.103 # 显示NFS服务器所有导出的并且被客户端挂载了的文件系统列表 Directories on 172.16.1.103: /data/www [root@node2 ~]# showmount -a 172.16.1.103 # 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应列表 All mount points on 172.16.1.103: 172.16.1.104:/data/www [root@node2 ~]# showmount -e 172.16.1.103 # 查看NFS服务器导出的各文件系统 Export list for 172.16.1.103: /data/www 172.16.0.0/16
(2).exportfs导出目录
[root@node1 ~]# cat /etc/exports /data/www 172.16.0.0/16(rw) # 此时只导出了/data/www [root@node1 ~]# vim /etc/exports [root@node1 ~]# cat /etc/exports /data/www 172.16.0.0/16(rw) /var/ftpshared 172.16.0.0/16(rw) # 增加了/var/ftpshared [root@node1 ~]# exportfs -avr # 重新导出所有的文件系统 exporting 172.16.0.0/16:/var/ftpshared exporting 172.16.0.0/16:/data/www [root@node1 ~]# showmount -e 172.16.1.103 # 可以看到刚刚新加的也被导出了 Export list for 172.16.1.103: /var/ftpshared 172.16.0.0/16 /data/www 172.16.0.0/16 [root@node1 ~]# exportfs -avu # 取消所有的导出 [root@node1 ~]# showmount -e 172.16.1.103 Export list for 172.16.1.103: # 可以看到所有的导出都撤销了
6、实现开机自动挂载NFS文件系统
[root@node2 ~]# vim /etc/fstab [root@node2 ~]# cat /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 172.16.1.103:/data/www /mnt nfs defaults,_netdev 0 0
四、NFS配置文件详解
NFS配置文件:/etc/exports
共享目录 允许访问NFS的主机或网络地址(选项)
下面列出一些常见的选项
ro:默认选项,以只读的方式共享。
rw:以读写的方式共享。
root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。
no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。
all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。
anonuid:设置映射到本地的匿名用户的UID
anongid:设置映射到本地的匿名用户的GID
sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。
async:异步,先将数据写入到内存,在将数据写入到硬盘。
secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。
insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)。