NFS服务

NFS的概念

NFS(网络文件系统)提供了一种在类UNIX系统上共享文件的方法。CentOS7默认使用NFSv4提供服务,其优点是提供了有状态的连接,更容易追踪连接状态,增强安全性。NFS监听在TCP 2049端口上,客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。在客户端看来,使用NFS的远端文件就像在使用本地文件一样,只要具有相应的权限就可以使用各种文件操作命令,对共享的文件进行相应的操作。Linux操作系统既可以作为NFS服务器,也可以作为NFS客户,这意味着他可以把文件系统共享给其他系统,也可以挂载从其他系统上共享的文件系统。

为什么需要安装NFS服务?当服务访问流量过大时,需要多台服务器进行分流,而这么多台服务器可以使用NFS服务进行共享。NFS除了可以实现基本的文件,还可以结合远程网络启动,实现无盘工作站。NFS应用场景多为高可用文件共享,多台服务器共享同样的数据,但是他的可扩展性比较差,本身高可用方案不完善。取而代之,数据量比较大的可以采用MFS、TFS、HDFS等分布式文件系统。

NFS的组成

两台计算机需要通过网络建立连接时,双方主机就一定需要提供一些基本信息,如IP地址、服务器端口号。当有100台客户端需要访问某台服务器时,服务器就需要记住这些客户端的IP地址以及相应的端口号等信息,而这些信息是需要程序来管理的。在Linux中,这样的信息可以由某个特定的服务自己来管理,也可以委托给RPC来帮助自己管理。RPC是远程过程调用的协议,协议为远程通信程序管理通信双方所需的基本信息,这样NFS服务就可以专注于如何共享数据。至于通信的链接以及连接的基本信息,则全权委托给RPC管理。因此NFS组件由与NFS相关的内核模块、NFS用户空间工具和RPC相关的服务组成,主要由如下2个RPM包提供:

  1. nfs-utils。包含NFS服务器端守护进程和NFS客户端相关工具。
  2. rpcbind。提供RPC的端口映射的守护进程及其相关文档、执行文件等。

实战案例-NFS服务的使用

1.案例目标

了解NFS服务的安装。

了解NFS的配置与使用。

2.案例分析

节点规划

IP

       主机名

        节点

192.168.63.34

     nfs-server

   NFS服务节点

   192.168.63.35

     nfs-client

  NFS客户端节点

3.案例实施

(1)基础配置

修改两个节点的主机名,第一台机器为nfs-server;第二台机器为nfs-client。

[root@localhost ~]# hostnamectl set-hostname nfs-server
[root@localhost ~]# bash

[root@localhost ~]# hostnamectl set-hostname nfs-client
[root@localhost ~]# bash

(2)安装NFS服务

配置好本地yum源后,为两个节点安装NFS服务。

[root@nfs-server ~]# yum install -y nfs-utils rpcbind

[root@nfs-client ~]# yum install -y nfs-utils rpcbind

注意:安装NFS服务必须要以来RPC,所以运行NFS就必须安装RPC。

(3)NFS服务使用

在nfs-server节点创建一个用于共享的目录,命令如下:

[root@nfs-server ~]# mkdir /mnt/test

编辑NFS服务的配置文件/etc/exports,在配置文件中加入一行代码,命令如下:

[root@nfs-server ~]# vi /etc/exports
/mnt/test 192.168.63.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)

生效配置命令如下:

[root@nfs-server ~]# exportfs -r

配置文件说明如下:

/mnt/test:为共享目录。

192.168.63.0/24:可以为一个网段,也可以是一个IP,还可以是域名。

rw:read-write,可读写。

ro:read-only,只读。

sync:文件同时写入硬盘和内存。

async:文件暂存于内存,而不是直接写入内存。

wdelay:延迟写操作。

no_root_squash:NFS客户端连接时,如果使用的是root,那么对服务器共享的目录来说,也拥有root权限。显然,开启这项是不安全的。

root_squash:NFS客户端连接服务端时,如果使用的是root,那么对服务端共享的mululaishu8o,拥有匿名用户的权限,通常他将使用nobody或nfsnobody身份。

all_squash:不论NFS客户端连接服务端时使用的什么用户,对服务共享的目录来说,都拥有匿名用户权限。

anonuid:匿名用户的UID值,可以在此处自行设定。

anongid:匿名用户的GID值。

nfs-server端启动NFS服务,命令如下:

[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# systemctl start nfs

nfs-server端查看可挂载目录,命令如下:

[root@nfs-server ~]# showmount -e 192.168.63.34
Export list for 192.168.63.34:
/mnt/test 192.168.63.0/24

可以查看到共享的目录。

转到nfs-client端,在客户端挂载前,先要将服务器的SElinux服务和防火前服务关闭。

[root@nfs-client ~]# setenforce 0
[root@nfs-client ~]# systemctl stop firewalld

nfs-client端启动NFS服务,命令如下:

[root@nfs-client ~]# systemctl start rpcbind
[root@nfs-client ~]# systemctl start nfs

在nfs-client节点进行NFS共享目录的挂载,命令如下:

[root@nfs-client ~]# mount -t nfs 192.168.63.34:/mnt/test /mnt/

无提示信息则表示成功,查看挂载情况,命令如下:

[root@nfs-client ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   16G  1.1G   15G    7% /
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M   20M  467M    5% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/sda1                397M  121M  277M   31% /boot
tmpfs                     98M     0   98M    0% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /opt/centos
192.168.63.34:/mnt/test   16G  1.1G   15G    7% /mnt

可以看到nfs-server节点的/mnt/test目录已挂在到nfs-client节点的/mnt目录下。

(4)验证

在nfs-client节点的/mnt目录下创建一个abc.txt文件并计算MD5的值,命令如下:

[root@nfs-client ~]# cd /mnt/
[root@nfs-client mnt]# ll
总用量 0
[root@nfs-client mnt]# touch abc.txt
[root@nfs-client mnt]# md5sum abc.txt
d41d8cd98f00b204e9800998ecf8427e  abc.txt

回到nfs-server节点进行验证,命令如下:

[root@nfs-server ~]# cd /mnt/test
[root@nfs-server test]# ll
总用量 0
-rw-r--r--. 1 root root 0 11月 25 13:53 abc.txt
[root@nfs-server test]# md5sum abc.txt
d41d8cd98f00b204e9800998ecf8427e  abc.txt

可以发现,在client节点创建的文件和server节点的文件是一样的。

### 设置和配置NFS服务器 #### NFS基础了解 NFS(Network File System),即网络文件系统,允许不同主机间的文件共享。通过NFS,可以像访问本地磁盘一样方便地读写远程计算机上的数据[^1]。 #### 安装和启动NFS服务 对于CentOS/RHEL/Fedora等基于Red Hat的发行版,在安装NFS之前可能需要先确保`rpcbind`已启动并运行正常: ```bash [root@localhost ~]# systemctl start rpcbind ``` 接着确认其监听状态: ```bash [root@localhost ~]# netstat -ntpl | grep 111 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 7278/rpcbind tcp6 0 0 :::111 :::* LISTEN 7278/rpcbind ``` 之后按照如下命令来完成NFS软件包的安装以及服务的开启与启用自启功能: ```bash yum install nfs-utils -y systemctl start nfs-server systemctl enable nfs-server ``` 上述操作会自动拉取必要的依赖项,并准备好环境以供后续配置使用[^4]。 #### 配置NFS服务器 编辑 `/etc/exports` 文件定义要导出给其他机器挂载使用的目录及其权限选项;例如: ```plaintext /mount/path client_ip(rw,sync,no_subtree_check) ``` 这里`/mount/path`是要分享出去的实际路径名,而`client_ip`则是被授权连接此资源的具体IP地址或者域名。括号内的参数控制着客户机对该位置拥有的权利范围——此处设定了可读写(`rw`)、同步更新(`sync`)且不检查子树(`no_subtree_check`)三个属性。 保存更改后执行以下指令使新设定生效: ```bash exportfs -a ``` 最后重启相关联的服务确保一切按预期运作: ```bash systemctl restart rpcbind systemctl restart nfs ``` 这样就完成了基本的NFS服务器端搭建过程[^3]。 #### 实际案例演示 假设有一台名为 `nfsserver.example.com` 的服务器想要向另一台位于同一局域网下的工作站开放特定的数据存储空间,则可以在前者上面做如下调整: - 编辑 `/etc/exports` 添加一行记录指定目标文件夹及对应的客户端限制条件; ```plaintext /data/workstation *(rw,sync,no_root_squash) ``` - 应用新的出口列表并通过命令行工具验证是否成功发布; ```bash exportfs -rv showmount -e localhost ``` 以上就是关于如何在Linux/CentOS平台上建立并管理简单的NFS服务器的方法介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值