admin管理员组

文章数量:1574044

Windows/Linux客户端挂载NFS共享存储

  • 1. Linux搭建NFS共享存储
    • 1.1. NFS概述
    • 1.2. 安装并配置NFS Server
    • 1.3. 启动并验证NFS Server
  • 2. 客户端挂载NFS共享存储
    • 2.1. Windows操作系统挂载NFS共享存储
    • 2.2. Linux操作系统挂载NFS共享存储
  • 3. 强制卸载NFS共享存储

1. Linux搭建NFS共享存储

1.1. NFS概述

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,通过使用 NFS协议,客户机可以像访问本地目录一样访问远程 NFS 服务器中的共享资源。同时NFS 也是 NAS存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用。

1.2. 安装并配置NFS Server

NFS 服务的实现依赖于 RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Linux操作系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

关闭防火墙和SELinux:

systemctl disable firewalld
systemctl stop firewalld

sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config
setenforce 0 
df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  8.5M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        20G  1.6G   18G   9% /
/dev/vdb1       985G   77M  935G   1% /wangzynfs	# 使用一块单独的硬盘充当共享存储空间
tmpfs           379M     0  379M   0% /run/user/0
vim /etc/fstab
UUID=d92f2371-9009-4fc9-bd60-7c468c780ce1 /                       ext4    defaults        1 1
/dev/vdb1                                 /wangzynfs              ext4    defaults        1 1

安装nfs-utils和rpcbind软件包:

yum install -y nfs-utils rpcbind

1.3. 启动并验证NFS Server

说明: 手动加载NFS共享服务时,应该先启动/停止rpcbind,再启动/停止nfs,一定要按顺序启动和停止。
启动rpcbind和nfs服务:

systemctl start rpcbind
systemctl start nfs

systemctl enable rpcbind
systemctl enable nfs

设置共享目录:
NFS的配置文件为 /etc/exports,文件内容默认为空,即无任何共享。
在exports文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)

cat /etc/exports
/wangzynfs 192.168.24.0/24(rw,sync,no_root_squash,insecure)
  • rw 表示允许读写
  • ro 表示为只读
  • sync 表示同步写入到内存与硬盘中
  • no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是- root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
  • root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
  • all_squash 所有访问用户都映射为匿名用户或用户组
  • async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
  • subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
  • no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
  • insecure必须加,否则会报“无法创建映射网络驱动器 网络错误-53”错误

重启NFS服务并验证:

systemctl stop rpcbind
systemctl stop nfs

systemctl start rpcbind	# 注意先启动rpcbind服务
systemctl start nfs
exportfs -v
/wangzynfs      192.168.24.xxx/32(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

showmount -e localhost
Export list for localhost:
/wangzynfs 192.168.24.xxx/32

2. 客户端挂载NFS共享存储

2.1. Windows操作系统挂载NFS共享存储

打开控制面板—程序—找到“启用或关闭Windows功能”—启用NFS服务,完成之后不需要重启Windows操作系统
说明:NFS服务默认关闭,家庭中文版不支持该功能奥

  • 选择映射网络驱动器:

  • 输入:\NFS Server的IP地址\共享路径

  • 挂载完成之后,往共享存储写入文件,会报“需要权限来执行此操作”

接下来需要修改注册表,在注册表中添加匿名用户的默认UID和GID

  • 在运行中输入regedit,打开注册表编辑器:
    按照如下顺序检索:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default


    新建AnonymousGig和AnonymousUid,其值都设置为0。修改完成之后,需要重启Windows客户端操作系统,注册表才会生效
    查看共享存储NFS属性信息:

2.2. Linux操作系统挂载NFS共享存储

  • Linux客户端安装如下软件包:
yum install -y nfs-utils rpcbind
  • 验证服务端挂载点:
showmount -e 172.26.xxx.xxx
Export list for 172.26.xxx.xxx:
/wangzynfs 172.26.xxx.xxx/32
  • 安装HTTP服务挂载共享存储:
yum install -y httpd
mount -t nfs 172.26.xxx.xxx:/wangzynfs /var/www/html/
# NFS 共享的访问使用 mount 命令来进行挂载,对应的文件系统类型为 nfs 

手动挂载NFS共享目录:

mount -t nfs 172.26.xxx.xxx:/wangzynfs /var/www/html

df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                   486M     0  486M   0% /dev
tmpfs                      496M     0  496M   0% /dev/shm
tmpfs                      496M  6.7M  489M   2% /run
tmpfs                      496M     0  496M   0% /sys/fs/cgroup
/dev/vda1                   20G  1.7G   17G   9% /
tmpfs                      100M     0  100M   0% /run/user/0
172.26.xxx.xxx:/wangzynfs  985G   76M  935G   1% /var/www/html

自动挂载NFS共享目录:
修改 /etc/fstab 配置文件,加入NFS共享目录的挂载设置,文件系统类型为nfs

vim /etc/fstab
172.26.xxx.xxx:/wangzynfs  /var/www/html         nfs     defaults,_netdev  1 1

3. 强制卸载NFS共享存储

NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然间停掉了,那么在客户端就会出现执行df -h命令卡死的现象。
这个时候使用umount命令是无法直接卸载的,需要加上-lf 选项才能卸载。
当出现卡死现象时,要重新开一个终端,执行cat /etc/rc.local命令,查看挂载点。然后使用umount命令卸载,其中-l 选项表示解除正在繁忙的文件系统,-f 选项表示强制。

模拟NFS服务端故障
systemctl stop nfs

客户端执行如下命令都会卡住
umount /var/www/html 
df -h 

需要在客户端强制解除挂载
umount -lf /var/www/html

本文标签: 客户端WindowsLinuxnfs