赞
踩
NFS即网络文件系统,是一种通过网络方式共享文件系统的通用共享解决方案。
Centos 7 版本默认使用版本v4,最小化安装的应该没有。
更多的版本对比可以参考官方网站的FAQ:http://nfs.sourceforge.net/
版本 | 特点 |
---|---|
NFSv2 | 被众多的操作系统支持,兼容性会更好 |
NFSv3 | 更多的特点:更快的速度、更大的单个文件大小、更多便于排错的错误及信息、对TCP/IP协议的支持… |
NFSv4 | 提供有状态的连接,易被追踪连接状态,增强安全性… |
服务端首先启动RPC服务,开启111端口
服务端再启动NFS服务,并向RPC注册端口信息(每次启动NFS服务的端口不固定)
客户端启动RPC服务,向服务端的RPC服务请求服务端的NFS端口号(因为此时服务端的NFS端口号已经在RPC服务中注册了)
服务端的RPC反馈NFS端口号信息给客户端
客户端通过获取的NFS端口号与服务端的NFS建立连接,进行数据的传输
注意事项:在Centos 7中rpcbind用来替换Centos老版本中的portmap提供RPC协议服务
服务端需要安装的服务:NFS和rpcbind
对应的安装服务名称: nfs-utils 和 rpcbind
# yum -y install nfs-utils rpcbind
启动服务
# 先启动rpcbind,再启动NFS
systemctl start rpcbind
systemctl start nfs
# 加入开机自启
systemctl enable rpcbind
systemctl enable nfs
通过读取/etc/exports配置文件来获取哪些客户端可以访问哪些NFS共享文件系统:
一条完整的语法结构:(主机与选项之间没有空格)
共享路径 客户端主机(选项)
共享路径 客户端主机1(选项1) 客户端主机2(选项2)
NFS选项的属性表:
NFS选项 | 描述 | NFS选项 | 描述 |
---|---|---|---|
ro | 只读共享 | rw | 可读可写共享 |
sync | 同步写操作 | async | 异步写操作 |
wdelay | 延迟写操作 | root_squash | 屏蔽远程root权限 |
no_root_squash | 不屏蔽远程root权限 | all_squash | 屏蔽所有的远程用户权限 |
# 将/home/test配置成NFS共享文件
# 语法结构
/home/test *(rw,no_root_squash,no_all_squash,anonuid=0,anongid=0,sync)
# 查看共享的文件夹
[root@vm01 test]# showmount -e 192.168.137.2
Export list for 192.168.137.2:
/home/test *
客户端安装RPC服务:yum -y install nfs-utils
启动服务:systemctl start rpcbind
# 可通过showmount命令查看服务器共享文件夹信息
[root@vm02 ~]# showmount -e 192.168.137.2
Export list for 192.168.137.2:
/home/test *
[root@vm02 ~]#
客户端手动挂载访问方式:mount 服务端ip:共享路径 本机路径
# 将上述的NFS挂载到其他服务器的/home/test下
[root@vm02 ~]# mkdir /home/test
[root@vm02 ~]# mount 192.168.137.2:/home/test /home/test
[root@vm02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 908M 0 908M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.7M 911M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 1.5G 17G 9% /
/dev/sda1 297M 133M 164M 45% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.137.2:/home/test 18G 2.6G 16G 15% /home/test # 挂载成功
[root@vm02 ~]#
NFS服务相关进程说明
nfs:NFS服务器的主进程
nfslock:为NFS文件系统提供锁机制
rpcbind:提供地址与端口注册服务
rpc.mountd:处理NFSv2与NFSv3的mount请求
rpc.nfsd:动态处理客户端请求
lockd:内核线程,服务端与客户端运行,用来实现NLM网络协议,允许NFSv2与NFSv3客户端对文件加锁
rpc.statd:网络状态监控协议
rpc.rquotad:提供用户配额信息
rpc.idmapd:提供NFSv4名称映射,/etc/idmapd.conf必须配置
NFS客户端的高级设置
客户端手动挂载NFS访问格式:
mount -t nfs -o 选项 主机地址:共享目录 本地挂载目录
选项可多个同时使用,彼此使用逗号分隔
挂载选项的属性:
挂载选项 | 说明 |
---|---|
-t | 挂载的设备上的文件系统类型 |
-r | 只读挂载 |
-w | 读写挂载 |
-n | 不更新/etc/mtab |
-a | 自动挂载所有支持自动挂载的设备:定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能 |
-L | 以卷标指定挂载设备 |
-U | 以UUID指定要挂载的设备 |
-B | 绑定目录到另一个目录上 |
-o | 挂载文件系统的选项 |
async:异步模式; | |
sync:同步模式; | |
atime/noatime:包含目录和文件; | |
diratime/nodiratime:目录的访问时间戳 | |
auto/noauto:是否支持自动挂载 | |
exec/noexec:是否支持将文件系统上应用程序运行为进程 | |
dev/nodev:是否支持在此文件系统上使用设备文件; | |
suid/nosuid是否支持在此文件系统上使用特殊权限 | |
remount:重新挂载 | |
ro:只读 | |
rw:读写 | |
user/nouser:是否允许普通用户挂载此设备 | |
acl:启用此文件系统上的acl功能 |
mount -t nfs -o noac,nfsvers=4,_netdev 192.168.137.2:/home/test /home/test
exportfs
# 重新读取/etc/exports文件
exportfs -r
# 显示详细信息
exportfs -v
nfsstat
查看NFS共享状态
# 显示NFS服务端状态 [root@vm01 ~]# nfsstat -s Server rpc stats: calls badcalls badclnt badauth xdrcall 29 0 0 0 0 Server nfs v4: null compound 1 3% 28 96% Server nfs v4 operations: op0-unused op1-unused op2-future access close commit 0 0% 0 0% 0 0% 2 2% 0 0% 0 0% create delegpurge delegreturn getattr getfh link 0 0% 0 0% 0 0% 23 26% 4 4% 0 0% lock lockt locku lookup lookup_root nverify 0 0% 0 0% 0 0% 3 3% 0 0% 0 0% open openattr open_conf open_dgrd putfh putpubfh 0 0% 0 0% 0 0% 0 0% 22 25% 0 0% putrootfh read readdir readlink remove rename 2 2% 0 0% 0 0% 0 0% 0 0% 0 0% renew restorefh savefh secinfo setattr setcltid 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% setcltidconf verify write rellockowner bc_ctl bind_conn 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo 1 1% 1 1% 0 0% 0 0% 0 0% 0 0% getdevlist layoutcommit layoutget layoutreturn secinfononam sequence 0 0% 0 0% 0 0% 0 0% 1 1% 26 30% set_ssv test_stateid want_deleg destroy_clid reclaim_comp 0 0% 0 0% 0 0% 0 0% 1 1% # 仅显示客户端状态 [root@vm02 ~]# nfsstat -c # 客户端执行 Client rpc stats: calls retrans authrefrsh 31 0 31 Client nfs v4: null read write commit open open_conf 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% open_noat open_dgrd close setattr fsinfo renew 0 0% 0 0% 0 0% 0 0% 3 10% 0 0% setclntid confirm lock lockt locku access 0 0% 0 0% 0 0% 0 0% 0 0% 2 6% getattr lookup lookup_root remove rename link 6 20% 3 10% 1 3% 0 0% 0 0% 0 0% symlink create pathconf statfs readlink readdir 0 0% 0 0% 2 6% 1 3% 0 0% 0 0% server_caps delegreturn getacl setacl fs_locations rel_lkowner 5 16% 0 0% 0 0% 0 0% 0 0% 0 0% secinfo exchange_id create_ses destroy_ses sequence get_lease_t 0 0% 0 0% 1 3% 1 3% 0 0% 3 10% reclaim_comp layoutget getdevinfo layoutcommit layoutreturn getdevlist 0 0% 1 3% 0 0% 0 0% 0 0% 0 0% (null) 1 3% # 显示挂载信息 [root@vm02 ~]# nfsstat -m /home/test from 192.168.137.2:/home/test Flags: rw,sync,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.137.3,local_lock=none,addr=192.168.137.2 # 以列表形式显示信息 [root@vm02 ~]# nfsstat -l nfs v4 client total: 31 ------------- ------------- -------- nfs v4 client fsinfo: 3 nfs v4 client access: 2 nfs v4 client getattr: 6 nfs v4 client lookup: 3 nfs v4 client lookup_root: 1 nfs v4 client pathconf: 2 nfs v4 client statfs: 1 nfs v4 client server_caps: 5 nfs v4 client create_ses: 1 nfs v4 client destroy_ses: 1 nfs v4 client get_lease_t: 4 nfs v4 client layoutget: 1 nfs v4 client (null): 1 # 都可以与-l组合使用,便于查看信息
rpcinfo
# 生成RPC信息报表 # 显示指定主机rpcbind操作信息表 [root@vm01 ~]# rpcinfo -m PORTMAP (version 2) statistics NULL SET UNSET GETPORT DUMP CALLIT 0 0/0 0/0 1/1 0 0/0 PMAP_GETPORT call statistics prog vers netid success failure mountd 3 tcp 1 0 RPCBIND (version 3) statistics NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U 0 0/0 0/0 0/0 0 0/0 0 0 0 RPCBIND (version 4) statistics NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U 0 0/0 0/0 0/0 0 0/0 0 0 0 VERADDR INDRECT GETLIST GETSTAT 0 0 0 1 # 显示指定主机RPC注册信息 [root@vm01 ~]# rpcinfo -p 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 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100024 1 udp 44103 status 100024 1 tcp 45007 status 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 47704 nlockmgr 100021 3 udp 47704 nlockmgr 100021 4 udp 47704 nlockmgr 100021 1 tcp 35644 nlockmgr 100021 3 tcp 35644 nlockmgr 100021 4 tcp 35644 nlockmgr # 显示指定主机所有注册RPC的信息程序,不指定主机时默认显示本机信息 [root@vm01 ~]# rpcinfo -s program version(s) netid(s) service owner 100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser 100005 3,2,1 tcp6,udp6,tcp,udp mountd superuser 100024 1 tcp6,udp6,tcp,udp status 29 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
NFS向rpcbind动态注册端口信息,端口信息是动态随机生成的,如果配置固定的端口号有助于我们进行防火墙规则的设置
通过配置文件进行设置:/etc/sysconfig/nfs
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。