NFS安装
NFS安装
iamxun前言
NFS 是 Network File System 的缩写,即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。 本例演示 CentOS 7 下安装和配置 NFS 的基本步骤。
环境说明
CentOS 7(Minimal Install)
1 | $ cat /etc/redhat-release |
本例演示环境如下
Name | IP Addr | Descprition |
---|---|---|
Server | 192.169.0.110 | 服务端 IP |
Client | 192.168.0.101 | 客户端 IP |
Windows Client | 192.168.0.102 | Windows Server 2008 |
根据官网说明 Chapter 8. Network File System (NFS) - Red Hat Customer Portal,CentOS 7.4 以后,支持 NFS v4.2 不需要 rpcbind 了,但是如果客户端只支持 NFC v3 则需要 rpcbind 这个服务。
服务端
服务端安装
使用 yum 安装 NFS 安装包。
1 | $ sudo yum install nfs-utils |
注意
只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。
服务端配置
设置 NFS 服务开机启动
1 | $ sudo systemctl enable rpcbind |
启动 NFS 服务
1 | $ sudo systemctl start rpcbind |
防火墙需要打开 rpc-bind 和 nfs 的服务
1 | $ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} |
配置共享目录
服务启动之后,我们在服务端配置一个共享目录
1 | $ sudo mkdir /data |
根据这个目录,相应配置导出目录
1 | $ sudo vi /etc/exports |
添加如下配置
1 | /data/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash) |
/data
: 共享目录位置。192.168.0.0/24
: 客户端 IP 范围,*
代表所有,即没有限制。rw
: 权限设置,可读可写。sync
: 同步共享目录。no_root_squash
: 可以使用 root 授权。no_all_squash
: 可以使用普通用户授权。
:wq
保存设置之后,重启 NFS 服务。
1 | $ sudo systemctl restart nfs |
可以检查一下本地的共享目录
1 | $ showmount -e localhost |
这样,服务端就配置好了,接下来配置客户端,连接服务端,使用共享目录。
Linux 客户端
客户端安装
与服务端类似
1 | $ sudo yum install nfs-utils |
客户端配置
设置 rpcbind 服务的开机启动
1 | $ sudo systemctl enable rpcbind |
启动 NFS 服务
1 | $ sudo systemctl start rpcbind |
注意
客户端不需要打开防火墙,因为客户端时发出请求方,网络能连接到服务端即可。 客户端也不需要开启 NFS 服务,因为不共享目录。
客户端连接 NFS
先查服务端的共享目录
1 | $ showmount -e 192.168.0.110 |
在客户端创建目录
1 | $ sudo mkdir /data |
挂载
1 | $ sudo mount -t nfs 192.168.0.101:/data /data |
挂载之后,可以使用 mount
命令查看一下
1 | $ mount |
这说明已经挂载成功了。
测试 NFS
测试一下,在客户端向共享目录创建一个文件
1 | $ cd /data |
之后取 NFS 服务端 192.168.0.101
查看一下
1 | $ cd /data |
可以看到,共享目录已经写入了。
客户端自动挂载
自动挂载很常用,客户端设置一下即可。
1 | $ sudo vi /etc/fstab |
在结尾添加类似如下配置
1 | # |
由于修改了 /etc/fstab
,需要重新加载
systemctl
。
1 | $ sudo systemctl daemon-reload |
之后查看一下
1 | $ mount |
此时已经启动好了。如果实在不放心,可以重启一下客户端的操作系统,之后再查看一下。
Windows 客户端
Windows 安装 NFS 客户端,不同的 Windows 版本,安装方式不大一样,本例列举几个。
Windows | 步骤 |
---|---|
Windows Server 2008 | servermanagercmd.exe -install FS-NFS-Services |
Windows 7 | 程序和功能 - 启动或关闭 Widnows 功能 - NFS 服务 |
Windows Server 2012 | 添加功能角色 - 添加文件打印服务 - NFS 客户端 |
Windows 10 | 程序和功能 - 启动或关闭 Widnows 功能 - NFS 服务 |
客户端安装
本例的 Windows 为 Windows Server 2008 R2
1 | C:> servermanagercmd.exe -install FS-NFS-Services |
客户端配置
首先要了解服务端的文件夹权限,本例服务端 /data
目录的所有者为 root
,查看一下 root 用户的信息
1 | $ sudo id root |
可以看到 uid=0
, gid=0
,需要在 Windows
客户端上进行配置,参考 UID/GID
using the registry entries
注意
本例以 root 为例,生产环境要考虑安全因素,请修改为相应的有权限的用户
回到 Windows 进行配置
首先,启动注册表编辑器
1 | C:> regedit |
然后,进行如下步骤
- 定位到这一项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
- 创建两个 DWORD 值,名称分别为
AnonymousUid
和AnonymousGid
- 设置 UID 和 GID 的值,本例设置为
0
- 重启 Windows 操作系统 (或者重启 NFS Client 服务)
服务器重启之后,挂载文件夹,在 DOS 命令窗口输入命令
1 | C:> mount 192.168.0.110:/data X: |
这样,就将 NFS 服务端的共享文件夹挂载到了本地的 X:
盘,
也可以卸载掉这个驱动器,使用如下命令:
1 | C:> umount X: |
注意
通过此命令操作挂载,当服务器重启时,不会自动挂载。
登录时自动挂载,进行如下步骤
- 点击此电脑
- 在弹出的计算机对话框中,在工具栏找到
映射网络驱动器
- 驱动器地址输入
X:
- 文件夹输入
192.168.0.110:/data
- 确认
登录时重新连接
是勾选的,这个配置表示登录时自动挂载共享目录。
客户端测试
Windows 操作都是有界面的,本例不做具体截图,可以点击进入 X 盘,创建文件夹试试,然后新建文件试试。
如果有问题,请确认一下服务端的文件加权限。
结论
本文演示了 CentOS 7 下 yum 安装和配置 NFS,以及服务端和客户端的配置。
参考资料
Setting Up NFS Server And Client On CentOS 7 Chapter 8. Network File System (NFS) - Red Hat Customer Portal Can I Set Up User Name Mapping in Windows Vista?