最近,工作中遇到了一种情况,原有服务器的存储空间不足,无法满足现有系统的运行,因为一些原因,系统迁移和扩展内存方案不能实行,经排查现在占用内存较大的是系统中的文件存储功能,经调研,可以采用挂载远程共享目录的方式,将文件存储挂载到远程机器的目录,从而扩展了现有存储。
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.2
复制代码 NFSv2 现在已经很老了,没有理由启用它。
NFS 服务器配置在/etc/default/nfs-kernel-server和/etc/default/nfs-common文件中定义。对于大多数情况,默认设置就足够了。
创建nfs服务器共享目录
创建一个目录用于nfs服务器将文件共享给客户端,这个目录将会写入到nfs配置文件中:
修改nfs服务器配置文件
打开nfs服务器配置文件/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服务,配置文件就会生效
要查看当前活动的导出及其状态,请使用:
重启nfs服务器
执行下面两个命令其中一个可以重启nfs服务器:
- sudo service nfs-kernel-server restart
- 或者
- sudo /etc/init.d/nfs-kernel-server restart
复制代码
查看当前机器已经发布的NFS共享目录显示- Export list for localhost:
- /data/share 192.168.1.2
复制代码 此时共享机器A的配置已经完成,可直接在机器B进行目录的挂载操作
(二)NFS 客户端
安装NFS 客户端: - sudo apt update
- sudo apt install nfs-common
复制代码
安装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/fstab
- 192.168.1.1:/data/share /data/store nfs defaults,_netdev 0 0
复制代码
开机自动启动 - systemctl enable rpcbind.servicesystemctl enable nfs-server.service
复制代码
查看当前机器挂载点
卸载所挂载的文件目录:
|