一、准备工作
环境说明
系统版本 | 内核版本 | 用途 | IP地址 | 主机名 |
CentOS Linux release 7.4.1708 (Core) |
3.10.0-693.el7.x86_64 |
NFS服务器端 | 192.168.10.101 |
Client.ifeng.com |
CentOS release 6.5 (Final) |
2.6.32-431.el6.x86_64 |
NFS客户端 | 192.168.10.102 |
nginx.ifeng.com |
关闭SELinux
#关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
二、安装配置NFS服务端
安装软件包,由于NFS软件是需要RPC服务,它在NFS共享时候负责通知客户端,服务器的NFS端口号,因此需要一并安装
yum install -y rpc-bind nfs-utils
主要配置文件说明/etc/exports
/etc/exports文件内容格式:
<输出目录> 客户端(选项:访问权限,用户映射,其他]
输出目录是指NFS系统中所定义的共享给客户端使用的文件系统
客户端是定义网络中可以访问这个NFS共享目录的IP地址或网段或域名等
客户端常用的指定方式
指定ip地址的主机:192.168.100.1
指定一个子网:192.168.100.0/24 也可以写成:192.168.100.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
配置NFS
示例:向所有人共享share目录,权限为可读写(创建NFS共享目录的时候建议命名一些有意义的目录名,方便其他人知道此目录的用途)
#创建共享目录 [root@Client ~]# mkdir /data/NFS/share -p #授权 [root@Client share]# chmod 766 /data/NFS/share/
[root@Client share]# chown -R nfsnobody.nfsnobody /data/NFS/share/ #添加到NFS配置文件 [root@Client share]# echo "/data/NFS/share *(rw,sync)" >>/etc/exports #启动nfs和rbcbind服务 [root@Client share]# systemctl restart rpcbind [root@Client share]# systemctl restart nfs #查看NFS配置结果 [root@Client share]# showmount -e 127.0.0.1 Export list for 127.0.0.1: /data/NFS/share *
客户端挂载NFS共享目录(客户端需要安装nfs-utils包)
#查看NFS服务器 [root@nginx ~]# showmount -e 192.168.10.101 Export list for 192.168.10.101: /data/NFS/share * #创建挂载目录 [root@nginx ~]# mkdir -p /data/NFS/share #挂载NFS共享目录 [root@nginx ~]# mount -t nfs 192.168.10.101:/data/NFS/share /data/NFS/share/ #查看挂载结果 [root@nginx ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 2.7G 14G 17% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 485M 34M 426M 8% /boot 192.168.10.101:/data/NFS/share 18G 1.5G 17G 9% /data/NFS/share #添加挂载到开机启动 echo "mount -t nfs 192.168.10.101:/data/NFS/share /data/NFS/share/">>/etc/rc.local
测试:
客户端向共享目录写入文件,查看服务端结果
#客户端 [root@nginx share]# echo "12312313" >>test.txt [root@nginx share]# cat test.txt 12312313 [root@nginx share]# pwd /data/NFS/share #服务端 [root@Client share]# pwd /data/NFS/share [root@Client share]# cat test.txt 12312313
一键安装配置脚本,共享目录为/data/NFS/share,共享方式为面向所有人可读写(此处可根据需要修改为变量方式):
服务端:
#!/bin/bash
#create:2018.4.9
#nfs server
setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld yum install -y rpc-bind nfs-utils mkdir -p /data/NFS/share echo "/data/NFS/share *(rw,sync)" >>/etc/exports chown -R nfsnobody.nfsnobody /data/NFS/share/ chmod 766 /data/NFS/share/ sysctl restart rpcbind systemctl restart nfs
客户端:
#!/bin/bash
#create:2018.4.9
#nfs client
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
/etc/init.d/iptables stop
yum install -y nfs-utils
mkdir -p /data/NFS/share
mount -t nfs 192.168.10.101:/data/NFS/share /data/NFS/share/
echo "mount -t nfs 192.168.10.101:/data/NFS/share /data/NFS/share/">>/etc/rc.local