其他分享
首页 > 其他分享> > 网络共享存储NFS的基本原理、安装与配置

网络共享存储NFS的基本原理、安装与配置

作者:互联网

网络文件系统NFS(1)-基本原理

Cloud研习社 Cloud研习社 2022-09-08 07:31 发表于山东 收录于合集 #一站式教程134个 #linux72个 #存储系统10个 #计算机44个 图片图片

教程每周二、四、六更新

图片

 

基本原理

 

  1. 什么是NFS?全称 network file system 网络文件系统,它是通过网络存储和组织文件的一种方法或机制。

  2. 存储的种类三种存储方式:DAS(Direct Attach STorage)、SAN(Storage Area Network)、NAS(Network Attach Storage)三种存储类型:块存储、文件存储、对象存储

块存储

DAS和SAN都是块存储类型:

文件存储

NAS产品一般就是文件存储。

NAS(Network Attached Storage),是一套网络存储设备,通常是直接连在网络上并提供数据存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好。如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。

对象存储

对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后再额外搞几台服务器作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。

之所以出现对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬各自的优点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写块,利于共享的存储出来呢?于是就有了对象存储。具体内容到后面讲到ceph的时候我们再进一步了解。

  1. NFS工作原理NFS(Network File System)网络文件系统NFS功能,需要很多服务。每个服务都有端口,而且经常变化。如何让客户端找到这些端口呢?就需要一个经纪人(rpc服务)

NFS服务包含的内容:

1、NFS服务(有很多进程和端口),把自己的端口告诉RPC。

2、RPC服务(对外固定端口111)

NFS工作流程见下图:

图片

步骤详解:

第一步:启动RPC服务,这是NFS依赖的服务,必须先启动。

第二步:启动NFS服务。启动后会告诉RPC服务自己有哪些端口号可用。

第三步:客户端发起NFS服务请求。由于NFS服务的端口号不确定,所以NFS客户端需要先请求RPC服务(固定端口号111),RPC服务收到请求以后,会查询可用的端口号。

第四步:RPC查询到可用端口以后,会返回客户端一个可用的端口号。

第五步:客户端拿到端口号以后,就拿着这个端口号去请求NFS服务,实现数据读写。

我们再来看一个图,更进一步了解一下NFS工作流程(portmap是centos5以前的概念,现在是rpcbind):

图片

 

优缺点说明

 

 

优点

缺点

至此为止,我们了解了NFS的工作流程,下一期我们开始实践。

 

 

推荐阅读

 

 

《一站式教程之集群架构》:

一文彻底搞懂IP地址知识(值得收藏的手册)

老司机:子网掩码我不怕,怕的是子网划分!

多网卡绑定之bond

多网卡绑定之team

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

常用服务之rysnc(3)-rsync守护进程

常用服务之rsync(4)

常用服务之rsync(5)-实战

常用服务之rsync(7)-企业实战

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 151篇原创内容 公众号  

NFS全面讲解(2)- 安装与配置

Cloud研习社 Cloud研习社 2022-09-10 10:31 发表于山东 收录于合集 #一站式教程134个 #linux72个 #存储系统10个 #计算机44个 #云计算48个 图片图片

教程每周二、四、六更新

图片

 

图片
图片

规划环境

图片

 

图片

 

图片
图片

安装配置nfs server

图片

 

[root@nfs ~]# yum -y install nfs-utils rpcbind
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync)

#创建共享目录
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody:nfsnobody /data
#启动服务
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl start nfs

# 配置开机自启动
[root@nfs ~]# systemctl enable rpcbind
[root@nfs ~]# systemctl enable nfs

# 列出所有在本机用rpcbind注册的RPC程序。
[root@nfs ~]# rpcinfo -p localhost
   program vers proto port service
    100000    4   tcp 111  portmapper
    100000    3   tcp 111  portmapper
    100000    2   tcp 111  portmapper
    100000    4   udp 111  portmapper
    100000    3   udp 111  portmapper
    100000    2   udp 111  portmapper
    100024    1   udp 40663  status
    100024    1   tcp 53187  status
    100005    1   udp 20048  mountd
    100005    1   tcp 20048  mountd
    100005    2   udp 20048  mountd
    100005    2   tcp 20048  mountd
    100005    3   udp 20048  mountd
    100005    3   tcp 20048  mountd
    100003    3   tcp 2049  nfs
    100003    4   tcp 2049  nfs
    100227    3   tcp 2049  nfs_acl
    100003    3   udp 2049  nfs
    100003    4   udp 2049  nfs
    100227    3   udp 2049  nfs_acl
    100021    1   udp 33584  nlockmgr
    100021    3   udp 33584  nlockmgr
    100021    4   udp 33584  nlockmgr
    100021    1   tcp 42688  nlockmgr
    100021    3   tcp 42688  nlockmgr
    100021    4   tcp 42688  nlockmgr

# 确认服务启动成功且可用
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24

/etc/exports讲解

[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync)

解析:

第一个字段:/data,这里是待共享的目录,用来存放共享数据。将来客户端对数据的读写都是从这个目录里获取的。

第二个字段:可以访问的主机的网段。这里是允许172.16.1.0/24网段的主机访问

第三个字段:(注意:和网段之间不能有空格,网段之后直接写小括号)。这里是权限配置字段,详细情况见配置参数、挂载参数详解部分。

上面配置文件的含义:把服务器上的/data目录作为共享目录,为客户端提供数据存储和读写的内容。可以访问本目录的客户端包括172.16.1.0/24网段的所有客户端,客户端对该目录有读写的权限(rw),并且客户端写入数据的时候是同步把数据写到硬盘上,而不是仅仅写到缓冲区中。

 

推荐阅读

 

 

《一站式教程之集群架构》:

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

常用服务之rysnc(3)-rsync守护进程

常用服务之rsync(4)

常用服务之rsync(5)-实战

常用服务之rsync(7)-企业实战

网络文件系统NFS(1)-基本原理

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 151篇原创内容 公众号   收录于合集 #一站式教程  134个

NFS全面讲解(3)- 配置客户端、配置参数

Cloud研习社 Cloud研习社 2022-09-13 07:31 发表于山东 收录于合集 #一站式教程134个 #linux72个 #存储系统10个 #学习资料3个 #云计算48个 图片图片

教程每周二、四、六更新

图片

 

图片
图片

配置客户端

图片

 

[root@backup backup]# yum -y install nfs-utils rpcbind
[root@backup backup]# showmount -e 172.16.1.21    # 显示nfs上可共享的所有目录
Export list for 172.16.1.21:
/data 172.16.1.0/24

 

图片
图片

查看效果

图片

 

我们先在本地挂载nfs:

# 把NFS挂载到本地/mnt下
[root@backup backup]# mount -t nfs 172.16.1.21:/data /mnt

查看远端的文件:

# 在服务端创建一个文件并写入内容
[root@nfs data]# echo abc > nfs_file1

# 在客户端查看刚才创建的文件
[root@backup ~]# cat /mnt/nfs_file1
abc # 这不正是我们刚写入的文件内容吗

 

图片
图片

服务进程说明

图片

 

图片

/etc/exports配置参数讲解

参数 说明
rw、ro(重点) rw,Read-Write,表示可读、可写权限。ro,Read-Only,表示只读权限
sync(重点) 有I/O操作时,都会同步处理I/O,即把数据同步写入磁盘,这种情况会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性
async(重点) 和sync相反,I/O的操作都是异步处理,写入数据会先写入缓冲区,即不会同步写到磁盘,此参数会提高性能,但会降低数据的安全性,一般情况下,生产环境下不推荐使用,除非对性能要求很高。(解决办法:服务器主板电池或配置UPS)
all_squash(重点) 不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID都会变成nfsnobody帐号身份。在早期多个NFS 客户端同时读写NFS Server数据时,这个参数很有用。在生产中配置NFS 的重要技巧: 1) 确保所有客户端服务器对NFS共享目录具备相同的用户访问权限.  a.all_squash 把所有客户端都压缩成固定的匿名用户(UID相同)   b.就是anonuid,anongid 指定的UID和GID的用户。2) 所有的客户端和服务端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同)。
no_all_squash(默认) 访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组
anonuid(重点) 参数以anon*开头即指anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd 中。在多NFS Clients时,如多台Web Server共享一个NFS目录,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可。
no_root_squash 访问NFS Server共享目录的用户如果是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的。用户应避免使用。
root_squash 如果访问NFS Server共享目录的用户时root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份。

 

推荐阅读

 

 

《一站式教程之集群架构》:

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

常用服务之rysnc(3)-rsync守护进程

常用服务之rsync(4)

常用服务之rsync(5)-实战

常用服务之rsync(7)-企业实战

网络文件系统NFS(1)-基本原理

NFS全面讲解(2)- 安装与配置

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 151篇原创内容 公众号  

NFS全面讲解(4)

Cloud研习社 Cloud研习社 2022-09-15 07:53 发表于山东 收录于合集 #一站式教程134个 #linux72个 #存储系统10个 #云计算48个 图片图片

教程每周二、四、六更新

图片

 

 

anonuid\anongid详解

 

配置文件中指定映射的用户id(默认是nfsnobody),即修改默认用户为用户指定的用户。

比如:指定NFS共享的匿名用户为www。

[root@nfs ~]# useradd www -u 6666
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=6666,anongid=6666,all_squash)

[root@nfs ~]# systemctl reload nfs
[root@nfs /]# chown -R www:www /data/

NFS的默认配置:

[root@nfs ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=6666,anongid=6666,sec=sys,rw,secure,root_squash,no_all_squash)

 

创建临时共享目录

 

创建临时共享目录就是在不修改nfs配置文件的情况下,新增加一个共享目录供客户端使用。

[root@nfs ~]# mkdir tmp
[root@nfs ~]# exportfs -o rw,sync 172.16.1.0/24:/root/tmp

# 客户端看一下
[root@backup ~]# showmount -e 172.16.1.21
Export list for 172.16.1.21:
/root/tmp     172.16.1.0/24
/data 172.16.1.0/24

下面我们来在客户端挂载这个临时目录:

[root@backup ~]# mount -t nfs 172.16.1.21:/root/tmp /tmp
[root@backup ~]# ls /tmp
ls: cannot open directory /tmp: Permission denied

我们发现上面报错了,提示没有权限。回想一下:我们创建tmp目录的时候是在root的家目录下,创建完成后,其所属的用户和用户组是root,nfs只有nfsnobody的权限,所以我们需要修改一下权限:

# 在服务端修改一下所属组
[root@nfs ~]# chown -R nfsnobody:nfsnobody /root/tmp

# 客户端验证一下是否可以访问了
[root@backup ~]# ls /tmp

课后项目实践:

- 在web01客户端实现挂载NFS

- 给NFS新建共享目录/data_log,允许web01和backup客户端对/data_log可读写

- web01客户端上传图片,backup客户端可以删除web01上传的图片

- NFS下面共享/data2,允许web01客户端访问

 

 

推荐阅读

 

 

《一站式教程之集群架构》:

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

常用服务之rysnc(3)-rsync守护进程

常用服务之rsync(4)

常用服务之rsync(5)-实战

常用服务之rsync(7)-企业实战

网络文件系统NFS(1)-基本原理

NFS全面讲解(2)- 安装与配置

NFS全面讲解(3)- 配置客户端、配置参数

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 151篇原创内容 公众号   收录于合集 #一站式教程  134个 上一篇NFS全面讲解(3)- 配置客户端、配置参数 阅读 68

标签:rsync,服务,基本原理,nfs,NFS,网络共享,root,客户端
来源: https://www.cnblogs.com/cherishthepresent/p/16699204.html