NFS 是 Network File System 的缩写,即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。
服务端
共享/data/share目录
用于存储server01主机的web数据 //后面有web服务再做
仅允许service网段访问该共享
c
yum install nfs-utils //安装NFS
systemctl start rpcbind //nfs的消息通知服务
systemctl start nfs //开启nfs服务
mkdir /data/share //创建共享目录
chmod 755 /data/share //设置权限
vim /etc/exports //配置需要共享的目录,及权限
/data/share 172.16.100.128/25(rw,sync,no_root_squash,no_all_squash)
/data/share //共享目录
172.16.100.128/25 //仅允许service网段访问
rw //权限设置,读写
sync //同步共享目录
no_root_squash //可以使用root授权
no_all_squash //可以使用普通用户授权
c
systemctl restart nfs //重启服务
showmount -e localhost //检查下本地的共享目录
Export list for localhost:
/data/share 172.16.100.128/25
客户端
c
yum -y install nfs-utils //安装nfs服务
systemctl start rpcbind //启动NFS服务
showmount -e 172.16.100.201 //查下客户端的共享目录
Export list for 172.16.100.201:
/data/share 172.16.100.128/25
mkdir -p /data/share //在客户端创建目录
mount -t nfs 172.16.100.201:/data/share /data/share //将服务器的共享目录挂载到本地目录
mount //查看是否成功
172.16.100.201:/data/share on /data/share type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.100.202,local_lock=none,addr=172.16.100.201) //说明成功
测试
c
cd /data/share //进入共享目录
touch a //创建文件a
ll //查看下权限
//到服务器端查看
cd /data/share
ll //可以看到共享目录已经写入
誉天
共享/mnt目录
c
vim /etc/exports //编辑配置文件
/mnt *(rw,async)
/mnt //要共享的目录
* //允许访问的主机,*表示所有
rw //以可读写的方式进行共享
async //使用异步同步的方式来进行同步
重启服务
排错
c
tail -f /var/log/messages //查看日志消息
共享权限 | 功能 |
---|---|
ro/rw | 只读或者读写共享 |
sync/async | 同步或者异步 |
sec=sys | 基于标准linux文件权限访问 |
root_squash | 限制远程主机上以root访问,root用户映射为nobody用户 |
no_root_squash | 远程主机用root访问,映射为本地的root用户 |
all_squash | 限制远程主机上的所有普通用户访问,普通用户映射为nobody用户 |
no_all_squash | 远程主机普通用户访问,映射为本地同uid的用户 |
客户端查看共享情况
c
showmount -e (主机名/IP)
挂载目录
c
mkdir /mnt //先创建挂载点
mount (主机名/IP):/mnt /mnt //把nfs服务器的/mnt 挂载到本地的/mnt 后者是本地的
192.168.40.10:/mnt /mnt nfs defaults 0 0 //永久挂载,编写进/etc/fstab
umount /mnt //取消挂载
mount -a //刷新挂载点
df -h //查看挂载情况
查看共享目录的权限
c
exportfs -v //查看所有的nfs共享
exportfs -r //使配置文件生效
这个时候呢,可能无法写入,因为默认是将访问的用户映射为nobody用户了,所以么有权限写入
c
chmod 757 /mnt //给其他人权限拉满
同步和异步的区别
同步
c
用户写入数据, 先写在客户端上,客户端再传给服务端,服务端写好后,再回复客户端写好了
//数据一致性强要求,但是传输慢。如果两台主机的距离长,链路延迟大,不能用同步,太慢了
异步
c
用户写入数据,先写在客户端上,客户端会周期性的把数据同步到服务端上
//没有数据一致性要求的,可以用异步,速度快