nfs服务器的部署和介绍

目录

一、nfs服务器的介绍

1.什么是nfs?

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

3.nfs服务器的优缺点?

4.nfs服务的实现原理

二、nfs服务器的部署

1.准备工作

2.安装和启动nfs服务

3.编辑/etc/exports文件

4.在客户机上安装nfs-utils软件

5.部署服务,并挂载nfs服务器

6.测试部署的服务


一、nfs服务器的介绍

1.什么是nfs?

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

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

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

nfs服务器都够实现数据同源,保障网站数据的一致性,不管负载均衡器将请求分配到哪台后端服务器,客户机看到的内容都是一样的。

nfs服务器并不是保障数据一致性的最好的解决方法,这是一种比较廉价的解决方法,性能不是特别好,适合学生学习阶段使用,公司一般采用专用的存储服务器。

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

3.nfs服务器的优缺点?

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

4.nfs服务的实现原理

NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,客户端可以连接到正常端口上去。

在启动NFS SERVER之前,首先要启动RPC服务(即portmap或rpcbind服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs  reload或exportfs –rv即可使修改的/etc/exports生效。

通俗的讲,nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的哪个进程对应的端口。

二、nfs服务器的部署

1.准备工作

准备一台centos的系统,修改ip和主机名

IP:192.168.10.233        主机名:nfs-server

建议关闭防火墙和selinux,具体操作上一篇文章有

2.安装和启动nfs服务

#安装nfs相关的软件
[root@nfs-server ~]# yum install nfs-utils -y

#启动nfs服务
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service

#设置nfs服务开机启动
[root@nfs-server ~]# systemctl enable nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

#查看nfs服务是否启动
[root@nfs-server ~]# ps aux|grep nfs
root       73072  0.0  0.1  50112  2904 ?        Ss   12:07   0:00 /usr/sbin/nfsdcld
root       75737  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75738  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75739  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75740  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75741  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75742  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75743  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       75744  0.0  0.0      0     0 ?        S    12:13   0:00 [nfsd]
root       76441  0.0  0.0  12324  1108 pts/1    S+   12:15   0:00 grep --color=auto nfs

3.编辑/etc/exports文件

#写具体共享的目录和权限
[root@nfs-server ~]# vim /etc/exports
[root@nfs-server ~]# cat /etc/exports
/web 192.168.10.0/24(ro,all_squash,async)

#/web 是共享文件夹的路径,使用绝对路径,需要新建
#192.168.10.0/24 表示允许过来访问的客户机的ip地址网段
#(ro,all_squash,async)表示权限的限制
#ro 表示只读
#rw 表示可读可写
#all_squash 任何客户机上的用户过来访问的时候,都认为它是普通用户
#root_squash 当nfs客户端以root管理员访问时,映射为nfs服务器的匿名用户
#no_root_squash  当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
#sync 同步,同时将数据写入到内存与硬盘中,保证数据不丢失
#async 异步,优先将数据保存到内存,然后再写入磁盘,效率高,但可能丢失数据

#新建/web目录,写入共享的文件
[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]# vim index.html
[root@nfs-server web]# cat index.html 
welcome to hunan changsha!!!

#刷新输出文件的列表
[root@nfs-server web]# exportfs -rv
exporting 192.168.10.0/24:/web

4.在客户机上安装nfs-utils软件

#在客户机上安装nfs-utils软件

#这是Ip为192.168.10.230的客户机
[root@manager ~]# yum install nfs-utils -y
#查看nfs服务器共享的文件夹
[root@manager ~]# showmount -e 192.168.10.233
Export list for 192.168.10.233:
/web 192.168.10.0/24

#这是Ip为192.168.10.231的客户机
[root@worker2 ~]# yum install nfs-utils -y
[root@worker2 ~]# showmount -e 192.168.10.233
Export list for 192.168.10.233:
/web 192.168.10.0/24

#这是Ip为192.168.10.232的客户机
[root@worker1 ~]# yum install nfs-utils -y
[root@worker1 ~]# showmount -e 192.168.10.233
Export list for 192.168.10.233:
/web 192.168.10.0/24

5.部署服务,并挂载nfs服务器

#在manager机器上部署服务
[root@manager ~]# docker service create  --name sc-nginx2  --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.10.233,ro,nfsvers=4,async"'  --replicas 6   -p 8889:80    nginx:latest

pu05ln49zba3dt9bebd7uo00k
overall progress: 6 out of 6 tasks 
1/6: running   [==================================================>] 
2/6: running   [==================================================>] 
3/6: running   [==================================================>] 
4/6: running   [==================================================>] 
5/6: running   [==================================================>] 
6/6: running   [==================================================>] 
verify: Service converged 


#sc-nginx2 服务的名字
#source=nfsvolume docker宿主机上卷的名字,不需要提前建好,会自动创建
#target=/usr/share/nginx/html 容器里存放网页的目录
#volume-driver=local 访问本地的目录
#volume-opt=type=nfs volume对nfs支持的选项
#volume-opt=device=:/web 表示nfs服务器共享的目录
#volume-opt=o=addr=192.168.10.233,ro,nfsvers=4,async 挂载具体的nfs服务器的IP地址和选项
#--replicas 6 副本的数量,也就是启6个容器
#-p 8889:80 端口的映射,本机的8889端口映射到容器里的80端口
#nginx:latest 镜像的版本



#查看创建的服务
[root@manager ~]# docker service ls
ID        NAME          MODE       REPLICAS      IMAGE          PORTS
pu05ln49zba3  sc-nginx2  replicated   6/6      nginx:latest   *:8889->80/tcp

#查看创建的volume具体信息
#Options那一项表示挂载的具体信息
[root@manager ~]# docker volume inspect nfsvolume
[
    {
        "CreatedAt": "2021-08-29T14:58:55+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nfsvolume/_data",
        "Name": "nfsvolume",
        "Options": {
            "device": ":/web",
            "o": "addr=192.168.10.233,ro,nfsvers=4,async",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

6.测试部署的服务

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值