NFS 文件存储,安装配置使用,为Linux服务器/Docker容器提供持续化的文件存储 2022-6-25

段落1、需求描述

内网中的一些Linux主机,还有一些Docker容器,需要持续化的一些文件共享,这个场景,NFS是非常适合的,下面就来讲解一下,如何配置NFS服务器,为其他内网Linux/Docker容器,提供共享的文件存储分区

NFS 的优点是内核直接支持,部署简单、运行稳定,协议简单、传输效率高。
NFS 的缺点是没有加密授权等功能,仅依靠 IP 地址或主机名来决定用户能否挂载共享目录,对具体目录和文件无法进行 ACL 权限控制(NFSv4 以前)。通常的做法是通过 Kerberos 对 NFS 进行认证及加密,不过部署配置比较麻烦。

Windows对于NFS文件存储支持稍欠缺,缺UTF8编码,可能有文件名乱码问题。

段落2、安装 NFS Server

apt update
apt install nfs-kernel-server

段落3、配置 NFS Server

/media/NFSData 是我这里模拟提供NFS存储的大容量磁盘的挂载点

/dev/sdb1 是我这里模拟提供NFS存储的大容量设备文件分区

相关Dasmz的其他博客

Ubuntu/Debian 的Linux环境,格式化超过2TB的磁盘 2022-4-24

https://dasmz.com/?p=2177

mkdir -p /media/NFSData
chown nobody:nogroup /media/NFSData 
chmod 777 /media/NFSData
mount /dev/sdb1 /media/NFSData

修改基于IP可信的配置文件,我这里,对于整个内网的IP段虚拟机VM都放行这个NFS分区

修改配置文件

# 修改 /etc/exports 文件
/media/NFSData    10.11.11.0/24(rw,sync,no_subtree_check)

参数释义

ro: specifies that the directory may only be mounted as read only
rw: grants both read and write permissions on the directory
no_root_squash: is an extremely dangerous option that allows remote “root” users the same privilege as the “root” user of the host machine
subtree_check: specifies that, in the case of a directory is exported instead of an entire filesystem, the host should verify the location of files and directories on the host filesystem
no_subtree_check: specifies that the host should not check the location of the files being accessed withing the host filesystem
sync: this just ensures that the host keeps any changes uploaded to the shared directory in sync
async: ignores synchronization checks in favor of increased speed

修改完配置文件,重启服务即可

systemctl restart nfs-server
systemctl enable nfs-server

NFS Server监听端口是 TCP/2049

RPC-Bind监听端口 TCP/111

段落4、配置客户端

apt update
apt install nfs-common

mkdir -p /media/NFS
mount -t nfs4 10.11.11.200:/media/NFSData /media/NFS

段落5、设置开机启动的挂载

# 修改文件 /etc/fstab

10.11.11.200:/media/NFSData	/media/NFS	nfs4	defaults,user,exec	0 0

完成

段落6、排查问题,部分版本的,可能需要修改/etc/default/nfs-common

常见报错

mount.nfs: access denied by server while mounting

可能原因

6.1、安全组,防火墙,端口放行

6.2、检查配置文件

exportfs -rav

6.3、用户ID匹配,我这里不区分,即:

# 修改 /etc/default/nfs-common
NEED_IDMAPD=no
NEED_GSSD=no

6.4、客户端显示更多信息

客户端执行mount命令的时候,加上 -v 参数

mount -t nfs -vvvv 1.169.9.27:/media/remote_nfs /media/LNFS

附录1、安全

如果不放心未知的风险,可选用防火墙加固一下 111/ 2049 两个端口,如果是NFSv3,可能还需要增加防护端口 37305/40087/54045/55529

2023-02-23 更新文章

附录2、视频演示

NFS 文件存储,安装配置使用,为Linux服务器/Docker容器提供持续化的文件存储 2022-6-25》有1个想法

  1. Pingback引用通告: 视频文件的目录索引 更新到2022-06-25 | Dasmz

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注