网络文件共享-nfs服务

NFS服务简介:

NFS:Network File System 网络文件系统
软件包:nfs-utils
Kernel支持:nfs.ko
使用updatedb来更新locate数据库
[root@www14:45:56upload]#locate nfs.ko
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/drivers/xen/xenfs/xenfs.ko.xz
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/fs/nfs/nfs.ko.xz

NFS优势:
节省本地存储空间
将常用的数据,如home目录
存放在NFS服务器上且可以通过网络访问
本地终端将可减少自身存储空间的使用

NFS服务主要进程: 
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录 
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理 
rpc.lockd 非必要,管理文件锁,避免同时写出错 
rpc.statd 非必要,检查文件一致性,可修复文件

启动服务:
centos7:systemctl start nfs.server
centos6:service nfs start

实现方式:

安装软件包:
yum install -y nfs-utils

配置文件:
/etc/exports --初始为空
/etc/exports.d/*.exports
日志:
/var/lib/nfs/

监听端口:
2049(nfsd) ---tcp协议

查看端口号命令:查看和nfs命令相关的端口号
rpcinfo -p 
[root@www15:29:14~]#rpcinfo -p 
   program vers proto   port  service
    100000    4   tcp    111  portmapper


其它端口由portmap(111)分配--依赖于这个服务!

rpcbind服务 :端口监听111
当nfs重启时,会把变动端口注册到rpcbind服务中!

centos7中当rpcbind服务关闭时,
启动nfs服务,rpcbind一样会被启动!
centos6中不会主动激活!


配置防火墙,开放NFS服务

配置NFS使用固定端口
vim  /etc/sysconfig/nfs 
RQUOTAD_PORT=875 
LOCKD_TCPPORT=32803 
LOCKD_UDPPORT=32769 
MOUNTD_PORT=892 
STATD_PORT=662 
STATD_OUTGOING_PORT=2020

防火墙除开放上述端口,还需开放TCP和UDP的111和2049共4个端口

CentOS6开始portmap进程由rpcbind代替

简单实现:

共享文件/data/nfs1目录:

vim /etc/exports

/data/nfs1 *
*:所有主机!

并且在/data/nfs1中创建测试文件

生效方式:
systemctl restart nfs-server

exportfs -r 

exportfs -v --查看服务挂载信息
默认的共享选项:
/data/nfs1    	<world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

查看主机nfs共享资源:
showmount -e  主机IP
具体使用:
showmount -e 172.20.23.32

挂载方式:在非nfs服务器主机上
要创建一个目录!
mount 172.20.23.32:/data/nfs1 /mnt/test/

共享选项:
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
具体应用:
需要对文件或目录更改授权,让nfsnobody用户对其有写权限!

async 异步,数据变化后不立即写磁盘,性能高

sync(1.0.0后为默认)同步,数据在请求时立即写入共享

no_all_squash(默认)保留共享文件的UID和GID 
--所有的用户不压榨,只要服务器中有和客户端用户相同id的用户,客户端访问时,就会拥有和服务器端用户相同的权利

all_squash 所有远程用户(包括root)都变成nfsnobody
---有这一项就全部压榨!no_root_squash就失效了!

root_squash(默认)远程root映射为nfsnobody,UID为65534早期版本 是4294967294(nfsnobody)

no_root_squash 远程root映射成root用户
具体用法:
/data/nfs2   172.20.23.50(rw,no_root_squash)

anonuid和anongid 指明匿名用户映射为特定用户UID和组GID
而非 nfsnobody,可配合all_squash使用
具体用法:
anonuid=2000
anongid=2000

共享案例2:
/data/nfs2   172.20.23.50(rw,no_root_squash)
设置共享主机和读写挂载及远程主机不压榨

支持针对不同主机设置权限:
具体应用:多个主机网段之间用空格隔开
/data/nfs2   172.20.0.0/16(rw,no_root_squash) 172.20.23.20(ro)

地址格式:
IP networks:两种掩码格式均支持 
172.18.0.0/255.255.0.0 
172.18.0.0/16

其它相关工具:

rpcinfo:rpc监听111端口[tcp/udp]
rpcinfo -p hostname
rpcinfo –s hostname 查看RPC注册程序
[root@www14:39:35data]#rpcinfo -s 172.20.23.32
   program version(s) netid(s)                         service     owner
    100000  2,3,4     local,udp,tcp,udp6,tcp6          portmapper  superuser
    100024  1         tcp6,udp6,tcp,udp                status      29
    100005  3,2,1     tcp6,udp6,tcp,udp                mountd      superuser
    100003  4,3       udp6,tcp6,udp,tcp                nfs         superuser
    100227  3         udp6,tcp6,udp,tcp                nfs_acl     superuser
    100021  4,3,1     tcp6,udp6,tcp,udp                nlockmgr    superuser
exportfs
–v 查看本机所有NFS共享
–r 重读配置文件,并共享目录
–a 输出本机所有共享
–au 停止本机所有共享
-u 停止本机指定共享

NFS相关的挂载选项: 
fg(默认)前台挂载
bg后台挂载 
hard(默认)持续请求,soft 非持续请求 
intr和hard配合,请求可中断 
rsize和wsize 一次读和写数据最大字节数,rsize=32768 
_netdev 无网络不挂
基于安全考虑,建议使用nosuid,nodev,noexec挂载选项

自动挂载的实现:

自动挂载:
可使用autofs按需要挂载NFS共享,在空闲时自动卸载
由autofs包提供 
系统管理器指定由/etc/auto.master自动挂载器守护进程控制的挂载点
自动挂载监视器访问这些目录并按要求挂载文件系统
文件系统在失活的指定间隔5分钟后会自动卸载
为所有导出到网络中的NFS启用特殊匹配 -host 至“browse
支持含通配符的目录名
*     server:/export/&

相对路径写法:
主配置文件:
/etc/auto.master
定义dirname
具体用法:
/mydata  /etc/auto.fs

/etc/auto.fs
定义basename
具体用法:
data      -fstype=nfs,rw,nosuid,nodev	172.20.23.32:/data/nfs1

绝对路径法:
vim /etc/auto.master
/- /etc/data.fs

vim /etc/data.fs
/home/yl    -fstype=nfs,rw,nosuid,nodev	172.20.23.32:/data/nfs1


nfs默认挂载版本时4.1如果要挂载成3版本需要添加选项
例如:
mount -o vers=3 172.20.23.33:/data/ /mnt

猜你喜欢

转载自blog.csdn.net/weixin_42747452/article/details/83572926
今日推荐