安装NFS服务器,在Linux和Windows服务器之间共享文件。NFS是Network File System 的缩写。NFS可让用户或主机通过网络从多个磁盘和目录中存储和检索数据。这种分布式文件系统由 Sun Microsystems 于 1984年开发。NFS采用客户机/服务器模式运行,NFS服务器管理客户端的授权和管理,并存储共享数据。一旦认证成功,客户端就可以像本地文件系统一样查看和访问数据。
部署的系统环境如下。
角色 | 主机名 | IP地址 | 操作系统 | 共享目录 | 挂载点 |
---|---|---|---|---|---|
NFS服务器 | nfs001 | 192.168.64.160 | Rocky Linux9.3 | /nfs-share | – |
NFS客户端1 | dns001 | 192.168.64.157 | Rocky Linux9.3 | – | /install |
NFS客户端2 | ad001 | 192.168.64.148 | Windows Server2019 | – | Z盘符 |
NFS最新版本是4.2,NFS服务监听在TCP端口2049。如果NFS服务器有访问限制,应允许NFS客户端主机访问NFS服务器的TCP端口2049。
NFS服务器
使用dnf或者yum命令安装nfs-utils软件包。
# dnf install nfs-utils -y
完成NFS服务器的安装后,在 /etc/idmapd.conf 文件中对 NFS 服务器进行域名配置。idmapd 是负责提供 NFSv4 内核客户端和服务器功能的守护进程。它将用户和组 ID 转换为名称,反之亦然,从而确保服务器客户端通信。
使用喜欢的文本编辑器打开 /etc/idmapd.conf 文件之后,修改Domain参数的值为sys-blog.local。
Domain = sys-blog.local
在 /etc/exports 文件中配置,NFS客户端可访问的NFS服务器上的物理文件。因此需要编辑并添加要共享给NFS客户端的文件系统,在这里共享给NFS客户端的文件系统路径为 /nfs-share 目录。
创建共享目录 /nfs-share 目录。
# mkdir -p /nfs-share
编辑 /etc/xports 文件,将 /nfs-share 目录分享给IP网段 192.168.64.0/24 里的所有主机。
/nfs-share 192.168.64.0/24(rw,no_root_squash)
export的主要选项如下。
选项 | 解释 |
---|---|
rw | 允许读和写 |
ro | 仅允许读 |
sysc | 启用同步写入(默认) |
async | 启用异步写入 |
secure | 当NFS客户端的端口小于1024时,接收请求(默认值) |
insecure | 禁用确认NFS客户端的端口号。 |
wdelay | 如果另一个写入请求正在执行或即将发生,则进行延迟写入(默认值) |
no_wdelay | 禁用 wdelay。与async一起设置 |
subtree_check | 一般来说,大部分为只读且不经常重命名目录时,最好启用子树检查。(默认值) |
no_subtree_check | 禁用子树检查。一般来说,在共享目录有许多小文件且经常更改的目录时,最好禁用子树检查。 |
root_squash | 将root用户的 UID/GID 映射为匿名用户的 UID/GID。 |
no_root_squash | 禁止将root用户的 UID/GID 映射为匿名用户的 UID/GID。 |
all_squash | 将所有用户的 UID/GID 映射为匿名用户的 UID/GID。 |
no_all_squash | 禁止将所有用户的 UID/GID 映射为匿名用户的 UID/GID(默认值) |
anonuid=UID | 将指定的 UID 映射为匿名用户的 UID |
anongid=GID | 将指定的 GID 映射为匿名用户 GID |
启动NFS服务并将NFS服务设定为开机自动启动。
# systemctl start rpcbind nfs-server
# systemctl enable rpcbind nfs-server
完成NFS服务器的设定之后,使用 showmount –exports nfs001.sys-blog.local 命令确认分享的目录。
在这里需要将nfs001.sys-blog.local修改为自己的NFS服务器的FQDN。
如果使用系统的firewalld服务的话,执行 firewall-cmd –add-service=nfs –permanent 命令允许访问nfs服务。
NFS客户端(Linux)
使用dnf或者yum命令安装nfs-utils软件包。
# dnf install nfs-utils -y
使用文本编辑器打开 /etc/idmapd.conf 文件之后,修改Domain参数的值为sys-blog.local。
Domain = sys-blog.local
启动rpcbind拂去并将该服务设定为开机自动启动。
# systemctl start rpcbind
# systemctl enable rpcbind
在这里创建本地目录 /install 之后,将NFS服务器的/nfs-share目录以NFS协议进行挂载。
# mkdir -p /install
# mount -t nfs -o vers=4 nfs001.sys-blog.local:/nfs-share /install
-o 选项可指定参数,在这里指定了NFS版本4(默认版本是NFS4),如果使用NFS版本3的话,参数为 vers=3。
确认NFS服务器上的 /nfs-share 目录,已被挂载至本地的 /install 目录。
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 867M 0 867M 0% /dev/shm
tmpfs tmpfs 347M 7.1M 340M 3% /run
/dev/mapper/rl-root xfs 37G 5.9G 32G 16% /
/dev/sda1 xfs 960M 301M 660M 32% /boot
tmpfs tmpfs 174M 52K 174M 1% /run/user/42
tmpfs tmpfs 174M 36K 174M 1% /run/user/0
nfs001.sys-blog.local:/nfs-share nfs4 64G 4.9G 59G 8% /install
在使用mount命令,进行了临时挂载。编辑 /etc/fstab 文件,系统启动时自动挂载NFS服务器的共享目录。
开始编辑之前备份/etc/fstab文件。
# cp /etc/fstab /etc/fstab.$(date +%Y%m%d%s)
打开 /etc/fstab 文件之后,添加下面的一行。
nfs001.sys-blog.local:/nfs-share /install nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
请nfs001.sys-blog.local改为你自己的主机的FQDN或者IP地址。
把临时挂载的NFS目录卸载之后,执行 mount -a 命令使用 /etc/fstab 里的NFS挂载选项进行挂载。
# umount /install
# systemctl daemon-reload
# mount -a
再次执行 df -Th 命令确认NFS共享目录已被挂载。
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 867M 0 867M 0% /dev/shm
tmpfs tmpfs 347M 7.1M 340M 3% /run
/dev/mapper/rl-root xfs 37G 5.9G 32G 16% /
/dev/sda1 xfs 960M 301M 660M 32% /boot
tmpfs tmpfs 174M 52K 174M 1% /run/user/42
tmpfs tmpfs 174M 36K 174M 1% /run/user/0
nfs001.sys-blog.local:/nfs-share nfs4 64G 4.9G 59G 8% /install
最后可以重启NFS客户端的OS,确认开机自动挂载NFS是否成功。
NFS客户端(Windows Server)
以 Windows Server 2019 为例。
启动”服务器管理器”之后,点击”添加角色和功能”。
点击”下一步”。
选择服务器 ad001 之后,点击”下一步”。
在”服务器角色”选择里,不进行任何勾选,直接点击”下一步”。
勾选”NFS客户端”之后,点击”下一步”。
点击”安装”,开始安装NFS客户端。
完成安装之后,点击”关闭”。
添加NFS客户端功能之后,就可以在Windows服务器上挂载NFS服务器的共享目录。以管理员权限启动命令行之后,执行下面的命令。
mount <NFS服务器的IP地址或者主机名>:<共享目录> <指定未使用的盘符>
当成功挂载时,如上显示”命令已成功完成”。打开文件浏览器,可确认NFS已被挂载。
Windows PC也可通过如下方法添加NFS服务功能后,使用NFS协议进行挂载。
“控制面板” -> “程序和功能” -> “关闭和启用Windows功能”,添加”FNS服务”及下面的”NFS客户端”和”管理工具”。
关于Windows PC支持的NFS版本,查看微软官网网络文件系统概述。需注意的是,根据NFS客户端可使用的NFS协议,需要在NFS服务器上进行设定。
测试读写
在Linux客户端写文件之后,查看是否能在Widnows服务器上查看该内容。
Linux上的NFS客户端上,在NFS服务器的共享目录下创建 sys-blog.txt 文件。
# echo "This is test for nfs write." > /install/sys-blog.txt
# ll /install/
total 4
-rw-r--r-- 1 root root 28 Jan 20 08:53 sys-blog.txt
在Windows服务器上的NFS客户端查看该文件的内容。
Linux系统和Windows系统使用NFS共享目录,访问文件工作的非常好!