您的位置:首页 > 理论基础 > 计算机网络

网络文件共享-nfs服务

2018-10-31 08:40 274 查看

NFS服务简介:

[code]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

实现方式:

[code]安装软件包:
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代替

简单实现:

[code]共享文件/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

其它相关工具:

[code]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挂载选项

自动挂载的实现:

[code]自动挂载:
可使用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
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: