如何将ConcurrentMap锁机制应用于NFS分片上传?
摘要:有关NFS的相关文件,推荐如下几个博客地址,大家可以参考 NFS共享文件系统(将文件目录挂载到别的机器上)_nfs挂载-CSDN博客 NFS数据共享(全面讲解使用教程) - AlexEvans - 博客园 什么是NFS 在 Linux 和其
有关NFS的相关文件,推荐如下几个博客地址,大家可以参考
NFS共享文件系统(将文件目录挂载到别的机器上)_nfs挂载-CSDN博客
NFS数据共享(全面讲解使用教程) - AlexEvans - 博客园
什么是NFS
在 Linux 和其他操作系统中,有一种叫做 NFS(网络文件系统)的工具,它允许跨网络共享文件系统资源。通过使用NFS,我们可以将多个客户端服务器的数据目录挂载到一个专门的数据服务器上,从而降低客户端服务器的负载,并提高它们的工作效率,同时集中管理数据可以带来其他好处,如数据备份和集中维护。
NFS(Network File System)是一种分布式文件系统协议,它允许计算机系统通过网络访问彼此的文件系统。NFS 是由 Sun Microsystems 在 1980 年代开发的,并且随着时间的推移,它已经成为了 Unix 和Linux 系统间共享文件的标准方法之一
本次场景应用
一台应用程序服务器,需要通过文件上传的功能将数据传输到另一台Centos7文件系统服务器上
安装NFS软件包
sudo apt install nfs-common # Debian/Ubuntu
sudo yum install nfs-utils rpcbind -y # CentOS/RHEL
sudo dnf install nfs-utils # Fedora
创建共享目录(挂载点)
sudo mkdir -p /path/to/shared_directory
sudo chmod -R 755 /path/to/shared_directory #让其他主机也可进行读写
编辑NFS配置文件
sudo vi /etc/exports
/path/to/shared_directory *(rw,sync,no_root_squash,no_subtree_check)
或者指定范围子网
sudo vi /etc/exports
/path/to/shared_directory 172.20.22.0/24(rw,sync,insecure,no_root_squash,anonuid=99,anongid=99)
rw:表示客户端可以以读写模式访问共享目录。
sync:表示所有文件系统操作都将同步执行,确保数据立即写入磁盘。
no_root_squash:表示远程的 root 用户将具有与本地 root 用户相同的权限。默认情况下,root 用户会被 "squash"(降低权限),通常是变成匿名用户nfsnobody。
no_subtree_check:表示 NFS 服务器不会检查共享目录的父目录权限,这可以提高性能,但可能降低安全性。
anonuid=UID和anongid=GID:可以指定匿名用户的 UID 和 GID。
共享示例
# 共享目录 /data/share1 给整个 192.168.1.0/24 网络,只读模式
/data/share1 192.168.1.0/24(ro,sync,secure)
# 共享目录 /data/share2 给特定客户端 192.168.1.100,读写模式,并禁用 root 用户映射
/data/share2 192.168.1.100(rw,sync,no_root_squash)
# 共享目录 /data/share3 给所有客户端,读写模式,异步写入
/data/share3 *(rw,async,no_subtree_check)
配置文件更改生效
sudo exportfs -ra
systemctl restart nfs-server
showmout使用,用于查询NFS服务器的共享目录
showmount -e <server>:显示服务器上的 NFS 共享目录。
showmount -a <server>:显示 NFS 服务器的客户端信息和共享目录。
防火墙配置
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --reload
接下来重点:如何通过应用服务器程序进行文件分片上传
一般传输文件是将整个文件进行传递,可以这样子理解:如果文件大小是200MB,则传输过程就是整个文件进行传递。若中间出现网络问题,那么传输失败。
