31、简介
在一些场景中,我们需要多台机器进行磁盘文件共享,集群中如果有linux机器,也有windows机器,如何设置进行文件共享,本文将详细说明。
注:本文linux系统使用的是 centos7,windows使用的是 windows11,windows系统是从windows 7 及以后的版本中支持nfs服务的。
2、安装nfs服务
2.1、在linux系统上安装nfs服务(服务端)
yum install -y nfs-utils rpcbind
查看磁盘挂载目录,选择空间较大的目录设置共享目录。
# 新建共享文件夹
mkdir /share
修改共享目录的配置
vim /etc/exports
/share 192.168.0.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”错误
2.2、客户端安装nfs服务
安装和在服务端一样,使用 yum 命令安装 nfs-utils rpcbind 两个服务。
2.3、启动nfs服务
systemctl start rpcbind # 注意先启动rpcbind服务
systemctl start nfs
2.4、管理服务命令
systemctl start/status/stop/restart rpcbind
systemctl start/status/stop/restart nfs
# 设置/关闭开机自启动
systemctl enable/disenable rpcbind
systemctl enable/disenable nfs
2.5、客户端查看服务端挂载信息
showmount -e 192.168.0.66 # 服务端地址
挂载有两种方式:
第一种:命令行挂载(只在客户端配置)(临时挂载)
mount -t nfs 192.168.0.66:/share /share # 服务端ip:共享目录 本地挂载目录
mount 192.168.0.66:/share /share
umount /share # umount 本地挂载点
# 注:不要在挂载目录下执行,否则会有 umount.nfs4: /*: device is busy 错误
第二种:使用 /etc/fstab指定(只在客户端配置)(永久挂载)
vim /etc/fstab
# 添加如下一行
192.168.0.66:/share /share nfs defaults 1 1
#第一列是远程共享目录的地址:绝对路径 ;第二列是本地挂载点;第三列是文件类型介绍;;第四列是是否备份;第五列是检查选项(1是,0否)
修改完以上配置后在非挂载目录执行 mount -a 即可。
注:配置完需要重启服务。
要想设置开启自动永久挂载需要开启服务
systemctl start remote-fs.target
systemctl enable remote-fs.target
3、windows安装nfs服务
按照如下步骤进行安装:打开控制面板 -》 选择程序和功能 -》 启用或关闭windows功能 -》 找到nfs服务全部勾选。
3.1、修改注册表
为了避免验证,在注册表中添加匿名用户的默认UID和GID,在 win + R 运行中输入regedit,打开注册表编辑器, 按照如下顺序检索:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,新建AnonymousGig和AnonymousUid,其值都设置为0。修改完成之后,需要重启电脑,注册表才会生效。
3.2、设置共享目录
双击 计算机 -》右键网络 -》 选择映射网络驱动器
输入 \\服务端ip\共享目录 进行访问(注意格式)。
3.3、windows访问linux共享目录
4、总结
nfs服务不仅可以在linux集群中进行文件共享,还可以进行跨系统共享,主要是因为nfs是通过网络进行数据传输,只要是安装nfs客户端的机器,都可以访问nfs服务端的共享文件。