nfs服务器搭建与配置(代码片段)

未末0902 未末0902     2022-12-25     310

关键词:


前言

提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

一、nfs介绍:

1.什么是nfs?

网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

在网络上共享自己机器里的文件,其他的机器可以使用

2.为什么需要nfs服务器?

保障网站数据的一致性–》不管负载均衡器将请求分配到那台后端的服务器,客户机看到的内容是一样。

3.nfs服务器是否是最佳的解决方法?

答案: 不是的
nfs是比较廉价的解决方法,一般的公司不会采用,性能不是特别棒,建议使用专用的存储服务器。

    廉价的解决方法:nfs
    有钱的解决方法: san   

4.存储服务器的优缺点

优点:读写性能好,有灾备
san:区域存储网络
存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

缺点:价格昂贵

5.nfs解决了什么问题?有什么优缺点?

数据同源: 到同一个地方去拿数据,保障数据的一致性

nfs的优点和缺点
优点: 随便一台linux服务器都可以搭建,成本非常低,构建非常容易
缺点: 读取速度有限,跟网络质量,磁盘IO,cpu,内存等因素有关,在传统的tcp/ip网络上传输的

二、具体实验操作:

1.环境准备:

准备一台服务器:
配置没有关系,可以简单点: 1核/1G
配置好ip地址:192.168.0.193

2.安装nfs的相关软件

[root@nfs-server ~]# yum install nfs-utils -y

3.启动nfs-server服务

[root@nfs-server ~]# service nfs-server stop
Redirecting to /bin/systemctl stop nfs-server.service
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service
[root@nfs-server ~]# service nfs-server restart
Redirecting to /bin/systemctl restart nfs-server.service

查看nfs进程:

[root@nfs-server ~]# ps aux|grep nfs
root         431  0.0  0.0      0     0 ?        I    8月01   0:01 [kworker/u128:4-nfsd4]
root         833  0.0  0.3  50304  2932 ?        Ss   8月01   0:00 /usr/sbin/nfsdcld
root        5311  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5312  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5313  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5314  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5315  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5316  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5317  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5318  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5326  0.0  0.1  12320   992 pts/0    S+   11:03   0:00 grep --color=auto nfs
[root@nfs-server ~]#

**

4.原理部分:

**
nfs服务和rpc到底是如何实现的呢?工作原理
端口号:
ssh–>22
nginx -->80
mysql -->3306

我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能。

nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的那个进程对应的端口连续.
代码如下(示例):

[root@nfs-server ~]# netstat -anplut|grep nfs
[root@nfs-server ~]# netstat -anplut|grep rpc  查看rpc服务相关的端口
tcp        0      0 0.0.0.0:35503           0.0.0.0:*               LISTEN      960/rpc.statd       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      5304/rpc.mountd     
tcp6       0      0 :::20048                :::*                    LISTEN      5304/rpc.mountd     
tcp6       0      0 :::42099                :::*                    LISTEN      960/rpc.statd       
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           5304/rpc.mountd     
udp        0      0 127.0.0.1:717           0.0.0.0:*                           960/rpc.statd       
udp        0      0 0.0.0.0:42974           0.0.0.0:*                           960/rpc.statd       
udp6       0      0 :::20048                :::*                                5304/rpc.mountd     
udp6       0      0 :::43399                :::*                                960/rpc.statd       
[root@nfs-server ~]# 

5.共享文件

编辑/etc/exports文件,写好具体的共享的目录和权限
/etc/exports
[root@nfs-server ~]# vim /etc/exports

/web 192.168.0.0/24(rw,all_squash,sync)
/web 是我们共享的文件夹的路径–》使用绝对路径 --》需要自己新建
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制

rw 表示可读可写 read and write
ro 表示只能读 read-only
all_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据

[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]#vim   index.html  创建首页文件
index.html 

[root@nfs-server web]# cat index.html 
welcome to sanchuang!
[root@nfs-server web]# 

6.刷新输出文件的列表

[root@nfs-server web]# exportfs -rv
exporting 192.168.0.0/24:/web
[root@nfs-server web]# 

[root@nfs-server web]# cat /etc/exports
/web  192.168.0.0/24(rw,all_squash,sync)
[root@nfs-server web]# 
[root@nfs-server web]# mkdir /download   新建/download
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.190:/download
exporting 192.168.0.192:/download
exporting 192.168.0.180:/download
exporting 192.168.0.0/24:/download
exporting 192.168.0.0/24:/web
[root@nfs-server web]# 
复制一点点数据到/download目录下
[root@nfs-server download]# cp /etc/hosts  .
[root@nfs-server download]# tar czf boot.tar.gz  /boot 
tar: 从成员名中删除开头的“/”

[root@nfs-server download]# 
[root@nfs-server download]# ls
boot.tar.gz  hosts
[root@nfs-server download]#

7.建议关闭防火墙和selinux

[root@nfs-server download]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server download]# systemctl disable firewalld
[root@nfs-server download]# getenforce 
Disabled
[root@nfs-server download]# 

8.在客户机上挂载nfs服务器上共享的/web和/download目录

[root@web-server2 ~]# yum install nfs-utils -y  安装nfs-utils软件,方便客户机上进行挂载,具有了相关命令了,例如:showmount
[root@web-server2 ~]# showmount -e 192.168.0.21 查看nfs服务器上共享输出了哪些文件夹
[root@manager17 _data]# showmount -e 192.168.0.21
Export list for 192.168.0.21:
/download 192.168.0.17/24
/web      192.168.0.0/24
[root@manager17 _data]#

9.挂载nfs服务器上的目录到本机上

[root@web-server2 ~]# mkdir   /web  在客户机的本地新建一个目录/web
[root@web-server2 ~]# mount 192.168.0.139:/web   /web  将nfs服务器上的/web目录挂载到本地的/web目录,今后访问本地的/web目录,就是访问到nfs服务器上的/web目录
mount 是挂载的命令,可以理解为一种映射

10.显示效果:

[root@manager17 web]# pwd
/web
[root@manager17 web]# mount 192.168.0.21:/web  /web
[root@manager17 web]# df -Th
文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs  1.8G     0  1.8G    0% /dev
tmpfs               tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs               tmpfs     1.9G   34M  1.8G    2% /run
tmpfs               tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/cl-root xfs        64G  9.1G   55G   15% /
/dev/sda1           xfs      1014M  194M  821M   20% /boot
/dev/mapper/cl-home xfs        32G  255M   31G    1% /home
tmpfs               tmpfs     371M     0  371M    0% /run/user/0
overlay             overlay    64G  9.1G   55G   15% /var/lib/docker/overlay2/6c8bbfd010acdcf3176137e20aa6bbfde70c294fca36eb4f0a00a0375a37ba10/merged
overlay             overlay    64G  9.1G   55G   15% /var/lib/docker/overlay2/f92f29ded8924003e4440c092b5161fcd943cda9f989946efedc323d774a9a3a/merged
192.168.0.21:/web   nfs4       17G  3.9G   14G   23% /web
[root@manager17 web]# mkdir /download
[root@manager17 web]# mount 192.168.0.21:/download  /download/
[root@manager17 web]# df -Th
文件系统               类型      容量  已用  可用 已用% 挂载点
devtmpfs               devtmpfs  1.8G     0  1.8G    0% /dev
tmpfs                  tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                  tmpfs     1.9G   34M  1.8G    2% /run
tmpfs                  tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/cl-root    xfs        64G  9.1G   55G   15% /
/dev/sda1              xfs      1014M  194M  821M   20% /boot
/dev/mapper/cl-home    xfs        32G  255M   31G    1% /home
tmpfs                  tmpfs     371M     0  371M    0% /run/user/0
overlay                overlay    64G  9.1G   55G   15% /var/lib/docker/overlay2/6c8bbfd010acdcf3176137e20aa6bbfde70c294fca36eb4f0a00a0375a37ba10/merged
overlay                overlay    64G  9.1G   55G   15% /var/lib/docker/overlay2/f92f29ded8924003e4440c092b5161fcd943cda9f989946efedc323d774a9a3a/merged
192.168.0.21:/web      nfs4       17G  3.9G   14G   23% /web
192.168.0.21:/download nfs4       17G  3.9G   14G   23% /download

[root@manager17 ~]# cd /web/
[root@manager17 web]# ls
feng.jpg  index.html  sc.html  su.tar.gz  xiong.jpg
[root@manager17 web]#

[root@manager17 web]# cd /web/
[root@manager17 web]# mkdir feng
mkdir: 无法创建目录 “feng”: 只读文件系统
[root@manager17 web]# cd /download/
[root@manager17 download]# mkdir feng
[root@manager17 download]# ls
feng
[root@manager17 download]#

三.拓展

1.客户机上能否有写的权限要看2种权限:

(1) 共享权限 --》/etc/exports文件里的权限,例如ro,rw
(2) 文件系统里的权限 --》/web 在linux里的权限

  [root@nfs-server web]# ll -d /web
drwxrwxrwx. 3 root root 56 8月   2 11:55 /web
[root@nfs-server web]# ll -d /download
drwxr-xr-x 2 root root 38 8月   2 11:44 /download        ---》nfs客户机挂载后,没有写的权限,因为其他人没有w权限
[root@nfs-server web]# 

[root@nfs-server web]# ll -d /web
drwxr-xr-x. 2 root root 24 8月  23 16:21 /web
[root@nfs-server web]# ll -d /download/
drwxr-xr-x. 2 root root 6 8月  23 16:25 /download/
[root@nfs-server web]# chmod o+w /download/
[root@nfs-server web]#

2.授权和验证

在nfs服务器上授权
[root@nfs-server web]# chmod a+w /download/
[root@nfs-server web]# ll -d /download
drwxrwxrwx 2 root root 38 8月   2 11:44 /download
[root@nfs-server web]# 

在客户机上验证
[root@web-server2 web]# cd /download/
[root@web-server2 download]# mkdir fengdeyong
[root@web-server2 download]# ls
boot.tar.gz  fengdeyong  hosts
[root@web-server2 download]# 

3.挂载问题

剩下的其他的nginx服务器都要挂载
考虑开机自动挂载的问题
====
挂载: 其实就是相当于我们把u盘或者移动硬盘插到我们的电脑上,我们的系统给分配一个盘符,例如:H,G ,这个过程就叫挂载 mount
挂车:
挂载 --》挂上加载
umount --》卸载  --》相当于弹出u盘
====

volume driver 卷的驱动程序(库):
  1.ssh
  2.nfs

[root@web-server1 ~]# showmount -e 192.168.0.139
Export list for 192.168.0.139:
/web      192.168.0.0/24
/download 192.168.0.0/24

四.volume机制

1.什么是volme?

nfs–》volume–》container
sshfs–》volume–》container
Docker 提供了 Volume 机制以便将数据持久化存储。
Kubernetes 提供了更强大的 Volume 机制和丰富的插件,解决了容器数据持久化和容器间共享数据的问题。

nfs共享/web目录—》docker宿主机挂载–》manager上启动service–》启动容器–》使用volume挂载到容器里

[root@manager161 ~]#     docker service create -d     --name nfs-service-2     --mount 'type=volume,source=nfsvolume,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.80.13,rw,nfsvers=4,async"'     --replicas 6      -p 80:80     nginx:latest


[root@manager161 ~]#     docker service create -d     --name sc-nfs-web     --mount 'type=volume,source=nfsvolume,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.0.21,rw,nfsvers=4,async"'     --replicas 10     -p 8089:80     nginx:latest

2.指令操作

source=nfsvolume --》docker宿主机上的卷的名字
/usr/share/nginx/html -->容器里存放网页的目录
volume-driver=local 访问本地的某个目录的
volume-opt=type=nfs --》volume对nfs的支持选项
volume-opt=device=:/web --》是nfs服务器共享目录
volume-opt=o=addr=192.168.0.21,rw,nfsvers=4,async 挂载具体的nfs服务器的ip地址和选项
–replicas 10 副本的数量

-p 8089:80 端口映射
nginx:latest 具体的镜像版本

需要等待10分钟

[root@manager17 download]# docker service create      --name sc-nfs-web     --mount 'type=volume,source=nfsvolume2,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.0.21,rw,nfsvers=4,async"'     --replicas 10     -p 8089:80     nginx:latest
rkjry4donhb1b9xqry1f3o1g7
overall progress: 10 out of 10 tasks
1/10: running   [==================================================>]
2/10: running   [==================================================>]
3/10: running   [==================================================>]
4/10: running   [==================================================>]
5/10: running   [==================================================>]
6/10: running   [==================================================>]
7/10: running   [==================================================>]
8/10: running   [==================================================>]
9/10: running   [==================================================>]
10/10: running   [==================================================>]
verify: Service converged
[root@manager17 download]#


[root@manager17 download]# docker volume inspect nfsvolume2
[
    
        "CreatedAt": "2021-08-23T16:32:32+08:00",
        "Driver": "local",
        "Labels": ,
        "Mountpoint": "/var/lib/docker/volumes/nfsvolume2/_data",
        "Name": "nfsvolume2",
        "Options": 
            "device": ":/web",
            "o": "addr=192.168.0.21,rw,nfsvers=4,async",
            "type": "nfs"
        ,
        "Scope": "local"
    
]
[root@manager17 download]#


[root@manager17 download]# cd /var/lib/docker/volumes/nfsvolume2/_data/
[root@manager17 _data]# ls
feng.jpg  index.html  sc.html  su.tar.gz  xiong.jpg
[root@manager17 _data]#

五.课后练习

启动一个service使用nfs服务器共享的目录,使用nginx镜像,让所有的容器都使用相同的网页数据
1.sshfs
2.nfs

该处使用的url网络请求的数据。


总结

1.在docker 的学习中,nfs是其中重点的章节,对于原理的部分以及服务器的搭建和配置很重要,需要好好地消化一下.

2.对于volume机制,我们可以对比docker 和 Kubernetes 中的区别来学习,这样更容易理解

3.如果你看到这里了,麻烦👍 + 关注哈,感谢支持,码字不易,谢谢理解.

nfs服务搭建与配置(代码片段)

NFS介绍NFS是NetworkFileSystem的缩写NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据传输基于RPC协议,RPC为RemoteProcedureCall的简写。NFS应用场景是:A,B,C三台机器上需要... 查看详情

centos7.9:nfs服务搭建与配置(代码片段)

 本文讲解在CentOS7.9环境下,如何安装与部署NFS服务。注意:一台机器不要同时做NFS的服务端和NFS的客户端。如果同时作了NFS的服务端和客户端,那么在关机的时候,会一直夯住,可能十分钟之后甚至更久才能... 查看详情

[转帖]nfs服务搭建与配置(代码片段)

NFS服务搭建与配置https://blog.csdn.net/zhengyshan/article/details/81058164自己搞过这一块感觉这个文章比自己写的要好. 原创zhengyshan发布于2018-07-1522:49:28阅读数4226收藏展开NFS介绍NFS是NetworkFileSystem的缩写NFS最早由Sun公司开发,分2,3,4三... 查看详情

53次课(nfs介绍nfs服务端安装配置nfs配置选项)(代码片段)

NFS服务搭建与配置NFS介绍NFS服务端安装配置安装测试2个操作系统一个服务端一个客户端,服务端IP为192.168.63.100客户端192.168.63.101,这两个系统许安装nfs-utilsrpcbind[[email protected]~]#yuminstall-ynfs-utilsrpcbind安装完成后在服务端配置e... 查看详情

nfs-网络文件共享服务(代码片段)

目录NFS介绍什么是NFS(NetworkFileSystem)搭建NFS服务需要的软件包极简步骤搭建NFS服务准备两台机器配置服务端(nfs-server)配置客户端(web-client)NFS服务简单执行流程NFS文件访问权限NFS服务端配置客户端地址的表示方法/etc/exports参数/etc/exp... 查看详情

搭建nfs服务实现两台虚拟机之间共享(代码片段)

NFS网络文件系统,实现Linux与Linux之间的简化文件共享服务1.创建目录,将光盘镜像挂载到新建目录上mkdir-p/media/cdrommount-oloop/dev/cdrom/media/cdrom2.配置yum源,安装nfs服务cd/etc/yum.repos.dvilocal.repo[redhat]name=redhatbaseurl=file:///media/cdromen 查看详情

nfs服务搭建与配置

NFS服务搭建与配置:NFS介绍     NFS是NetworkFileSystem的缩写;NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发;     NFS数据传输基于RPC协议,RPC为Remote... 查看详情

nfs服务搭建与配置

远程过程调用需要借助RPC协议来实现原理图rpcbind监听111端口配置NFS服务端安装服务编辑文件/etc/exports启动并查看服务NFS挂载选项客户端挂载关闭防火墙验证查看是否有权限挂载 查看详情

nfs服务搭建(代码片段)

...s相关软件;本文系统环境为Ubuntu16.04amd64#lsb_release-a?2、NFS服务器端2.1软件安装2.1.1deb安装直接deb安装#dpkg-i*.deb?2.1.2联网安装#apt-getinstallnfs-kernel-server?3.2服务配置3.2.1防火墙设置若不需要防火墙,可直接关闭防火墙#ufwdisable? 查看详情

⚡超容易的nfs存储服务搭建流程⚡(代码片段)

文章目录一、NFS存储服务概念介绍二、NFS服务软件的基本作用三、NFS服务存储数据原理四、服务端NFS服务部署流程🔅1.检查相应存储软件是否安装🔅2.编写配置文件🔅3.创建共享目录信息,目录授权🔅4.启动nfs相关... 查看详情

nfs服务搭建与配置

14.1NFS介绍NFS是NetworkFileSystem的缩写NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据传输基于RPC协议,RPC为RemoteProcedureCall的简写。NFS应用场景是:A,B,C三台机器上... 查看详情

nfs服务搭建与配置

NFS介绍NFS是NetworkFileSystem的缩写NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据传输基于RPC协议,RPC为RemoteProcedureCall的简写。NFS应用场景是:A,B,C三台机器上需要... 查看详情

搭建nfs网络文件共享服务(干货)(代码片段)

先上干货:以下是配置全过程(客户端和服务端对比)查看NFS软件包[[email protected]~]#rpm-aqnfs-utilsportmaprpcbind#这个命令比(yumgrouplist)的更有效率安装法一:[[email protected]~]#yumgroupinstall"NFSfileserver"也可以使用法二:[... 查看详情

ip地址配置与nfs服务器搭建

IP地址设置   重启网卡  查看网络配置信息  安装NFS软件包  启动NFS服务 配置exports文件    客户机测试       Smaba服务的安装     查看详情

samba服务及配置(代码片段)

...目录samba1.samba简介2.samba访问配置示例3.搭建用户认证共享服务器4.搭建匿名用户共享服务器1.samba简介Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。在此之前我们已经了解了NFS,NFS与samba一样... 查看详情

security-centos7下nfs使用与配置(代码片段)

...tem的缩写,即网络文件系统。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。nfs为什么需要RPC?因为NFS支持的功能很多,不同功能会使用不同程序来启动,因此,NFS对应的功能所对应的端口无法固定。端... 查看详情

kubernetes集群搭建zabbix监控平台(代码片段)

kubernetes集群搭建Zabbix监控平台一、zabbix介绍1.zabbix简介2.zabbix特点3.zabbix的主要功能4.zabbix架构图二、检查本地k8s环境1.检查系统pod运行状态2.检查node节点状态三、配置nfs共享存储1.安装nfs2.创建共享目录3.配置共享目录4..启动相关... 查看详情

nfs架构搭建及配置

...应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。NFS的数据传输基于RPC(remoteprocedurecall)协议。应用场景A,B,C三 查看详情