灰儿 发表于 2023-10-11 14:12:25

Ubuntu Linux 下使用NFS挂载远程主机的目录

最近,工作中遇到了一种情况,原有服务器的存储空间不足,无法满足现有系统的运行,因为一些原因,系统迁移和扩展内存方案不能实行,经排查现在占用内存较大的是系统中的文件存储功能,经调研,可以采用挂载远程共享目录的方式,将文件存储挂载到远程机器的目录,从而扩展了现有存储。
Linux现有比较成熟的解决方案有两种,一种是NFS远程挂载,另一种是Samba共享目录。下面就NFS方式的配置进行说明。

一、NFS概念NFS:即网络文件系统(Network File System)分布式文件系统协议
二、环境NFS 服务器:192.168.1.1 共享目录 /data/share NFS 客户端:192.168.1.2 关联目录 /data/store大致逻辑是这样:将A机器的目录/data/share设置为共享目录,机器B通过mount的方式和A机器的共享文件夹进行连接。
三、操作步骤

(一)NFS 服务器
安装NFS服务NFS 服务器包提供运行 NFS 内核服务器所需的用户空间支持。要安装软件包,请运行:
sudo apt update
sudo apt install nfs-kernel-server安装完成后,NFS 服务将自动启动。
在 Ubuntu 20.04 上,NFS 版本 2 被禁用。版本 3 和 4 已启用。cat您可以通过运行以下命令来验证 :
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2NFSv2 现在已经很老了,没有理由启用它。
NFS 服务器配置在/etc/default/nfs-kernel-server和/etc/default/nfs-common文件中定义。对于大多数情况,默认设置就足够了。

创建nfs服务器共享目录
创建一个目录用于nfs服务器将文件共享给客户端,这个目录将会写入到nfs配置文件中:
sudo mkdir /data/share
修改nfs服务器配置文件
打开nfs服务器配置文件/etc/exports,命令如下:
sudo nano /etc/exports内容默认为空,指定nfs服务器共享目录及其属性,内容如下:/data/share 192.168.1.2(rw,sync,no_root_squash,no_subtree_check)
解析:
/data/share:#指定/nfsroot为nfs服务器的共享目录;
192.168.1.2:#客户机地址,可以是 主机名、IP地址、网段地址、或者"*、?"通配符;
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限
no_subtree_check:不检查父目录的权限

常见的选项:
       ro:默认选项,以只读的方式共享。
       rw:以读写的方式共享。
       sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。
       async:异步,先将数据写入到内存,在将数据写入到硬盘。
       root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。
       no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。
       all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。
       no_subtree_check:不检查父目录的权限
       anonuid:设置映射到本地的匿名用户的UID
       anongid:设置映射到本地的匿名用户的GID
       secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。
       insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)。

exportfs命令
常用选项
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录

示例:
不用重启nfs服务,配置文件就会生效
sudo exportfs -arv
要查看当前活动的导出及其状态,请使用:
sudo exportfs -v
重启nfs服务器
执行下面两个命令其中一个可以重启nfs服务器:
sudo service nfs-kernel-server restart
或者
sudo /etc/init.d/nfs-kernel-server restart
查看当前机器已经发布的NFS共享目录showmount -e localhost显示Export list for localhost:
/data/share 192.168.1.2此时共享机器A的配置已经完成,可直接在机器B进行目录的挂载操作


(二)NFS 客户端
安装NFS 客户端:sudo apt update
sudo apt install nfs-common
安装rpcbind服务:apt install rpcbind
在本机新建目录,用于挂载 NFS 服务器文件夹,如:sudo mkdir -p /data/store
查看NFS Server目录 
showmount -e nfs-server-ip
挂载
使用mount命令,此处表示将IP为:192.168.1.1所共享的/data/share目录,挂载到当前服务的 /data/store 目录下
sudo mount -t nfs -o nolock 192.168.1.1:/data/share /data/store解析:
-t:挂载的文件系统类型
-o nolock:不要文件锁
192.168.1.1:/data/share:nfs服务器ip:服务器共享目录
/data/store:客户端已存在的目录

开机自动挂载
要在重新启动时永久挂载,请打开/etc/fstab文件并添加以下行:
sudo nano /etc/fstab192.168.1.1:/data/share /data/store nfs defaults,_netdev 0 0开机自动启动systemctl enable rpcbind.servicesystemctl enable nfs-server.service
查看当前机器挂载点
df -h
卸载所挂载的文件目录:
sudo umount /nfsdata/



灰儿 发表于 2023-10-14 14:04:51

http://www.admin365.cn/thread-112522-1-1.htmlNFS服务的权限和用户映射问题
页: [1]
查看完整版本: Ubuntu Linux 下使用NFS挂载远程主机的目录