NFS Server 搭建与配置
status
Published
type
Post
slug
nfs-config-record
date
Aug 19, 2020
tags
Config
NFS
Linux
summary
NFS(Network File System)是一种分布式文件系统协议,可以使计算机在网络中像访问本地文件一样访问远程文件。在Linux系统中,可以通过安装NFS服务端和配置NFS来实现共享存储。安装NFS服务端需要使用特定的命令,如在Debian系发行版中可以使用以下命令安装NFS:
sudo apt install nfs-kernel-server
。配置NFS需要编辑/etc/exports
文件,指定共享路径、允许的主机和共享参数,如读写权限、同步写入等。编辑完成后,使用sudo exportfs -arv
命令启动共享文件夹。管理NFS服务可以通过systemctl
命令来查看状态、启动和重启NFS服务。连接NFS客户端需要安装NFS客户端并挂载NFS共享目录,最后可以进行测试以确保共享目录的正常使用.因客户环境暂无 NAS,故采用搭建 NFS 的方式来实现共享存储,如下做一个简单整理记录以备查询。
什么是NFS协议?
NFS(Network File System)是一种分布式文件系统协议,可以使计算机在网络中像访问本地文件一样访问远程文件。
安装NFS服务端
- 安装NFS
在Linux系统中,以
Debian
系发行版为例,可以使用以下命令安装NFS:sudo apt install nfs-kernel-server
- 配置NFS
配置NFS需要编辑
/etc/exports
文件,例如:# 共享路径 允许的主机(共享参数) # /home/user/shared是要共享的目录,*表示允许任何客户端连接,rw表示可读写,sync表示同步写入,no_subtree_check表示不检查子树。 /home/user/shared *(rw,sync,no_subtree_check)
更多参数说明如下:
参数 | 说明 |
ro / rw | 只读 / 读写 |
root_squash | 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户 |
no_root_squash | 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员 |
all_squash | 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
编辑好该文件后,可使用如下命令启动该共享文件夹:
sudo exportfs -arv
使用
showmount -e
可查看该共享目录。- 管理NFS服务
使用以下命令重启NFS服务:
# 查看状态 sudo systemctl status nfs-server # 启动 sudo systemctl start nfs-server # 重启 sudo systemctl restart nfs-kernel-server
连接NFS客户端
- 安装NFS客户端
使用以下命令安装NFS客户端:
sudo apt install -y --no-install-recommends nfs-common
- 挂载NFS共享目录
使用以下命令挂载NFS共享目录:
# 创建挂载路径 mkdir -p /mnt/nfs # 挂载, 其中 nfs_server 是NFS服务端的IP地址或主机名,/home/user/shared是要挂载的共享目录路径,/mnt是本地挂载目录。 sudo mount nfs_server:/home/user/shared /mnt/nfs
挂载时,须保证 NFS 服务相关端口是通达的,可通过
rpcinfo -p | grep nfs
命令查看相应端口,一般为 2049,防火墙中打开此端口后再尝试挂载即可。- 测试NFS共享目录
# 客户端文件夹中,创建文件 cd /mnt/nfs dd if=/dev/zero of=./test bs=1M count=10 ll # 服务端查看该共享目录 ll /home/user/shared
- 客户端强制卸载挂载点
# 强制关闭正在使用指定文件或目录的进程 fuser -km /mnt/nfs/ # 再 umount umount /mnt/nfs/