Centos7部署NFS

搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园

在CentOS中搭建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存储服务。

表1 服务端和客户端IP配置

C/S类型

eth0 ip

服务端

192.168.203.10

客户端

192.168.203.20

环境搭建

(一)NFS服务端配置

安装软件
# nfs-utils依赖rpcbind, 因此, 执行 yum -y install nfs-utils 也会安装rpcbind
yum -y install nfs-utils rpcbind

创建需要共享的NFS目录,并赋予相关权限

mkdir /home/nfs
chmod 777 /home/nfs
配置

编辑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指定为可读写的目录,并且进行同步读写,将所有root用户都映射为匿名用户

/home/nfs 192.168.203.0/24(rw,sync,root_squash)

查看完整的配置参数介绍:

man exports

含义:

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一同使用并生效

tip:

如果有多个共享目录配置,则使用多行,一行一个配置。
编译配置
exportfs -r 
启动nfs

(1)顺序启动

systemctl start rpcbind

systemctl start nfs
systemctl start nfs-server

(2)加入开机自启

systemctl enable rpcbind 

systemctl enable nfs
校验配置
$. showmount -e localhost
# 输出
Export list forlocalhost:
/mnt/nfs_file 192.168.203.0/24
编辑配置,指定NFS通信端口
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防火墙开放端口。

注:其实,这里也可以不用配置,即不指定端口,那么配置Firewalld防火墙时,需要放过特定IP。

重启服务
systemctl restart rpcbind

systemctl restart nfs

systemctl restart nfslock
使用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
防火墙开放端口或IP

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

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

注:如果未指定NFS端口,那么应配置firewall防火墙,放过192.168.203.0/24段的ip

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.203.0/24" accept"
firewall-cmd --reload
其它防护墙配置示例参考:

如果执行上述的mount命令一直处于等待状态,可能是服务器上启用了防火墙或者是云服务器本身的防火墙限制了端口的访问,需要在NFS服务端开放以下端口号的访问权限:111204920048。如果是云服务器可以到各自的网站后台去配置防火墙策略,如果是本地的机器可以使用以下命令开放指定的端口。

firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --reload

上述端口信息都可以在以下文件中查找到

/usr/lib/firewalld/services/nfs.xml
/usr/lib/firewalld/services/rpc-bind.xml
/usr/lib/firewalld/services/mountd.xml

如果你不关心具体的端口号,也可以直接使用以下命令,直接根据配置文件放行相应的端口

firewall-cmd --zone=public --add-service=nfs --permanent
firewall-cmd --zone=public --add-service=rpc-bind --permanent
firewall-cmd --zone=public --add-service=mountd --permanent
firewall-cmd --reload

(二)NFS客户端配置

1. 安装nfs

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

yum -y install nfs-utils rpcbind
2. 查看服务端挂载的目录
showmount -e 192.168.203.10
# 可以看到
Export list for192.168.203.10:
/mnt/nfs_file      192.168.203.0/24
3. 挂载共享目录
mkdir /mnt/file_nfc
chmod 777 /mnt/file_nfc
mount -t nfs 192.168.203.10:/mnt/nfs_file /mnt/file_nfc -o proto=tcp -o nolock
# or
mount -t nfs 192.168.203.10:/mnt/nfs_file /mnt/file_nfc

# 如若不再需要可以使用以下命令卸载NFS目录
umount /mnt/file_nfc

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

或者 修改开机自动挂载文件/etc/fatsb,末行填入如下内容:

192.168.203.10:/mnt/nfs_file /mnt/file_nfc nfs defaults,tcp,nolock 0 0
4.查看挂载盘
# 最后一行显示192.168.203.10:/mnt/nfs_file /mnt/file_nfc,说明挂载成功了
$. 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/file_nfc
5. 验证

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

其他命令

# 在服务端执行,查看nfs状态信息
nfsstat -s

# 在客户端执行,查看nfs挂载信息
nfsstat -m

# 查看服务端的远程共享信息,此命令会调用服务端的20048端口
showmount -e 192.168.202.151

# 查看rpcbind注册的所有端口号
rpcinfo -p

# 在服务端执行,重新挂载/etc/exports中配置
exportfs -r

相关推荐

  1. Centos7部署NFS

    2023-12-07 20:30:03       48 阅读
  2. CentOS 7部署vsftpd

    2023-12-07 20:30:03       39 阅读
  3. CentOS 7 部署 MiniKube

    2023-12-07 20:30:03       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 20:30:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 20:30:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 20:30:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 20:30:03       18 阅读

热门阅读

  1. Linux:/dev/mapper/centos-root 100%问题

    2023-12-07 20:30:03       34 阅读
  2. Android 透明度颜色值对照表

    2023-12-07 20:30:03       42 阅读
  3. 9月6日,星期三,每日早报简报微语报早读分享

    2023-12-07 20:30:03       34 阅读
  4. Flink入门之部署(二)

    2023-12-07 20:30:03       48 阅读
  5. DevOps|研发提效-敏捷开发之每日站立会

    2023-12-07 20:30:03       38 阅读
  6. 2023.11.27 滴滴P0级故障或为k8s升级造成

    2023-12-07 20:30:03       44 阅读