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目录
注意 带#是命令
#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协议挂载