热搜词
发表于 2023-10-11 14:12:25 | 显示全部楼层 |阅读模式
最近,工作中遇到了一种情况,原有服务器的存储空间不足,无法满足现有系统的运行,因为一些原因,系统迁移和扩展内存方案不能实行,经排查现在占用内存较大的是系统中的文件存储功能,经调研,可以采用挂载远程共享目录的方式,将文件存储挂载到远程机器的目录,从而扩展了现有存储。
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 内核服务器所需的用户空间支持。要安装软件包,请运行:
  1. sudo apt update
  2. sudo apt install nfs-kernel-server
复制代码
安装完成后,NFS 服务将自动启动。
在 Ubuntu 20.04 上,NFS 版本 2 被禁用。版本 3 和 4 已启用。cat您可以通过运行以下命令来验证 :
  1. sudo cat /proc/fs/nfsd/versions
  2. -2 +3 +4 +4.1 +4.2
复制代码
NFSv2 现在已经很老了,没有理由启用它。
NFS 服务器配置在/etc/default/nfs-kernel-server和/etc/default/nfs-common文件中定义。对于大多数情况,默认设置就足够了。

创建nfs服务器共享目录
创建一个目录用于nfs服务器将文件共享给客户端,这个目录将会写入到nfs配置文件中:
  1. sudo mkdir /data/share
复制代码

修改nfs服务器配置文件
打开nfs服务器配置文件/etc/exports,命令如下:
  1. sudo nano /etc/exports
复制代码
内容默认为空,指定nfs服务器共享目录及其属性,内容如下:
  1. /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服务,配置文件就会生效
  1. sudo exportfs -arv
复制代码

要查看当前活动的导出及其状态,请使用:
  1. sudo exportfs -v
复制代码

重启nfs服务器
执行下面两个命令其中一个可以重启nfs服务器:
  1. sudo service nfs-kernel-server restart
  2. 或者
  3. sudo /etc/init.d/nfs-kernel-server restart
复制代码

查看当前机器已经发布的NFS共享目录
  1. showmount -e localhost
复制代码
显示
  1. Export list for localhost:
  2. /data/share 192.168.1.2
复制代码
此时共享机器A的配置已经完成,可直接在机器B进行目录的挂载操作


(二)NFS 客户端

安装NFS 客户端:
  1. sudo apt update
  2. sudo apt install nfs-common
复制代码

安装rpcbind服务:
  1. apt install rpcbind
复制代码

在本机新建目录,用于挂载 NFS 服务器文件夹,如:
  1. sudo mkdir -p /data/store
复制代码

查看NFS Server目录 
  1. showmount -e nfs-server-ip
复制代码

挂载
使用mount命令,此处表示将IP为:192.168.1.1所共享的/data/share目录,挂载到当前服务的 /data/store 目录下
  1. 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/fstab
  1. 192.168.1.1:/data/share /data/store nfs defaults,_netdev 0 0
复制代码
开机自动启动
  1. systemctl enable rpcbind.servicesystemctl enable nfs-server.service
复制代码

查看当前机器挂载点
  1. df -h
复制代码

卸载所挂载的文件目录:
  1. sudo umount /nfsdata/
复制代码




全部评论1
灰儿 发表于 2023-10-14 14:04:51 | 显示全部楼层
http://www.admin365.cn/thread-112522-1-1.html  NFS服务的权限和用户映射问题
回复

使用道具 举报

回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-23 05:21 , Processed in 0.170762 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team