Skip to content

NFS Quick Start

luantian-terark edited this page Apr 17, 2023 · 9 revisions

NFS 快速入门

1. NFS 简介

NFS 有着悠久的历史,最早的版本发布于 1984 年,经过几十年的发展,NFS 早已成熟稳定,广泛可用,在各种 Unix/Linux 上都有内置的支持,例如在 Linux 上 NFS 是内核直接支持的文件系统,BSD 对 NFS 的支持力度更胜过 Linux。

NFS 在很多系统中以 NAS(Network Attached Storage) 的形式提供,在公有云上,各云厂商都有相应的 NAS 产品,在 K8S 中 NFS 更是基础组件之一。

本文以最短的篇幅带领您以最简单快捷的方式在 Linux(RHEL 系) 上配置并请启用 NFS,关于 NFS 更深入的话题,您可以查阅更专业的资料和文档。

2. 配置并启动 NFS Server

首先安装必要的软件包(很可能系统中已经安装了):

sudo yum -y install nfs-utils

假定您要把 /disk1 通过 NFS 开放给其它机器访问,首先,编辑修改 /etc/exports,在其中增加一行:

/disk1 *(rw,async,no_root_squash,fsid=1)

一般情况下 fsid 是可选的,但是如果要开放的目录是 /dev/shm,就必须指定 fsid。建议显式指定fsid,有助于减少 NFS 客户端的stale file handle错误。

接下来,增加 NFS 服务器线程数,以提高性能: 对于 Centos 7/8 , 找到 /etc/nfs.conf 文件修改 thread 的线程数:

# 这一行可能被注释掉了,二者要一起修改
[nfsd]
# 建议修改为 32 以上
threads=64

对于 某些发行版,没有 /etc/nfs.conf 而存在 /etc/sysconfig/nfs,可以修改 /etc/sysconfig/nfs文件,修改 RPCNFSDCOUNT 值为 32 以上。

接下来,启动服务:

sudo systemctl enable --now nfs-server

这个最简单的配置可以让您快速搭建起一个 NFS,忽略了安全性等相关主题,如有需要您可以查阅更专业的资料和文档。

3. 在 Client 机器上挂载并访问 NFS

首先安装必要的软件包(很可能系统中已经安装了):

sudo yum -y install nfs-utils

增加客户端连接数:

sudo echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
sudo echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf
sudo sysctl -w sunrpc.tcp_slot_table_entries=128

挂载 NFS:

sudo mkdir /mnt/mynfs # 创建该目录用来挂载 NFS
sudo mount -t nfs -o rw,noatime,async nfs-server-ip:/disk1 /mnt/mynfs

现在,您就可以在 Client 机器上通过 /mnt/mynfs 访问 NFS Server 上的 /disk1 目录了