首页 > 系统相关 >搭建NFS存储服务器--基于CentOS7系统

搭建NFS存储服务器--基于CentOS7系统

时间:2023-07-15 17:24:02浏览次数:36  
标签:udp -- mnt tcp CentOS7 NFS file nfs


一、NFS简介

NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。NFS在文件传送或信息传送过程中依赖于RPC协议。RPC (Remote Procedure Call) ——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以这么理解,NFS是一个文件存储系统,而RPC负责信息的传输。


二、环境准备

为了搭建并且检验NFS服务的配置,我们需要准备两台安装Linux系统(这里以Centos7为例)的服务器,一台充当NFS服务端,开放共享目录,提供NFS存储服务;一台充当NFS客户端,挂载服务端共享目录到本地,使用NFS存储服务。


C/S类型 eth0口ip
服务端 192.168.203.10
客户端 192.168.203.20

三、环境搭建

(一)NFS服务端配置

1.安装软件

yum -y install nfs-utils rpcbind

2. 配置

编辑nfs的配置文件,默认为空。

vi /etc/exports

在exports文件里面填入内容(网段根据实际情况填写,地址与括号之间不能有空格,括号里面为权限属性)

/mnt/nfs_file 192.168.203.0/24(rw,no_root_squash,no_all_squash,async,anonuid=501,anongid=501)

含义:NFS服务端将/mnt/nfs_file目录共享出来,给192.168.203.0网段的客户端使用

权限属性说明:

rw 读写
ro 只读
no_root_squash 不将root用户转换匿名,当NFS客户端以root管理员访问时,则原样映射为NFS服务器的root管理员
root_squash 将root用户转换匿名,当NFS客户端以root管理员访问时,则映射为NFS服务器对应的匿名用户
no_all_squash 所有用户都不转换为匿名用户,无论NFS客户端使用什么账户访问,原样映射为对应用户身份
all_squash 所有用户都转换为匿名用户,无论NFS客户端使用什么用户访问,均映射为NFS服务器的匿名用户
sync 同步模式,将数据写入内存并同步写入磁盘;
async 异步即不同步写入磁盘, 先将数据写入内存,然后再定期写入磁盘;
anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID,要和root_squash 以及all_squash一同使用
anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID,要和root_squash 以及all_squash一同使用

如果有多个共享目录配置,则使用多行,一行一个配置。


3. 编译配置

exportfs –r 

4. 启动nfs

(1)顺序启动

systemctl start rpcbind

systemctl start nfs

(2)加入开机自启

systemctl enable rpcbind 

systemctl enable nfs

5. 校验配置

showmount -e localhost

会出现

Export list for localhost:

/mnt/nfs_file 192.168.203.0/24

6. 编辑配置

vi /etc/sysconfig/nfs

在文末加入:

RQUOTAD_PORT=30001

LOCKD_TCPPORT=30002

LOCKD_UDPPORT=30002

MOUNTD_PORT=30003

STATD_PORT=30004

STATD_OUTGOING_PORT=30005

指定NFS相关服务的端口,便于Firewall防火墙开放端口


7. 重启服务

systemctl restart rpcbind

systemctl restart nfs

systemctl restart nfslock

8.使用rpcinfo -p查看并验证

rpcinfo –p

会出现

  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

  100005  1  udp 30003 mountd

  100005  1  tcp 30003 mountd

  100005  2  udp 30003 mountd

  100005  2  tcp 30003 mountd

  100005  3  udp 30003 mountd

  100005  3  tcp 30003 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 30002 nlockmgr

  100021  3  udp 30002 nlockmgr

  100021  4  udp 30002 nlockmgr

  100021  1  tcp 30002 nlockmgr

  100021  3  tcp 30002 nlockmgr

  100021  4  tcp 30002 nlockmgr

  100024  1  udp 30004 status

  100024  1  tcp 30004 status

9. 防火墙开端口

如果firewall防火墙开着,需要把111,2049,30001到30005的端口都开放出来

firewall-cmd --add-port={111,2049,30001,30002,30003,30004,30005}/tcp  --permanent

firewall-cmd --reload

(二)NFS客户端配置

1. 安装nfs

云平台管理服务器也需要安`nfs但无需启动

yum -y install nfs-utils rpcbind

2. 查看服务端挂载的目录

showmount -e 192.168.203.10

可以看到

Export list for 192.168.203.10:

/mnt/nfs_file      192.168.203.0/24

3. 挂载共享目录

mount -t nfs 192.168.203.10:/mnt/nfs_file /mnt/nfc_file -o proto=tcp -o nolock

同时把这一行加到/etc/rc.local文件的最后,即加入开机启动


4.查看挂载盘

df –h

会看到

Filesystem            Size Used Avail Use% Mounted on

devtmpfs             7.8G   0 7.8G  0% /dev

tmpfs              7.8G 1.4M 7.8G  1% /run

/dev/vda1            197G  53G 134G 29% /

192.168.203.10:/mnt/nfs_file   197G  66G 122G 35% /mnt/nfc_file

最后一行显示192.168.203.10:/mnt/nfs_file /mnt/nfc_file,说明挂载成功了


5. 验证一下

在客户端本地/mnt/nfc_file中放入一个文件(如a.txt),然后去服务端的/mnt/nfs_file中查看,若存在a.txt,则说明配置成功


标签:udp,--,mnt,tcp,CentOS7,NFS,file,nfs
From: https://www.cnblogs.com/jianmuzi/p/17556529.html

相关文章

  • [TSG开发日志4]算法组件、个人编写的库文件如何封装成DLL,如何更好地对接软件开发?
    写在前面这个内容确实是我有点疏忽了,我以为做算法的同事应该多少对这方面会有点了解的。但是我想了一下我刚毕业的时候,确实对这方面的理解不深,查了很多资料才勉强搞懂什么意思,也是后来随着工程学习的愈加深入,才渐渐了解了在C++开发中动态链接库的重要性及如何编写。一般在说一个......
  • 第五节 数组
    知识点数组题目1请创建一个长度为6的整数数组,并为数组中的元素赋值。遍历数组,打印所有元素,元素之间用空格隔开。比如:数组为:{1,2,3,4,5}打印结果:12345训练提示1、数组中的元素有索引,开始索引和结束索引分别是什么?使用循环语句,依次通过索引获取元素即可遍历数组。2、......
  • sharding-jdbc
          keygenrate就是主键生成策略   还支持返回雪花算法的返回的主键id, 写sql的时候,需要使用逻辑表进行查询,不能使用物理表 ......
  • Fork&Copy-On-Write
    Fork&Copy-On-WriteFork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于......
  • 第七节 方法
    1.方法概述1.1方法的概念​ 方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用2.方法的定义和调用2.1无参数方法定义和调用定义格式:publicstaticvoid......
  • Java基础1
    Java基础1whitchbreak,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构switch结构中的表达式,只能是如下的6种数据类型之一:byte.short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)case之后只能声明常量。不能声明范围。break关......
  • PHP调用Python无返回或提示No Module
    问题:自己通过命令行执行python正常,但通过php调用就没有反应。解决方法:1、首先检查一下php有没有执行权限,简单粗暴的:sudochmod777xxx.php2、Python如果有中文返回,似乎需要额外操作。可以先去掉中文排除掉其他原因,也可以尝试以下操作:在python文件头部加上importcodecssys.stdout......
  • 后缀数组学习笔记
    后缀数组是什么后缀数组就是主要处理字符串后缀问题的,它的实现算法主要有两种:倍增法和DC3,复杂度分别是\(O(n\logn)\)和\(O(n)\)。这里由于DC3代码答辩且难以理解,我就只写了倍增法的实现。例题引入P3809【模板】后缀排序题目大意读入一个长度为\(n\)的由大小写英文......
  • WQS二分/带权二分/凸包优化
    WQS二分/带权二分/凸包优化应用范围限制个数:给定一些物品和选物品的限制条件,要求刚好选\(m\)个,让你最大化(最小化)权值。单调性:选的物品越多,权值越大(越小)。分析1.原理解释:假设限制不固定,当选\(x\)个时,最大权值为\(f(x)\)。算法的核心就是将“选取物品”这一操作赋......
  • Java标识符和关键字
    Java标识符和关键字标识符Java所有的组成部分都需要名字类名.变量名以及方法名都被称为标识符注意点:所有的标识符都应该以(AZ或者az),美元符($),或者下划线开始首字符之后可以是字母(AZ或者az),美元符($),下划线(_)或数字的任何字符组合不能使用关键字作为变量名或......