4、NFS
一、NFS简介
4.1.1:什么是NFS
- NFS(Network File System,网络文件系统)是由SUN公司开发,并于1984年推出的技术,通过使用NF,用户和程序可以向访问本地文件一样访问远程系统上的文件
- 比如一组致力于同一工程的用户,可以通过使用NFS文件系统中的一个挂在为/it的共享目录来存取该工程项目的文件
- NFS服务本身并没有提供文件传递的协议,但是NFS却能让我们进行文件共享,其中的原因,就是NFS使用RPC协议。所以只要用到NFS的地方,不管是客户端还是服务端,都要启动RPC服务。
- 可以这么理解NFS和RPC:NFS是一个文件系统,而RPC负责信息的传输
4.1.2:NFS协议
客户端使用NFS可以透明的访问服务器中的文件系统,这不同于提供文件传输的FTP协议。FTP会产生文件的一个完整副本。NFS只访问一个进程引用文件部分,并且一个目的就是使得这种方式透明。
二、NFS服务器安装和配置
4.2.1:安装NFS服务器
yum install nfs-utils nfs-utils-lib
4.2.2:/etc/nfsmount.conf文件详解
# [ MountPoint "Mount_point" ]
# command. Example:
# [ MountPoint "/export/home" ]
# background=True
# [ Server "Server_Name" ]
# Example:
# [ Server "nfsserver.foo.com" ]
# rsize=32k
# wsize=32k
# Defaultvers=4 # 定义默认用于启动协商与服务器的协议版本
# Nfsvers=4 # 服务器支持的版本
# Defaultproto=tcp # 定义默认用于启动协商与服务器的网络协议
# Proto=tcp # 设置服务器支持指定的网络协议
# Retrans=2 # 产生超市前,要求隐退的次数
# Retry=2 # 重试挂载的分钟数
# acregmin=30
# acregmin=60
# acregmin=30
# acregmin=60
# Acl=False
# Ac=True
# Background=False # 是否在后台挂载
# Cto=True
# Foreground=True
# Hard=True
# Soft=False
# Lock=True # 启用文件锁
# Rdirplus=True
# Rsize=8k # 最大读取尺寸
# Wsize=8k # 最大写入尺寸
# Bsize=8k # 服务器最大块大小
# Sloppy=False
# Sharecache=True
# Timeo=600 # 客户端等待来自服务器的响应之前重传请求时间量
# actimeo=30 # 设置所有属性时间为相同的时间
# mountport=4001 # 服务器挂载端口
# mountproto=tcp # 服务器挂在协议
# mountvers=3 # 服务器挂载版本
# mounthost=hostname # 服务器挂载主机
# Port=2049 # NFS服务器的端口号
# Sec=sys
4.2.3:/etc/exports文件详解
/etc/exports文件控制着NFS服务器要导出的共享目录以及访问控制列表。/etc/exports文件默认是空白的,没有任何内容。也就是说NFS服务器默认不共享任何目录
文件格式如些
共享目录 客户端(导出选项)
1.共享目录
必须是绝对路径,而且必须先创建好,该目录为NFS服务器上的共享目录并提供给客户端使用
使用以下命令创建
[root@C1 ~]#mkdir /it
[root@C1 ~]#touch /it/a
2.客户端
客户端是指可以访问NFS服务器共享目录的客户端计算机,可以使一个主机、一个网段、甚至一个域
指定方式
客户端 192.168.9.6
网段 192.168.9.0/24、192.168.0.0/255.255.255.0
网段 192.168.9.*
域名客户端 linux.p-p.cn
指定域内所有客户端 *.p-pp.cn
素有客户端 *
3.导出选项
ro:只读
rw:读写
sync:同步,数据同步写到内存与硬盘中
async:异步,数据先暂存内存
root_squash: 将root用户映射为来宾账号
no_root_squash: 有root的权限,不建议使用
all_squash: 全部映射为匿名用户
anonuid, anongid: 指定映射的匿名用户的UID和GID
insecure # 允许使用1024以上的端口访问,这个很有用,比如内网通过路由器挂载公网的NFS服务器,就需要启用这个
……
4.2.4:配置实例
1.允许某台主机以只读挂载
[root@C1 ~]#vim /etc/exports
/it www.p-pp.cn(ro,sync)
2.允许某台主机读写挂载
[root@C1 ~]#vim /etc/exports
/it 192.168.9.6(rw,sync)
3.允许所有主机只读权限挂载
使用NFS服务器共享目录的用户都将映射为匿名用户,匿名用户将使用UID和GID为65534的系统用户(必须事先存在)
[root@C1 ~]#vim /etc/exports
/it *(ro,all_squash,aninuid=65534,nongid=65534)
4.允许某一网段只读挂载
[root@C1 ~]#vim /etc/exports
/it 192.168.9.0/24(ro) 192.168.10.0/24(ro)
5.允许某一网段只读挂载
并将root用户映射为匿名用户
[root@C1 ~]#vim /etc/exports
/it 192.168.9.*(ro,root_squash)
6.允许某一域的指定客户端以www开头的p-pp.cn域读写权限挂载
[root@C1 ~]#vim /etc/exports
/it www*.p-pp.cn(rw)
7.允许指定读写挂载
[root@C1 ~]#vim /etc/exports
/it c[1-10].p-pp.cn(rw)
4.2.5:控制NFS服务
start、status、restart、stop
chkconfig nfs on
三、管理NFS共享目录
4.3.1:维护NFS共享目录
exportfs命令可以导出NFS服务器上的共享目录、显示共享目录、后者不导出共享目录
exportfs [选项] [目录]
-a:导出或不导出所有的目录
-v:显示导出列表的同时,也显示导出选项的列表
-u:不导出指定的目录。当和-a联用时,不导出所有的目录
-i:忽略/etc/exports文件,只使用默认选项和命令行上给出的选项
-f:指定一个新的导出文件,而不是/etc/exports文件
-r:重新导出所有的目录
-o <选项>:指定导出选项列表
例4.1:显示NFS服务器上的共享目录以及导出选项信息
[root@C1 ~]#exportfs -v
/it www.p-pp.cn(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
例4.2:重新导出NFS服务器上所有共享目录
[root@C1 ~]#exportfs -rv
exporting www.p-pp.cn:/it
例4.3:不导出NFS所有共享目录
[root@C1 ~]#exportfs -au
[root@C1 ~]#exportfs -v # 没有任何的输出
例4.4:不导出NFS服务器上指定的共享目录/it
[root@C1 ~]#exportfs -u www.p-pp.cn:/it
[root@C1 ~]#exportfs -v
例4.5:将it目录导出共享给www.p-pp.cn,允许匿名写入
[root@C1 ~]#exportfs -o async,rw www.p-pp.cn:/it
几个配置示例:
exportfs -o async,rw,insecure 1.194.17.241:/it # insecure:允许1.194.17.241使用1024以上的端口访问
exportfs -o anonuid=32,anungid=32 www.p-pp.cn:/it # www.p-pp.cn挂载时,映射为uid32的用户和gid32的组
exportfs -o rw,sync,no_root_squash www.p-pp.cn:/it # www.p-pp.cn挂载时,root用户不映射为匿名用户
4.3.2:查看NFS共享目录信息
showmunt命令可以显示NFS服务器的挂挂载信息
showmount [选项] [NFS服务器]
-a:同时显示客户端主机名或IP地址以及挂载的目录
-e:显示NFS的导出列表
-d:只显示已经被挂载的NFS共享目录信息
例4.6:查看NFS服务器C1.p-pp.cn上的共享信息
[root@www ~]#showmount -e C1.p-pp.cn # 如果是阿里云云服务器,记得本地关了防火墙之后,进入控制台,添加安全规则后,才可以显示
4.3.3:/var/lib/nfs/etab文件
查看服务器端的/var/lib/nfs/etab,获取NFS服务器共享目录的详细信息
[root@C1 ~]#cat /var/lib/nfs/etab
/it www.p-pp.cn(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
四、客户端挂载
4.4.1:挂载和卸载NFS
1.安装nfs-utils
2.查看:showmount -e C1.p-pp.cn
3.挂载和卸载
mount -t nfs [NFS服务器IP地址或主机名:NFS共享目录] [本地挂载目录]
挂载C1.p-pp.cn的/it共享目录到本地目录的/mnt/it
mount -t nfs C1.p-pp.cn:/it /mnt/it/
卸载
umount /mnt/it/
4.使用tcp挂载NFS
mount -o rw,tcp -t nfs C1.p-pp.cn:/it /mnt/it
4.4.2开机自动挂载NFS
echo "C1.p-pp.cn:/it /mnt/it nfs rsize=8192,wsize=8192,timeo=14,innr" >>/etc/fstab
五、高级配置
4.5.1:NFS系统的自动挂载
1.安装autofs
yum install autofs
2.创建本地挂载点
mkdir /mnt/it
3.编辑//etc/auto.master文件,添加一行
……
/mnt /etc/auto.nfs
4.编辑/etc/auto.nfs
it -fstype=nfs C1.p-pp.cn:/it
5.systemctl start autofs
6.ls /mnt/it
4.5.2:/etc/sysconfig/nfs详解
#MOUNTD_NFS_V2="no"
#MOUNTD_NFS_V3="no"
#RQUOTAD="/usr/sbin/rpc.rquotad"
#RQUOTAD_PORT=875 # 设置rpc.rquotadd监听的端口
#RPCRQUOTADOPTS=""
#LOCKDARG=
#LOCKD_TCPPORT=32803 # rpc.lockd监听的tcp端口
#LOCKD_UDPPORT=32769 # rpc.lockd监听的udp端口
#RPCNFSDARGS="-N 2 -N 3"
#RPCNFSDARGS="-N 4"
#RPCNFSDCOUNT=8 # 要启动NFS进程的数量
#NFSD_MODULE="noload"
#NFSD_V4_GRACE=90
#RPCMOUNTDOPTS=""
#MOUNTD_PORT=892 # 设置rpc.mountd监听端口
#STATDARG=""
#STATD_PORT=662 # 设置rpc.mtatd监听的端口
#STATD_OUTGOING_PORT=2020
#STATD_HA_CALLOUT="/usr/local/bin/foo"
#RPCIDMAPDARGS=""
#SECURE_NFS="yes" # 设置打开安全的NFS挂载
#RPCGSSDARGS=""
#RPCSVCGSSDARGS=""
#RDMA_PORT=2004
4.5.3:NFS使用固定端口
1.编辑/etc/sysconfig/nfs文件
MOUNTD_PORT=6221
STATD_PORT=6222
LOCKD_TCPPORT=6223
LOCKD_UDPPORT=6223
RQUOTAD_PORT=6224
2.重启NFS
3.查看NFS使用端口
rpcinfo -p | grep 622*
六、管理NFS统计信息
4.6.1:显示统计信息(服务端输的命令)
nfsstat [选项]
(1)-b:显示NFS V4服务器的其他统计信息。
(2)c:只显示客户机端的NFS和RPC信息,允许用户仅查看客户机数据的报告。nfsstat命令提供关于被客户机发送和拒绝的RPC和NFS调用数目的信息。
要只显示客户机NFS或者RPC信息,将该参数与-n或者-r参数结合。
(3)-d:显示与NFS V4授权相关的信息。
(4)-g:显示RPCSEC_GSS信息。
(5)-m:显示每个NFS文件系统的统计信息,该文件系统和服务器名称、地址、安装标志、当前读和写大小,以及重新传输计数
(6)-n:为客户机和服务器显示NFS信息。要只显示NFS客户机或服务器信息,将该参数与-c和-s参数结合。
(7)-r:显示RPC信息。
(8)-s:显示服务器信息。
(9)-t:显示与NFS标识映射子系统的转换请求相关的统计信息,要只显示NFS客户机或服务器信息,将-c和-s<br />选项结合。
(10)-4:当与-c、-n、-s或-z参数组合使用时,将包含NFS V4客户机或服务器的信息,以及现有的NFS V2和V3数据<br />。
(11)-z:重新初始化统计信息。该参数仅供root用户使用,并且在显示上面的标志后可以和那些标志中的任何一个组合到<br />统计信息的零特殊集合。
(12 ) -l:统计列表显示
4.6.2:客户端挂载信息(客户端输的命令)
nfsiostat [时间间隔] [次数] [选项] [挂载点]
-a:显示有关属性缓存的统计信息
-d:显示有关目录统计信息
-p:显示有关页面缓存信息
-s:按次/秒排序挂载点
例子:显示NFS客户机每次挂载的统计信息
nfsiostat
4、NFS的更多相关文章
- RPC、SQL、NFS属于OSI的哪一层
第一层:物理层 第二层:数据链路层 802.2.802.3ATM.HDLC.FRAME RELAY 第三层:网络层 IP.IPX.ARP.APPLETALK.ICMP 第四层:传输层 TCP.UDP. ...
- Linux远程备份—ftp方式、NFS方式
问题:现在项目中每天都有从其它各个系统发过来的数据文件(存放在/var/data目录下,以.txt结尾),虽然很久以前的文件很少用到,占用了很多空间,却不能删除.于是,想把一个月以前的文件都压缩了传到 ...
- Linux笔记③(ftp、nfs、ssh服务器搭建)
1.ftp服务器搭建(利用vsftpd这个工具) 作用:文件的上传和下载 服务器端: 修改配置文件,配置文件目录:/etc/vsftpd.conf ,修改里面的允许匿名访问.指定匿名访问目录等操作,根 ...
- cinder块存储 后端采用lvm、nfs安装配置
#cinder块存储 后端采用lvm.nfs安装配置 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder ...
- cinder存储节点 后端采用lvm、nfs安装配置
#cinder存储节点 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder存储节点 #cinder后端采 ...
- MPSOC之9——host、embeded间tftp、nfs、ftp环境搭建
tftp 可传输单个文件,不能传文件夹 需要通过命令传输文件,略显复杂 ==一般调试kernel时,用uboot通过tftp方式启动,不用每次都烧写存储介质== nfs 在host linux(ubu ...
- docker volume创建、备份、nfs存储
docker存储volume #环境 centos7.4 , Docker version 17.12.0-ce docker volume创建.备份.nfs存储 #docker volume 数据存 ...
- NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题
1.NFS (network file system,基于RPC协议) 2.NFS服务端安装配置安装服务端:yum install nfs-utils rpcbind -y安装客户端:yum inst ...
- 根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统
最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的 ...
随机推荐
- 43-2-CAN协议
1.帧的种类 通信是通过以下 5 种类型的帧进行的. • 数据帧 • 遥控帧 • 错误帧 • 过载帧 • 帧间隔 另外, 数据帧和遥控帧有标准格式和扩展格式两种格式.标准格式有 11 个位的标识符(I ...
- VUE—打印(原生态网页打印)
//打印触发的方法 print(e){ let subOutputRankPrin = document.getElementById('printcode'); var options = { fo ...
- 2018-2019-1 20189203《Linux内核原理与分析》第二周作业
一.本周学习情况 我本周结合<庖丁解牛>教材学习了蓝墨云的视频课,主要学习内容如下: 1.学习了计算机的工作原理,深入理解了冯诺依曼体系结构. 2.学习了X86-32 CPU的寄存器 3. ...
- 20189203《Linux内核原理与分析》第一周作业
实验一 Linux 系统简介 我在这一课中主要学习了Linux是什么,Linux的产生和发展历史,Linux发展中的重要人物以及Linux和Windows在是否收费.软件与支持.安全性等方面存在的一些 ...
- html5dom2
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Python 第五阶段 学习记录之---Django 进阶
Model 一.创建表 1.基本结构 字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bi ...
- JavaScript 原型链学习(四)原型链的基本概念、原型链实现继承
简单回顾一下构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针.那么,假如我们让原型对象等于另一个类型的实例,结果会 ...
- flask 定义数据关系(多对一)
多对一 一对多关系反过来就是多对一关系,这两种关系模式分别从不同的视角出发.一个作者拥有多篇文章,反过来就是多篇文章属于同一个作者.为了便于区分,我们使用居民和城市来演示多对一关系:多个居民住在同一个 ...
- php 使用str_replace替换关键词(兼容字符串,一维数组,多维数组)
通过递归的方式来实现替换字符串. /* * * 使用str_replace替换关键词(兼容字符串,一维数组,多维数组) * $search 需要查找的内容 * $replace 需要替换的内容 * $ ...
- iptables 扩展匹配 第三章
获取帮助: centos 6 :man iptables centos 7: man iptables-extensions 扩展匹配: 隐式扩展:当使用-p指定某一协议之后,协议自身所支持的扩展就叫 ...