服务器(linux)磁盘挂载nfs

简介: 笔者项目中此前有这么个需求,需要支持文件进行预览,文件的存储位置都在后端服务器上,想要支持预览是比较困难的(若是在前端服务器上则比较方便),因为无法做到跨服务器之间的静态文件预览,然后解决这个问题的思路就设定在了将后端服务器的文件所在位置挂载到前端服务器上,然后再使用nginx的反向代理,将文件地址代理出去,这样就可以实现文件预览功能了。方案确定以后就是技术选型了,最后确定使用了nfs来解决服务器之间的磁盘挂载,当然不止nfs可以实现,其他也可以。这里对nfs的使用做一次总结。

一、需求背景



笔者项目中此前有这么个需求,需要支持文件进行预览,文件的存储位置都在后端服务器上,想要支持预览是比较困难的(若是在前端服务器上则比较方便),因为无法做到跨服务器之间的静态文件预览,然后解决这个问题的思路就设定在了将后端服务器的文件所在位置挂载到前端服务器上,然后再使用nginx的反向代理,将文件地址代理出去,这样就可以实现文件预览功能了。方案确定以后就是技术选型了,最后确定使用了nfs来解决服务器之间的磁盘挂载,当然不止nfs可以实现,其他也可以。这里对nfs的使用做一次总结。


二、使用nfs实现多服务器之间磁盘挂载



1.nfs安装


# ubuntu 安装nfs
sudo apt-get install -y nfs-kernel-server
# centos 安装nfs
sudo yum install nfs-utils rpcbind


2.nfs使用


nfs使用不难,只需要很少量的配置即可,下面来展示下这个配置


2.1服务端配置


服务端负责把文件共享出去,我们相当于把某个文件夹暴露给某个ip或者暴露在公网环境下。


# 先安装nfs
# 编辑服务端配置文件
vim /etc/exports
# 添加共享信息:将本地的/data目录共享给192.168.150.166,并让该ip拥有对该目录的rw权限
/data 192.168.150.166(rw)
# 重启nfs
systemctl restart  nfs-server.service
# rpc如果没有启动的话,这里启动下就行,启动过则无需重启
systemctl start rpcbind.service
# 重载 /etc/exports
exportfs -rv


2.2客户端配置


客户端负责将本地的某个文件夹与服务端建立连接,这样就可以在本地操作远端服务器目录了。

# 先安装nfs
# 启动nfs
systemctl restart  nfs-server.service
systemctl restart rpcbind.service
# 与服务端建立连接:将本地的mnt挂载到 192.168.150.167:/data 目录下
mount  -t nfs 192.168.150.167:/data /mnt
# 查看挂载是否成功,挂载成功的话会能看到成功挂载的信息
df -h
# 客户端取消挂载:将本地的mnt挂载进行取消
umount /mnt


一个服务端是可以同时被n个客户端进行挂载的,所以服务端与客户端其实是1对n的关系。


3.nfs介绍


上面说了是啥,这里介绍下他的原理。原理都是网络上搜的,作为了解。


3.1nfs是什么


NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源


NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。

nfs端口:2049

RPC端口:111


704c5507df174eb08a22e967db84c7e6.png


3.2nfs特点


采用TCP/IP传输网络文件

安全性低

简单易操作

适合局域网环境


3.3共享时权限选项


常用的赋予权限类型,如下命令:

# 将本地的/data目录共享给192.168.150.166,该ip对于该目录及文件具有括号内的这些权限
/data 192.168.150.166(rw,sync,no_subtree_check,no_root_squash)


下面是权限的所有可选项:

ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID


3.4其他常用命令


# 服务端命令,查看服务端共享出去的文件信息
exportfs -v 
# 服务端命令,重新加载配置文件,通常这么使用:exportfs -rv
exportfs -r


三、实践中碰到的问题



1.挂载时报错:mount.nfs: Stale file handle


这个报错笔者这里是因为之前客户端挂载过别的服务器,但是服务端直接将挂载取消了,这里再从客户端进行别的挂载就报了这个错误,只需要执行以下命令即可解决该问题

# /mnt是之前挂载的目录
umount -lf /mnt


2.共享时报错:exportfs: does not support NFS export


解决办法:查看文件类型:cat /etc/fstab,若文件类型不是ext4则无法正常共享,若本来就是挂载的文件夹也是无法共享的。

相关文章
|
5月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
7月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
1397 21
|
6月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
684 13
|
6月前
|
Oracle 安全 数据挖掘
服务器数据恢复—RAID硬盘离线导致卷无法挂载的数据恢复案例
服务器数据恢复环境&故障: 某公司一台服务器上有一组由24块FC硬盘组建的raid。 服务器出现故障,无法正常工作。 经过初步检测,管理员发现导致服务器故障的原因是raid中有两块硬盘掉线,导致卷无法挂载。
|
6月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
2373 0
|
6月前
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
699 0
|
7月前
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
317 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
488 0
|
Ubuntu 网络协议 Unix
【Linux】新唐NUC977挂载NFS实现网络文件传输
【Linux】新唐NUC977挂载NFS实现网络文件传输
265 0
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
1119 0