(转)NFS在Linux下的安装、部署与应用
转:https://baijiahao.baidu.com/s?id=1694470911715977170&wfr=spider&for=pc
NFS文件系统是Sun公司开发的网络文件系统,也称为分布式文件系统,其基本原理是将某个设备本地文件系统通过以太网的方式共享给其它计算节点使用。也就是说,计算机节点通过NFS存储的数据是通过网络存储在另外一个设备,而不是存储在本地磁盘。
网络文件系统最大的特点是可以实现多个计算节点对同一个存储设备的访问,从而提升存储的利用率,并简化存储管理难度。NFS分布式文件系统本身是客户端服务器架构模式。
本文将介绍如何基于Linux操作系统部署一个NFS文件系统服务,并且介绍如何在客户端进行使用。最后本文介绍一下其整体架构。
基于CentOS的NFS服务安装配置
本节以CentOS 7为例介绍一下NFS服务的安装,这里的NFS服务是指Linux内核中的nfsd服务及配套的用户态程序。它是NFS分布式文件系统的服务端。当然,除了nfsd外,还有很多其它的NFS分布式文件系统服务端,比如用户态的Ganesha。但是,这些不在本文的范围内,今天我们主要介绍一下nfsd的安装和使用。
为了简化安装,我们将操作系统的防火墙和SELinux都关闭。关闭这些特性并不会影响NFS的功能,只是用来避免使用过程中出现一些问题。如果在生产环境,为了数据的安全,这些特性通常是需要开启的。下面我们就介绍一下如何安装及配置NFS服务。
步骤 1: 服务端安装
具体安装我们可以借助CentOS的软件包管理工具yum,具体安装命令如下所示:
$ sudo yum install nfs-utils
注意:只安装 nfs-utils 即可,rpcbind 属于它的依赖,会自动安装上。
步骤 2: 服务端配置
我们期望在操作系统启动的时候可以自动启动NFS服务,因此我们这里需要设置一下 NFS 服务开机启动,具体命令如下:
$ sudo systemctl enable rpcbind
$ sudo systemctl enable nfs
软件安装后服务可能没有启动,这时需要手动启动一下 NFS 服务。如果已经启动了就不需要执行该步操作了。
$ sudo systemctl start rpcbind
$ sudo systemctl start nfs
步骤 3: 配置共享目录
完成上述操作后,NFS服务已经正常工作了,但是我们在客户端仍然没有办法访问该服务。这是因为此时NFS服务还没有配置导出的资源。接下来我们在服务端配置一个共享目录,也就是要导出的资源。首先要创建一个目录,并且修改该目录的权限:
$ sudo mkdir /data
$ sudo chmod 755 /data
有了基本的资源后,我们就可以配置导出的目录了。NFS的配置非常简单,打开配置文件:
$ sudo vi /etc/exports
在打开的文件中添加如下内容。
/data/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash)
对于上述配置项的含义,我们解释如下:/data: 共享目录位置。192.168.0.0/24: 客户端 IP 范围,本文是限制某个子网,如果是* 代表没有限制。rw: 权限设置,可读可写。sync: 同步共享目录。no_root_squash: 可以使用 root 授权。no_all_squash: 可以使用普通用户授权。
至此,我们已经完成nfsd服务的安装,重启一下nfs服务就可以使用了。为了确认是否安装成功,可以通过如下命令进行确认。
showmount -e localhost
如果该命令执行后有目录信息输出,那表示配置正确,否则应该是存在问题,需要具体定位。不过通常不会有什么问题。
基于Ubuntu的NFS服务安装与配置
如果您使用的是Ubuntu的环境,那么也可以非常容易的安装NFS服务。具体方式是使用Ubuntu的软件包管理工具。以Ubuntu18.04为例,执行如下命令就可以完成安装:
$sudo apt install nfs-kernel-server
完成安装后,具体的配置与CentOS下的配置方法相同,本文不再赘述。
NFS文件系统的挂载与使用
构建NFS服务是为了使用,因此我们可以在另外一台机器进行挂载,并使用该文件系统。在挂载之前需要安装客户端必须的软件,具体步骤如下所示。
步骤 1: 客户端安装
首先需要在计算节点安装客户端软件,安装方法与服务端类似。
$ sudo yum install nfs-utils
步骤 2: 客户端连接 NFS
先查服务端的共享目录,这里的IP地址是nfs服务器的地址。
$ showmount -e 192.168.0.101
如果输入如下内容,说明目录导出成功,服务端的配置是没有问题。接下来就可以在客户端挂载服务端的目录了。
NFS目录挂着与本地文件系统一样。首先在客户端创建一个本地目录。
$ sudo mkdir /mnt/data
然后将服务端的目录挂载到本地。
$ sudo mount -t nfs 192.168.0.101:/data /mnt/data
正常情况就可以完成挂载,此时远程导出的目录就变成了本地目录树的一个分支。我们可以像使用本地文件系统一样使用NFS文件系统了。我们可以做个实验,在客户端写入一个文件,此时在服务端的目录中就可以看到新创建的文件。