nfs

NFS服务器安装与配置

Posted by Sunday on 2017-10-27

NFS是网络文件系统,是一种分布式文件系统协议,允许您在服务器上安装远程目录。 这为您提供了在不同位置的简单存储空间,并从多个客户端写入该空间。 通过网络访问远程系统的方式,并且在定期访问共享资源的情况下运行良好。

环境

系统: Ubuntu 16.04
服务器: 192.168.1.42
客户端: 192.168.1.41
防火墙: ufw disable

参数解析

1
2
3
4
5
6
7
8
9
rw :读写;
ro :只读;
sync :同步,内存中数据时时写入磁盘;
async :异步,把内存中数据定期写入磁盘中;
all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
no_root_squash :root用户对共享目录拥有至高的权限控制,就像是对本机的目录进行操作一样,不安全,不建议使用
anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

服务器操作

安装nfs

1
$ apt-get -y install nfs-kernel-server

centos: yum install -y nfs-utils

配置共享目录

1
2
$ vim /etc/exports
/www 192.168.1.0/24(rw,async,no_subtree_check,all_squash,anonuid=1002,anongid=1002)

添加nfs用户

1
$ useradd -u 1002 -s /usr/sbin/nologin www

共享目录授权

1
2
$ mkdir -pv /www
$ chown -R www.www /www #简单粗暴方法,或用setfacl -m u:www:rwx /www

查看nfs服务状态

默认安装后会启动,同时会自动开机启动

1
2
3
$ systemctl status nfs-kernel-server
$ systemctl status rpcbind
$ systemctl status rpcbind.socket

查看共享目录

1
2
3
$ showmount -e 192.168.1.42
Export list for 192.168.1.42:
/www 192.168.1.0/24

查看rpc信息

1
$ rpcinfo -p 192.168.1.42

修改或添加共享目录

当修改了/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,即可重新加载
a 全部挂载(或卸载)/etc/exports档案内的设定
r 重新挂载/etc/exports 里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容

1
$ exportfs -ar

客户端操作

添加nfs用户

1
useradd -u 1002 -s /usr/sbin/nologin www

安装nfs

1
$ apt-get install -y nfs-common

centos : yum install -y nfs-util

查看服务器nfs目录

1
2
3
$ showmount -e 192.168.1.42
Export list for 192.168.1.42:
/www 192.168.1.0/24

挂载nfs目录

1
$ mount -t nfs 192.168.1.42:/www /data

开机自动挂载

1
echo "mount -t nfs 192.168.1.42:/www /data" /etc/rc.local

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-16-04