Linux NFS共享服务 超详细附带例子

今天呢 我们说一说Linux的共享服务 共享服务NFS

一、NFS

 NFS就是网络文件系统,是由Sum公司开发的一种通过网络方式共享文件系统的共享解方案
 NFS监听的是 TCP 2049端口
 所需软件包 nfs-utils、rpcbind
NFS配置流程 装包→修改主配置文件→启动服务
装包可以用yum

NFS服务配置

NFS主配置文件在 /etc/exports   配置文件设定哪些客户端可以访问哪些NFS共享文件系统。
配置文件书写内容如下
  1.空白行将被忽略
  2.以#符号开头的内容为注释
  3.配日志文件中可以通过 \ 反斜杠符号来转义换行
  4.每个共享的文件系统都需要独立的一行来配置
  5.客户端主机列表需要使用空格隔开
  6.配置文件支持中文通配符

一行完整的共享的共享条目语法结构 如下
共享路径 客户端主机()选项 //其中客户端主机可以是 一个网段、单台主机、或主机名 共享路径是写文件的绝对路径
我们可以为多个客户主机设置不同的访问选项语法如下:
共享路径 客户端主机1(选项) 客户端主机2(选项)……
其中的选项一共有八种 如下

NFS选项 功能 NFS选项 功能
ro 只读共享 rw 可读可写共享
sync 同步写操作 async 异步写操作
wdelay 延迟写操作 root_squash 屏蔽远程root权限
no_root_squash 不屏蔽远程root权限 all_squash 屏蔽所有远程用户的权限

在写配置文件时选项可以不加有默认值 默认值为:
(ro、sync、wdelay、no_root_squash)
栗子
在172.16.0.0/16网段内的所有主机都可以一部可读写访问web目录,且不屏蔽root用户的访问权限 任何主机都可以访问 /var/cloud目录
Linux NFS共享服务 超详细附带例子
注意 带#是命令
#yum -y install nfs-utils rpcbind //装包
#useradd -u 1003 jer //创建名为jer的用户
#mkdir /var/{web,cloud} //创建要共享的目录
#chmod a+w /var/web //修改权限
#vim /etc/exports //修改配置文件
/var/web 172.16.0.20(rw,async,no_root_squash)
/var/cloud *(ro,syunc) //两行共享条目
#systemctl restart nfs //重启服务
#systemctl enable nfs //开机自启

以上为服务器端配置

客户端访问NFS共享

既然服务器配置好了 那么就是客户端了
客户端可以通过 #showmount -e 查看服务器提供的共享信息 通过mount挂载 NFS共享
c1主机挂载 nfsserver 共享目录/var/web 到本机的/var/web 目录 此共享目录可读写 并且 root账号不会被映射成匿名账户
客户端也要安装NFS包 这里省略掉
#mkdir /var/web //创建挂载点
#useradd -u 1003 jer
#mount 172.16.0.254:var/web /var/web //挂载
#chmod a+w /var/web //让所有的用户都可以读写
#cd /var/web ; touch root.txt
#su - jer
#cd /var/web
#touch jer.txt

c2挂载使用NFS服务器共享目录/var/cloud 到本机的/var/cloud 该目录为只读共享 root选项会被映射成nfsnobody用户 普通账户权限被保留
#makdir /var/cloud
#useradd -u 1003 jer
#mount 172.16.0.254:/var/cloud /var/cloud
#cd /cloud
#touch roo.txt //提示文件系统只读

以上就是全部栗子 如果有错的请评论指出 毕竟纯手敲可能出错

NFS客户端主机配置

上面的只是那个栗子的客户端主机配置 接下来才是规则
客户端主机要访问并使用服务器所提供的共享目录 可以用mount 命令 挂载NFS共享格式如下
#monut -t nfs -o 选项 服务主机:/服务器共享目录 /本地挂载目录
具体挂载选项如下
 lntr:当服务器宕机时允许中断NFS请求
 nfsvers=version:指定使用内个版本的NFS协议 version 可以是 2 3 4
 noacl:关闭ACL 仅与老版本操作系统兼容时使用
 nolock:关闭文件锁机制,仅用于来连接老版本NFS服务器
 noexec:在挂在文件系统中屏蔽可执行的二进制数据程序
 port=num:指定NFS 服务器端口号,默认为0 此时如果远程NFS进程没有在rpcbind注册端口信息,则是用标准的NFS端口号(TCp2049)
 rsize=num:设置最大数据块调整NFS读取数据的速度 num单位为字节
 wsize=num;设置最大数据块调整NFS写入数据的速度 num单位为字节
 tcp:使用TCP协议挂载
 udp:使用UDP协议挂载