云服务器 搭建NFS 文件系统
一、NFS概念
全称: Network File System. 一个基于网络的文件系统, 可以实现多台电脑共享文件夹的功能
1.1什么是NFS?
-
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
-
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
-
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。
-
它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。其就相当于windows里面共享文件,然后其他主机把这个共享文件映射成了本地盘使用一样。
-
NFS一般用来存储共享视频,图片等静态数据。
1.2NFS服务端与客户端通信过程

-
首先服务器端启动RPC服务,并开启111端口;启动NFS服务,并向RPC注册端口信息 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口(由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。)
-
服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
-
客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。(客户端获取正确的端口,并与NFS daemon联机存取数据。)
-
存取数据成功后,返回前端访问程序,完成一次存取操作。 NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。 NFS的原理结构其实还是挺简单,NFS就是网络共享目录,就是共享文件.服务端共享,客户端挂载使用。挂载流程原理,就是上面提到的5个流程。NFS要向RPC去注册端口信息。NFS的端口也是随机获取的。
1.3NFS优缺点
NFS优点
-
节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
-
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
-
一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
-
简单容易上手,维护非常快捷简单
NFS缺点
-
局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
-
在高并发下NFS效率/性能有限
-
客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
-
NFS的数据是明文的,对数据完整性不做验证
-
多台机器挂载NFS服务器时,连接管理维护麻烦
二、搭建NFS
2.1 搭建环境
| 操作系统 | ip地址 | 服务 | 名称 |
|---|---|---|---|
| CentOS 7.9 64位 | 10.20.100.8 | Client | nfs_client |
| CentOS 7.9 64位 | 10.20.100.9 | Server | nfs_server |
2.2 搭建NFS Server
注意:共享系统的服务端和客户端不能安装在同一台服务器上
注意两个机器做内网别名访问,修改 vi /etc/hosts
10.20.100.8 nfs_client
10.20.100.9 nfs_server
- 安装依赖
yum install rpcbind nfs-utils - 分别为rpcbind和nfs服务设置开机启动服务
systemctl enable rpcbind --now && systemctl enable nfs-server --now - 创建共享文件夹
mkdir /home/share_test - 编辑nfs服务器配置文件
cat > /etc/exports >> EOF
# rw表示可读可写; no_root_squash的配置可以让任何用户都能访问此文件夹
/home/share_test *(rw,sync,insecure,no_subtree_check,no_root_squash)
EOF
- reload配置文件
exportfs -rv
2.3 搭建NFS Client
-
安装nfs-utils依赖
yum install nfs-utils -
执行命令测试NFS Host是否配置了共享目录
showmount -e nfs_server -
将NFS Client的/root/share_test目录挂载在NFS Host的/home/share_test目录上
mkdir /root/share_test&& mount -t nfs 192.168.3.10:/home/share_test /root/share_test -
查看挂载结果
df -h
三、硬盘永久挂载
因为mount命令的挂载是临时的, 当我们重启机器后, mount命令就会失效。
这里可以采用添加自定义service或者利用rc.local的方式实现
方式1
#更改client服务器挂载文件
vim /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
nfs_server:/root/nfs/home/share_test /root/share_test nfs defaults 0 0
#重启后挂载仍然生效
方式2
打开vim /etc/rc.local
[root@NFS_client mnt]# vi /etc/rc.local
#!/bin/sh
touch /var/lock/subsys/local
nfs_server:/root/nfs/home/share_test /root/share_test
添加执行权限chmod +x /etc/rc.d/rc.local

浙公网安备 33010602011771号