Linux 网络共享存储学习记录
source link: https://minsonlee.github.io/2022/03/learning-network-file-system
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Linux 网络共享存储学习记录
对于 Linux 系统来说,远程挂载就相当于“移动硬盘”,我们经常会用:NFS、rsync、SMB、sshfs 这些方式来进行网络文件共享(Docker 或 Vagrant 还有 unionfs 、 vboxfs 等挂载方式)。
这篇文章是为了汇总(逐渐记录)对这些网络共享存储方式的学习。
NFS 共享存储
NFS(Network File System-网络文件系统)主要功能是:通过 TCP/IP 方式,通过 RPC 服务调用让不同的主机系统之间可以共享文件或目录(企业集群架构中,还有更复杂的分布式文件系统:FastDFS,glusterfs,HDFS)。
NFS 挂载交互过程
- 用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
- NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端。
- NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
- nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
- Rpc.mount 进程判断客户端是否有对应的权限进行验证。
- idmap 进程实现用户映射和压缩
- 最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
nfs 安装与使用
# Ubuntu/Debian
apt show nfs-common # 检查是否已经安装
ll /usr/sbin/showmount # 检查是否已经安装
sudo apt-get install -y nfs-common # 安装 nfs clent(已经包含了 rpcbind 依赖)
sudo apt -y install nfs-kernel-server # 安装 nfs server(已经包含了 rpcbind 依赖)
# RedHat/CentOS
rpm -ql nfs-utils # 检查是否已经安装
ll /usr/sbin/showmount # 检查是否已经安装
sudo yum install -y nfs-utils # 安装 nfs client && nfs server
yum -y install rpcbind # 安装 rpc 服务依赖
配置及使用 nfs
- 服务端(nfs-server)的几个配置文件
/etc/idmapd.conf
-用户映射管理(该文件在 Client-Server 两端是一致,Domain
如果设置了,两端一定要一致)/etc/exports
-权限配置(配置客户端网段、操作权限…,服务端配置文件)/var/lib/nfs/etab
nfs 共享目录会记录在此,该文件自动生成,若不存在则/etc/exports
配置可能出错了
- 设置开机启动:
systemctl enable rpcbind nfs-server
- 启动服务:
systemctl start/restart rpcbind nfs-server
- 客户端挂载远程目录:
sudo mount -t nfs -o nfsvers=3,fsc <remote_addr>:<remote_path> <local_path>
- 卸载挂载:
sudo umount -f <local_path>
- https://www.server-world.info/en/note?os=Ubuntu_20.04&p=nfs&f=1
- https://www.server-world.info/en/note?os=Ubuntu_20.04&p=nfs&f=2
- https://docs.oracle.com/cd/E24847_01/html/E22299/rfsrefer-13.html
- https://mp.weixin.qq.com/s/XMY0-PMGiDwocgBhxIH1XA
- https://mp.weixin.qq.com/s/VSv9ohQT6XnwZ3w2govzvg
- 关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法
- Ubuntu - nfsv4 用户映射
SSHFS 远程挂载目录
Ubuntu 使用 sshfs 挂载共享
# Ubuntu 检查是否已经安装 sshfs
apt show sshfs
#Ubuntu 安装 sshfs
apt -y install sshfs
# 挂载:需要密码或密钥进行验证
sshfs node01.srv.world:/home/ubuntu/work ~/sshmnt
# 卸载
fusermount -u ~/sshmnt
# 或者
umount ~/sshmnt
CentOS 使用 sshfs 挂载共享
# 检查当前系统是否已经安装 sshfs
rpm -ql fuse-sshfs
# 安装 sshfs(需要安装 fuse-sshfs 包)
yum -y install fuse-sshfs
# 挂载:需要密码或密钥进行验证
sshfs node01.srv.world:/home/ubuntu/work ~/sshmnt
# 卸载
fusermount -u ~/sshmnt
# 或者
umount ~/sshmnt
SSHFS 的优缺点
- 优点 :相比于 NFS,sshfs 基于 SSH 方式实现远程文件夹的挂载,这种挂载的文件系统是 fuse 虚拟文件系统的一种实现,其更轻量简洁,使用也更加简单。
- 缺点:sshfs 只能挂载远程目录,像普通文件、块设备(如/dev/sda2)等无法挂载。
「NFS 比 sshfs 要完整的多,nfs 属于【小型】分布式文件系统,对数据的一致性、完整性实现的都比较完美,访问权限控制也比sshfs要丰富的多」
SSHFS 总结 && FAQ
sshfs 适合个人临时用来快速访问操作远程文件夹,对于协同操作方面,其功能丰富性上是不足的。
sshfs
取消挂载:fusermount: failed to unmount /mount/point: Device or resource busy
fusermount -zu /mount/point
sudo umount -l /mount/point
- https://www.server-world.info/en/note?os=Ubuntu_20.04&p=ssh&f=8
- https://www.junmajinlong.com/linux/sshfs/
- https://tianws.github.io/skill/2018/11/14/remote-filesystem/
Recommend
-
15
一、按系列罗列Linux的发行版,并描述不同版本之间的联系和区别 1、 RHEL ( RedHat Enterprise Linux ):红帽企业版 Linux , 红帽公司是全球最大的开...
-
7
[PODC'20] 分布共享存储一个下界的证明
-
5
多实例共享存储架构图本文 LB 不使用 Nginx,使用阿里SLB。 更多 Harbor 架构,请参考 聊聊Harbor架构 本文架构需要考虑三个...
-
2
被 google drive 恶心到了,竟然无法移除存储在共享云端硬盘中的文件 23 条回复 • 2021-10-30 14:46:03 +08:00
-
6
TL-TR761系列产品内置MicroSD卡槽,最大可支持
-
9
TL-TR761内置Micro SD卡槽,最大可支持32G卡扩充存储,具备网络存储共享功能,已经接入TL-TR761的无线设备可通过Wi-Fi共...
-
6
TL-TR961 5200L内置Micro SD卡槽,最大可支持32G卡扩充存储。电脑与路由...
-
6
TL-TR761系列产品内置Micro SD卡槽,最大可支持32G卡扩充存储,具备网络存储共...
-
8
TL-TR961 5200L内置Micro SD卡槽,最大可支持32G卡扩充存储,具备网络存储共享功能。已经接入...
-
5
Ubuntu 挂载网络共享存储详解 最近要在 Ubuntu 系统上挂载共享存储并进行一些备份和服务迁移, 没想到居然也还有一些坑, 于是记录如下。 安装 cifs-utils 工具 首先, cifs-utils 一...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK