NFS的共享与挂载

发布时间:2024年01月16日

一、NFS网络文件服务

1.1简介

? ? ? ?NFS(Network File System 网络文件服务) 文件系统(软件)文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 NFS 也是 NAS 存储 设备必然支持的一种协议。

NFS 它是文件系统,是操作系统内核来管理的

[root@localhost ~]#ls /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/
binfmt_misc.ko.xz ?ceph ? ?dlm ? ?fat ? ? ?gfs2 ? lockd ? ? ? ? ?nfs_common ?overlayfs ?udf
btrfs ? ? ? ? ? ? ?cifs ? ?exofs ?fscache ?isofs ?mbcache.ko.xz ?nfsd ? ? ? ?pstore ? ? xfs
cachefiles ? ? ? ? cramfs ?ext4 ? fuse ? ? jbd2 ? nfs ? ? ? ? ? ?nls ? ? ? ? squashfs

1.2NFS存储

? ? ? ?NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能) NFS 也是 NAS 存储 设备必然支持的一种协议 以完成远 程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务, 前者用于 NFS 共享发布和访问,后者用于 RPC 支持。 手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

特点: 采用TCP/IP传输网络文件 安全性低 简单易操作 适合局域网环境

1.3NFS原理

NFS优势:

节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。

1.4NFS软件介绍

软件包:nfs-utils(包括服务器端和客户端)

相关软件包:rpcbind(必须)

nfs端口号不固定 RPC端口号111

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

日志:/var/lib/nfs/

区别:

ftp:装客户端、服务端、设置,比较复制

nfs:简单,高效

NFS的主包:

nfs-utils

rpcbind

主配置文件路径:

/etc/exports

文件格式:

共享目录 可以访问的主机地址 (权限)

/share *

systemctl start nfs

exportfs -v:显示本机服务端的共享目录

exportfs -r:重新加载配置文件

1.5NFS共享配置文件格式

/dir ? ? ? ?主机1(opt1,opt2) ? ? ? ? ?主机2(opt1,opt2)...
共享目录 ? ? ?共享给哪个主机

格式说明:

- 以#开始的行为注释
- 主机格式

anonymous:表示使用*通配所有客户端
单个主机:ipv4,ipv6,FQDN
IP networks:两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主机名通配,例如:*.magedu.com,IP不可以
netgroups:NIS域的主机组,@group_name

每个条目指定目录导出到的哪些主机,及相关的权限和选项

默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性低
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS?
7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
/data/nfs1 ? ? ? ?*(rw,all_squash,anonuid=1002,anongid=1002)

共享规则:

#查看当前共享信息
exportfs -v


[root@localhost ~]#exportfs -r
#重新加载服务配置
exportfs: No options for /share *: suggest *(sync) to avoid warning

###客户机上如何查看共享
[root@localhost yum.repos.d]#showmount -e 192.168.91.100
#
Export list for 192.168.91.100:
/share *

[root@localhost yum.repos.d]#mount 192.168.91.100:/share ? /mnt/nfs1/
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 对方地址 ? ? ?共享文件夹 ? 挂载点
[root@localhost yum.repos.d]#df


[root@localhost data]#chmod 777 /data/ -R
[root@localhost data]#chmod 755 /data/ -R
#恢复权限
[root@localhost data]#setfacl -m u:nfsnobody:rwx ?/data/nfs1
#只给 nfsnobody用户 权限
[root@localhost data]#setfacl -b ?/data/nfs1
#删除acl 列表


[root@localhost nfs1]#ll
#变成nobody ? 由root_squash(压缩缩小) ?决定
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody ? ?0 3月 ?21 01:17 111.txt
-rwxrwxrwx. 1 root ? ? ?root ? ? ?2259 3月 ?21 01:12 passwd


#普通用户不压榨 ? 由 ? no_all_squash决定

/share ? ?*(rw,no_root_squash)

###用户 ?uid问题####

统一压榨成指定用户

二、NFS工具

2.1exportfs

用于管理NFS导出的文件系统

常见选项:

-v? ? ? #查看本机所有NFS共享
-r? ? ? #重读配置文件,并共享目录
-a? ? ?#输出本机所有共享
-au? ?#停止本机所有共享

2.2showmount

用于客户端查看服务端的共享目录

常见用法:

showmount -e hostname ?

[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *

2.3mount.nfs

永久挂载:

客户端NFS挂载

NFS相关的挂载选项:man 5 nfs

fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft ??#非持续请求
intr ??#和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络连接不挂载
vers ???#指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0

例子

mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/
#临时挂载


[root@centos7 ~]#mkdir /mnt/nfs
[root@centos7 ~]#mount 10.0.0.8:/data/wordpress /mnt/nfs
[root@centos7 ~]#ls /mnt/nfs
index.html
[root@centos7 ~]#df -T /mnt/nfs
Filesystem ??????????????Type 1K-blocks ??Used Available Use% Mounted on
10.0.0.8:/data/wordpress nfs4 ?52403200 398336 ?52004864 ??1% /mnt/nfs

永久挂载
vim /etc/fstab ?
172.16.0.1:/public ??/mnt/nfs ??nfs ??defaults,_netdev(无网络就不加载) ?0 ?0

三、NFS共享

systemctl? stop? firewalld

setenforce? 0

#关闭防火墙和核心防护

rpm? ?-q? nfs-utils

rpm? -q? rpcbind

#看一下这两个软件有没有安装

systemctl? ?status? ?nfs

systemctl? ?status? ?rpcbind?

#看一下有没有开启

mkdir? ? ?/share

mkdir? ? /data

#建两个文件夹

vim? ? /etc/exports

#进入nfs的配置文件

exportfs? ? ?-v

#显示本机服务端的共享目录

exportfs? ? ?-r

#重新加载配置文件

showmount? ? ?-e? 172.16.18.5

#用于客户端查看服务端的共享目录

mount? ? 172.16.18.5:/data? ? /mnt

#挂载

试验一下,使用data是否等于使用mnt

试验一下,在客户端,能否查看,创建服务端的文件

vim? ? ?/etc/exports

#在服务端,在nfs配置文件里,给他们加上读写权限

exportfs? ? ?-v

#显示本机服务端的共享目录

exportfs? ? ?-r

#重新加载配置文件

解决权限变更后,为什么还是创建不了?

创建文件的用户身份怎么不对??

为什么会出现,有的用户身份改变,有的不变呢?

如果不想身份改变

注意:在客户端和服务端,uid一样的用户、名字不同,可能会导致文件打不开

四、启动httpd服务搭建网站,实验NFS挂载

注意:在做之前,先开启NFS共享

1.7-2服务器

systemctl? ?stop? ?firewalld

setenforce? ?0

#关闭防火墙和核心防护

yum? ?install? ?httpd? ? -y

#安装httpd服务

cd? ? /var/www/html

#切到网页主文件夹下

echo? ? 7-2? >??index.html

#在index.html中写入内容:7-2

cat? ? index.html

#查看一下内容

systemctl? start? httpd

#开启httpd服务

2.7-3服务器

systemctl? ?stop? ?firewalld

setenforce? ?0

#关闭防火墙和核心防护

yum? ?install? ?httpd? ? -y

#安装httpd服务

systemctl? start? httpd

#开启httpd服务

cd? ? /var/www/html

#切到网页主文件夹下

vim? ? index.html

#在index.html中写入内容:7-2




?

systemctl? ?stop? ?firewalld

setenforce? ?0

#关闭防火墙和核心防护

vim? ?index.html

#在index.html中写入ky35

mount? 172.16.18.5:/data? ? ?/var/www/html

#在7-2服务器上挂载,地址为7-1的

mount? 172.16.18.5:/data? ? ?/var/www/html

#在7-3服务器上挂载

五、工作环境

5.1误将 rpm 软件删除

[root@localhost ~]#type rpm
#是一个外部命令
rpm 是 /usr/bin/rpm

[root@localhost ~]#rpm -e rpm
#依赖性会组织
错误:依赖检测失败:
?? ?rpm = 4.11.3-25.el7 被 (已安裝) rpm-libs-4.11.3-25.el7.x86_64 需要
?? ?rpm 被 (已安裝) color-filesystem-1-13.el7.noarch 需要
?? ?rpm = 4.11.3-25.el7 被 (已安裝) rpm-python-4.11.3-25.el7.x86_64 需要
?? ?rpm >= 0:4.11.3-22 被 (已安裝) yum-3.4.3-154.el7.centos.noarch 需要
?? ?rpm >= 4.1.1 被 (已安裝) createrepo-0.9.9-28.el7.noarch 需要
?? ?rpm 被 (已安裝) policycoreutils-2.5-17.1.el7.x86_64 需要
?? ?rpm 被 (已安裝) cmake-2.8.12.2-2.el7.x86_64 需要

[root@localhost ~]#rpm -e rpm --nodeps?
#忽略依赖关系
[root@localhost ~]#yum install rpm -y
#yum 也是 使用rpm ?无法安装了
error: Unable to open /usr/lib/rpm/rpmrc for reading: No such file or directory.
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:


进入救援模式
1 继续

5.2自行打包后建立元数据

mount /dev/sr0 /mnt/
cp ?/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm?
mkdir test
mv tree-1.6.0-10.el7.x86_64.rpm ?test/
cd test
mkdir packages
mv tree-1.6.0-10.el7.x86_64.rpm packages/
createrepo -v test
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/

vim tree.repo
[tree]
name=tree
baseurl=file:///data/test
gpgcheck=0

yum clean all
yum makecache
yum install tree -y

5.3epel源本地

没有外网 ?又想使用这个epel源 ? ? ?

[root@localhost ~]#yum install epel-release
#安装epel源 ? ?生成epel仓库文件
[root@localhost ~]# reposync -r epel -p /root/
#下载同步epel源 ?根据epel仓库文件去找目录

[root@localhost ~]# yum -y install createrepo
#安装建立元数据命令
[root@localhost ~]# createrepo -v /root/epel
#建立元数据 ? ?软件目录 ?依赖关系 ?
[root@localhost ~]# ls
anaconda-ks.cfg ?epel
[root@localhost ~]# cd epel/
[root@localhost epel]# ls
#查看元数据


ftp
http


mkisofs -r -o ?/root/xxx.iso /data/centos7/epel?
制作成镜像

5.4离线安装软件

root@localhost yum.repos.d]#yum install nginx
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 nginx.x86_64.1.1.20.1-9.el7 将被 安装
--> 正在处理依赖关系 nginx-filesystem = 1:1.20.1-9.el7,它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 nginx-filesystem,它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_1)(64bit),它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-9.el7.x86_64 需要
--> 正在检查事务
---> 软件包 nginx-filesystem.noarch.1.1.20.1-9.el7 将被 安装
---> 软件包 openssl11-libs.x86_64.1.1.1.1k-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

==========================================================================================================
?Package ? ? ? ? ? ? ? ? ? ? ? 架构 ? ? ? ? ? ? ? ?版本 ? ? ? ? ? ? ? ? ? ? ? ? ? 源 ? ? ? ? ? ? ? ? 大小
==========================================================================================================
正在安装:
?nginx ? ? ? ? ? ? ? ? ? ? ? ? x86_64 ? ? ? ? ? ? ?1:1.20.1-9.el7 ? ? ? ? ? ? ? ? epel ? ? ? ? ? ? ?587 k
为依赖而安装:
?nginx-filesystem ? ? ? ? ? ? ?noarch ? ? ? ? ? ? ?1:1.20.1-9.el7 ? ? ? ? ? ? ? ? epel ? ? ? ? ? ? ? 24 k
?openssl11-libs ? ? ? ? ? ? ? ?x86_64 ? ? ? ? ? ? ?1:1.1.1k-2.el7 ? ? ? ? ? ? ? ? epel ? ? ? ? ? ? ?1.5 M

事务概要
==========================================================================================================
安装 ?1 软件包 (+2 依赖软件包)

总下载量:2.1 M
安装大小:5.2 M
Is this ok [y/d/N]:?


[root@localhost yum.repos.d]# yum install nginx --downloadonly --downloaddir=/data/
[root@localhost http]#yum install nginx --downloadonly --downloaddir=/nginx/
--downloadonly ?#只下载相关包默认至某一目录
--downloaddir=绝对目录路径 ?#下载到某一目录 ?

真实 ?内网外网不可能互通 ? ??

rpm ??
包依赖?
rpm ?

文章来源:https://blog.csdn.net/YUEAwb/article/details/135622529
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。