网络文件系统(NFS,NetworkFileSystem)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。
一、环境
系统:CentOS 6.4x64位最小化安装
nfs-server:192.168.3.54
nfs-client:192.168.3.55
二、server端安装NFS服务
NFS软件包由nfs-utils提供,依赖于rpcbind服务
[root@nfs-server ~]# yum install nfs-utils rpcbind -y
配置/etc/exports文件,将/data/nfs共享出去
[root@nfs-server ~]# vim /etc/exports /data/nfs 192.168.3.0/24(rw,sync,all_squash) #sync 保持数据同步,也就是将数据同步写入内存和硬盘。这可能导致效率降低 #all_squash 将所有使用NFS服务器共享目录的使用者都映射为匿名账号
配置完成后准备启动服务,需要先启动rpcbind,再启动nfs
[root@nfs-server ~]# service rpcbind start Starting rpcbind: [ OK ] [root@nfs-server ~]# service nfs start Starting NFS services: exportfs: Failed to stat /data/nfs: No such file or directory [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] #上面的报错信息,提示我们数据共享目录不存在,创建数据共享目录 [root@nfs-server ~]# mkdir -p /data/nfs #重新启动NFS服务 [root@nfs-server ~]# service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Shutting down RPC idmapd: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
为了避免对实验过程造成影响,我们关闭iptables
[root@nfs-server ~]# service iptables stop
三、客户端配置
客户端只需要安装nfs-utils即可
[root@nfs-client ~]# yum install nfs-utils -y
查看server端192.168.3.54提供了哪些数据共享服务
[root@nfs-client ~]# showmount -e 192.168.3.54 Export list for 192.168.3.54: /data/nfs 192.168.3.0/24
挂载nfs目录到/mnt目录下
[root@nfs-client ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.3G 16G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 194M 28M 156M 16% /boot #使用nfs协议将192.168.3.54:/data/nfs挂载到/mnt目录下 [root@nfs-client ~]# mount -t nfs 192.168.3.54:/data/nfs /mnt #查看挂载结果 [root@nfs-client ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.3G 16G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 194M 28M 156M 16% /boot 192.168.3.54:/data/nfs 18G 1.6G 16G 10% /mnt
测试:在/mnt目录下创建文件nfs-client.txt
[root@nfs-client ~]# cd /mnt [root@nfs-client mnt]# touch nfs-client.txt touch: cannot touch `nfs-client.txt': Permission denied #结果显示权限拒绝,虽然我们在/etc/exports赋予了rw权限,但是目录本身并没有写权限
修改nfs-server端/data/nfs的权限
#nfs默认使用的用户是匿名用户nfsnobody,我们修改属主为nfsnobody即可 [root@nfs-server ~]# chown -R nfsnobody /data/nfs/ [root@nfs-server ~]# ll /data/ total 8 drwxr-xr-x 2 nfsnobody root 4096 May 5 14:19 nfs
在nfs-client端重新创建文件nfs-client
[root@nfs-client mnt]# pwd /mnt [root@nfs-client mnt]# touch nfs-client.txt #现在能够正常创建文件了 [root@nfs-client mnt]# ll total 0 -rw-r--r-- 1 nfsnobody nfsnobody 0 May 5 14:36 nfs-client.txt
在nfs-server端查看文件
[root@nfs-server ~]# ll /data/nfs/ total 0 -rw-r--r-- 1 nfsnobody nfsnobody 0 May 5 14:36 nfs-client.txt
在nfs-server端创建文件nfs-server.txt文件
[root@nfs-server ~]# touch /data/nfs/nfs-server.txt
在nfs-client端查看结果
[root@nfs-client mnt]# ll /mnt/ total 0 -rw-r--r-- 1 nfsnobody nfsnobody 0 May 5 14:36 nfs-client.txt -rw-r--r-- 1 root root 0 May 5 14:40 nfs-server.txt
注:nfs-sever端修改/etc/exports后,要使用/etc/init.d/nfs reload重新加载配置文件,千万不要使用restart重启nfs服务。因为在工作中nfs服务端可能是向多台服务器提供数据共享服务,使用restart重启nfs服务,会使前端程序的写入操作失败,这是不能容忍的。