Linux(10):期中架构--- NFS存储服务

Posted neozheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux(10):期中架构--- NFS存储服务相关的知识,希望对你有一定的参考价值。

1. 共享存储服务概念:

# NFS是Network File System的缩写,中文意思是网络文件系统,
# 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。

2. NFS共享存储服务的应用:

# 将数据存储到一台服务器上,实现数据统一一致,共享访问
# NFS存储服务器中主要存储哪些信息:用户上传的图片 音频 视频 附件等信息
# NFS服务是分为服务端和客户端
# 存储服务器:NFS服务端   网站web服务器:NFS客户端

# 实现共享存储好处:
01. 实现数据统一一致
02. 节省网站磁盘资源
03. 节省网站访问带宽

3. NFS共享存储服务的原理:

①. nfs服务端创建共享存储目录
②. nfs客户端创建远程挂载点目录
③. nfs客户端进行远程挂载
④. 实现客户端数据信息统一一致

4. NFS服务重要概念说明:

4.1 NFS共享文件系统RPC服务介绍

技术图片

4.2 NFS共享文件系统RPC服务由来:

# NFS服务启动进程和端口过程,需要由rpc服务统一管理

 

5. NFS服务部署实践过程

5.1 NFS服务端部署流程:

# 第一步:检查服务软件是否安装
[[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind"    # 检查 nfs 和 rpc 服务是否已经安装 

# 第二步:进行软件服务安装
[[email protected] ~]# yum install -y nfs-utils rpcbind
...
[[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind"
nfs-utils-lib-1.1.5-13.el6.x86_64
rpcbind-0.2.0-16.el6.x86_64
nfs-utils-1.2.3-78.el6_10.1.x86_64
[[email protected] ~]# 

# 补充说明:nfs-utils 和 rpcbind两个软件大礼包
    rpm -ql nfs-utils    # 查看软件包内容 的命令
    /etc/rc.d/init.d/nfs     <-- nfs服务启动脚本文件
    /usr/sbin/showmount      <-- 检查nfs服务共享目录信息
    
    rpm -ql rpcbind
    /etc/rc.d/init.d/rpcbind   <-- rpcbind服务启动脚本文件
    /usr/sbin/rpcbind          <-- 检查nfs服务向rpc服务注册信息
    

# 第三步:编写nfs服务配置文件
[[email protected] ~]# ll /etc/exports 
-rw-r--r--. 1 root root 0 Jan 12  2010 /etc/exports
[[email protected] ~]# vim /etc/exports     # 编写服务配置文件; /etc/exports ---> 系统默认的配置共享存储的文件,NFS服务会识别这个文件实现共享存储
[[email protected] ~]# cat /etc/exports
/data  172.16.1.0/24(rw,sync)        # /data 表示数据存储的目录; 172.16.1.0/24 表示允许哪个网段的主机可以挂载到我这台共享服务器上; (rw,rsync) ---> rw 表示共享目录是可读可写的,rsync 是一个同步参数; 172.16.1.0/24 和 (rw,sync) 之间不能有空格
[[email protected] ~]# 

# 说明:配置文件信息 指定共享目录   指定共享目录访问控制网段或主机信息(共享目录参数信息)


# 第四步:创建nfs服务共享目录,并且进行授权
[[email protected] ~]# mkdir /data
[[email protected] ~]# chown -R nfsnobody.nfsnobody /data/
[[email protected] ~]# 

# 第五步:启动nfs和rpc服务
[[email protected] ~]# /etc/init.d/rpcbind start        # 要先启动 rpc 这个“中介”服务
Starting rpcbind:                                          [  OK  ]
[[email protected] ~]# /etc/init.d/nfs start            # 再启动 nfs 服务
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[[email protected] ~]# 


# 第六步:进行服务配置检查
# 检查 nfs 是否向 rpc 服务注册
[[email protected] ~]# rpcinfo -p 172.16.1.31   # 检查本地主机(172.16.1.31,也可用10.0.0.31)是否已经向 rpc 注册
...

# 检查是否存在可用的共享目录
[[email protected] ~]# showmount -e 10.0.0.31        # showmount -e 服务端的地址  ---> 检查是否有可用的共享目录
Export list for 10.0.0.31:
/data 172.16.1.0/24
[[email protected] ~]# 

5.2 NFS客户端部署流程:

# 第一步:检查服务软件是否安装
[[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind"
[[email protected] ~]# 

# 第二步:进行软件服务安装


# 第三步:进行共享目录挂载
[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt        # -t nfs 表示挂载 nfs 文件系统类型 ; 172.16.1.31:/data ---> 这个服务器上的 /data 目录; /mnt 表示挂载到 /mnt 目录
[[email protected] ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3          8.8G  1.5G  6.9G  18% /
tmpfs              238M     0  238M   0% /dev/shm
/dev/sda1          190M   40M  141M  22% /boot
172.16.1.31:/data  8.8G  1.5G  6.9G  18% /mnt        # 共享目录挂载到了 /mnt 
[[email protected] ~]# 

# 第四步:进行共享存储测试
# 网站服务器01上的操作
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ll
total 0
[[email protected] mnt]# touch test.txt
[[email protected] mnt]# ll 
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt
[[email protected] mnt]# 

# 存储服务器上的操作
[[email protected] ~]# ll /data/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt    # 存储在 网站服务器的 /mnt 目录下的内容 就相当于 存储在了 存储服务器的 /data目录下
[[email protected] ~]# 

# 网站web服务器02 上的操作
[[email protected] ~]# ll /mnt/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt    # 在 web02 上也能看到 web01 上的数据
[[email protected] ~]# 

# 说明:在web01的mnt目录中创建的数据,在nfs和web02服务器上都可以看到,即已经实现数据共享存储
        客户端上不需要启动NFS服务

# 共享文件系统的工作原理(服务端3步 客户端3步)
    # 服务端做了三件事:
    1. 启动rpcbind服务,创建中介
    2. 启动nfs服务,创建“房源”信息
    3. 将“房源”信息向中介进行注册,在nfs服务稳定运行过程中,“房源”信息只注册一次
    
    # 客户端做了三件事:
    1. 启动rpcbind服务(可选)
    2. 确保客户端和服务端网络连接建立成功
    3. 执行mount命令进行网络存储挂载

 

6. NFS服务部署进程信息详述

[[email protected] ~]# ps -ef|egrep "rpc|nfs"
rpc        1564      1  0 09:32 ?        00:00:00 rpcbind
rpc        1065      1  0 09:32 ?        00:00:00 rpc statd        # <- 检查数据存储一致性
root       4736      2  0 21:31 ?        00:00:00 [rpciod/0]    
root       5363      1  0 21:47 ?        00:00:00 rpc.rquotad      # <- 磁盘配额进程(remote quote server)
root       5368      1  0 21:47 ?        00:00:00 rpc.mountd       # <- 权限管理验证等(NFS mount daemon)
root       5375      2  0 21:47 ?        00:00:00 [nfsd4]
root       5376      2  0 21:47 ?        00:00:00 [nfsd4_callbacks]
root       5377      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主进程
root       5378      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主进程
root       5379      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主进程,管理登入,ID身份判别等。
root       5380      2  0 21:47 ?        00:00:00 [nfsd]        
root       5381      2  0 21:47 ?        00:00:00 [nfsd]        
root       5382      2  0 21:47 ?        00:00:00 [nfsd]        
root       5383      2  0 21:47 ?        00:00:00 [nfsd]        
root       5384      2  0 21:47 ?        00:00:00 [nfsd]        # <- NFS主进程
root       5415      1  0 21:47 ?        00:00:00 rpc.idmapd    # <- name mapping daemon
                                                                # 用户压缩/用户映射(记录)
root       5512   4670  0 22:02 pts/0    00:00:00 egrep rpc|nfs

 

7. NFS共享存储服务配置说明

7.1 NFS共享文件系统配置文件格式说明:

# NFS共享目录:
    为NFS服务器端要共享的实际目录,要用绝对路径,如(/data)。
    注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。

# NFS客户端地址:
    为NFS服务器端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址。
    还可以用“*”来匹配所有客户端服务器,这里所谓的客户端一般来说是前端的业务的业务服务器,例如:web服务。具体说明见表10-3
    权限参数集
    对授权的NFS客户端的访问权限设置。参数具体说明见后文。
    nfs权限(共享目录【借给你手机】) nfs配置的/etc/exports /data 172.16.1.0/24(rw)
    本地文件系统权限(【手机密码不告诉你】) 挂载目录的权限rwxr-xr-x root root /data

NFS共享配置文件语法格式:

技术图片

同步和异步(sync 和 async):

技术图片

NFS客户端地址配置说明:

技术图片

 

以上是关于Linux(10):期中架构--- NFS存储服务的主要内容,如果未能解决你的问题,请参考以下文章

Linux 期中架构 Ansible

Linux三阶段之九:期中架构LNMP章节

期中架构实现步骤

小胖学Linux day42~43:NFS共享存储

NFS共享存储服务

架构(day04)