Linux下文件共享——NFS搭建
服务端搭建
#######服务端############
yum install lrzsz nmap tree dos2unix nc -y #安装常用到的软件
yum install nfs-utils rpcbind #安装NFS
systemctl start rpcbind.service #启用rpcbind服务
systemctl enable rpcbind.service #设置开机启动
systemctl enable nfs.service
rpcinfo -p localhost #查看rpcinfo服务信息
[root@sysadmin ~]# rpcinfo -p localhost
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
service nsf start #启动NFS服务
chown -R nfsnobody.nfsnobody /root/data/ #更改目录属主
vi /etc/exports #设置允许接入的网址和目录(vim /etc/exports)
[root@sysadmin ~]# cat /etc/exports
/root/data 192.168.3.0/24(rw,sync)
#检查rpcbind服务和nfs服务是否启动
service rpcbind status
service rpcbind restart
service nfs restart
rpcinfo -p localhost
service nfs reload
#查询共享是否成功
showmount -e 127.0.0.1
/etc/exports 参数解析
1. 用法
[共享的目录] [主机名或IP(参数,参数)]
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。
当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
2.NFS共享的常用参数
参数 | 含义 |
---|---|
ro | 只读访问 |
rw | 读写访问 |
sync | 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。(优点:数据安全不会丢。缺点:性能比启用该参数要差) |
async | 写入时数据会先写到内存缓冲区,只到硬盘有空档才会再写入磁盘,这样可以提升写入效率!风险:若服务器宕机或不正常关机,会损失缓冲区中未写入磁盘的数据(解决办法:服务器主板电池或加UPS不间断电源) |
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_squas | root用户的所有请求映射成如anonymous用户一样的权限(默认) |
no_root_squas | root用户具有根目录的完全管理访问权限 |
anonuid=xxx | 指定NFS服务器/etc/passwd文件中匿名用户的UID |
anongid=xxx | 指定NFS服务器/etc/passwd文件中匿名用户的GID |
客户端搭建
#######客户端############
yum -y install nfs-utils rpcbind
service rpcbind restart
chkconfig rpcbind on
service rpcbind restart
mkdir -p /sysadmin/manager
mount -t nfs 192.168.3.50:/root/data /sysadmin/manager
fsinfo = `cat /etc/fstab | grep "/sysadmin/manager"`
if [ -z $fsinfo ] ; then echo "192.168.3.50:/root/data /sysadmin/manager nfs defaults 0 0 " >> /etc/fstab;fi
Shell 配置NFS客户端
#################Shell 配置NFS客户端######################
#/bin/bash
timeout -s 9 3 showmount -e 192.168.3.50
if [ $?! = 0 ];then
yum -y install nfs-utils rpcbind
service rpcbind restart
chkconfig rpcbind on
service rpcbind restart
mkdir -p /sysadmin/manager
mount -t nfs 192.168.3.50:/root/data /sysadmin/manager
fsinfo = `cat /etc/fstab | grep "/sysadmin/manager"`
if [ -z $fsinfo ] ; then echo "192.168.3.50:/root/data /sysadmin/manager nfs defaults 0 0 " >> /etc/fstab;fi
else
echo "NFS Client is ok !"
fi
参考链接
Llinux,NFS服务搭建(文件共享)