分布式文件系统(Distributed File System,简称DFS)是一种将物理存储资源通过网络连接到多个节点的文件管理方式。这些资源并不一定直接连接在本地设备上,而是分布在网络中的不同计算机中。
该系统为分布在各处的存储资源提供统一的逻辑视图,形成一个树状结构的虚拟文件系统,使用户能够像访问本地文件一样便捷地获取远程共享文件。用户在操作时无需感知文件实际存储的位置,只需打开对应的共享目录即可浏览和使用所有关联资源。
采用分布式文件系统的优势包括:集中化访问、简化操作流程、增强数据容灾能力以及提升读写性能。
常见的分布式文件系统有MFS(默认块大小为64MB)和HDFS(默认块大小为128MB)等。
MFS(全称MooseFS,意为“驯鹿文件系统”)是一个具有冗余与容错机制的分布式网络文件系统。它能将数据分散存储于多台物理服务器或独立磁盘/分区中,并确保每份数据拥有多个副本备份。对于客户端而言,整个集群表现为单一的存储资源。
MFS基于FUSE(用户空间文件系统)架构实现,因此支持任何兼容FUSE的操作系统平台。
主要优点:
存在的局限性:
| 端口 | 用途说明 |
|---|---|
| 9420 | MFS Master与Chunk Server之间的通信端口 |
| 9421 | MFS Master与Client之间的通信端口 |
| 9419 | MFS Master与MetaLogger之间的通信端口 |
| 9422 | Chunk Server与Client之间的数据传输端口 |
| 9425 | MFS Master Web监控页面监听端口,用于查看系统运行状态 |
本节介绍MFS的实际应用场景及部署前所需的软硬件环境准备情况。具体包括服务器规划、操作系统选择、网络配置、依赖库安装等内容,为后续的编译安装打下基础。
从源码构建MFS组件是推荐的部署方式之一,尤其适用于需要定制化配置的企业环境。安装过程通常包括下载官方源码包、安装依赖工具(如fuse-devel、gcc等)、解压、配置编译参数、执行make和make install命令。
各角色组件(Master、Chunk Server、Client、MetaLogger)可根据需求分别安装在不同主机上。
Master作为核心控制节点,其配置文件一般位于/etc/mfs/mfsmaster.cfg。需正确设置日志路径、监听IP、副本策略、元数据文件位置等关键参数。启动服务前应确保防火墙开放所需端口,并检查系统资源是否满足要求。
MetaLogger的作用是定期从Master拉取元数据变更日志并保存,以便在Master宕机时用于恢复。其配置文件为/etc/mfs/mfsmetalogger.cfg,重点配置项包括Master IP地址、日志存储路径及同步频率。
Chunk Server负责实际的数据存储任务。配置文件为/etc/mfs/mfschunkserver.cfg,需设定绑定IP、工作目录、磁盘挂载点以及访问权限等。同时要保证共享目录具备足够的读写权限,并启用FUSE模块支持。
客户端通过FUSE机制挂载MFS文件系统。安装mfs-client软件包后,使用mfsmount命令将远程MFS卷挂载至本地目录。例如:mfsmount /mnt/mfs -H mfsmaster。挂载成功后即可像操作本地文件一样进行读写。
管理员可通过mfssetgoal命令设置指定文件或目录的副本数量,例如设置为3个副本:mfssetgoal 3 /path/to/file。使用mfsgetgoal可查看当前副本策略,而mfsfileinfo可用于查看某文件的实际副本分布情况。
元数据日志记录了文件系统的所有结构变化,如创建、删除、重命名等操作。这些日志由Master生成并通过MetaLogger进行备份。定期检查日志完整性有助于快速恢复系统状态,尤其是在灾难恢复场景下至关重要。
当Master发生故障时,若已部署MetaLogger,则可以从最新的metadata changelog文件重建元数据。具体步骤包括停止原Master服务、利用mfs-metadata-backup工具恢复数据、重新启动mfsmaster进程。
注意:恢复期间集群处于只读状态,直到新Master完全就绪。
通过浏览器访问Master的9425端口(如http://master_ip:9425),可以进入MFS内置的Web监控界面。该页面展示各Chunk Server状态、存储使用率、连接数、I/O统计等实时信息,便于运维人员掌握系统健康状况。
日常维护工作包括添加/移除Chunk Server、调整副本策略、清理回收站文件、升级软件版本、监控网络延迟与磁盘健康状态等。建议制定定期巡检计划,及时发现潜在问题,保障系统稳定运行。
随着公司业务规模的不断扩展,原有的NFS图片服务器架构逐渐暴露出诸多问题:
在部署MFS前,需完成以下基础配置工作:
systemctl stop firewalld
setenforce 0
所有节点统一修改/etc/hosts文件,确保主机名可正确解析。
vim /etc/hosts
根据规划为每台服务器设定对应的主机名。
yum install gcc make libpcap-devel zlib-devel fuse fuse-devel fuse-libs pkgconfig
FUSE简介:用户空间文件系统(Filesystem in Userspace,简称FUSE)是一种在用户态实现的文件系统机制。Linux通过内核模块支持FUSE,通常2.6及以上版本的内核均已内置此功能。
所有节点均采用相同方式安装MFS程序。
为安全起见,创建无登录权限的mfs服务账户。
useradd -M -s /sbin/nologin moosefs
tar -zxvf moosefs-v3.0.115.tar.gz -C /usr/src/
cd /usr/src/moosefs-3.0.115/
./configure \
--prefix=/usr/local/moosefs \
--with-default-user=moosefs \
--with-default-group=moosefs \
--enable-mfsmount
先获取CPU核心数以优化编译速度:
grep processor /proc/cpuinfo | wc -l
nproc
make -j 2
make install -j 2
进入安装目录下的配置路径,将示例配置文件复制为正式配置文件。
cd /usr/local/moosefs/etc/mfs
cp mfsmaster.cfg.sample mfsmaster.cfg
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfsexports.cfg.sample mfsexports.cfg
cp mfstopology.cfg.sample mfstopology.cfg
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
cp mfsmount.cfg.sample mfsmount.cfg
cp mfshdd.cfg.sample mfshdd.cfg
首次安装后会生成空的metadata.mfs.empty文件,需重命名为metadata.mfs供master使用。
cd /usr/local/moosefs/var/mfs
mv metadata.mfs.empty metadata.mfs
cd /usr/local/moosefs/etc/mfs
vim mfsmaster.cfg
注意:该访问控制规则对旧版客户端可能不生效。
vim mfsexports.cfg
ln -s /usr/local/moosefs/sbin/mfsmaster /usr/local/sbin/
mfsmaster start
检查mfsmaster进程是否正常监听端口。
netstat -anpt | grep mfsmaster
vim /usr/local/moosefs/etc/mfs/mfsmetalogger.cfg
ln -s /usr/local/mfs/sbin/mfsmetalogger /usr/local/sbin/
mfsmetalogger start
netstat -anpt | grep mfs
vim /usr/local/moosefs/etc/mfs/mfschunkserver.cfg
加载fuse模块以支持文件系统挂载:
modprobe fuse
创建用于挂载MFS文件系统的目录:
mkdir /mnt/mfs
为客户端挂载命令创建软链接,便于全局调用:
ln -s /usr/local/moosefs/bin/mfsmount /usr/local/bin/
执行挂载操作,将MFS分布式文件系统挂载至本地/mnt/mfs目录,指定主服务器地址:
mfsmount /mnt/mfs/ -H mfsmaster
验证挂载结果,查看当前系统挂载的文件系统类型及使用情况:
df -Th
编辑MooseFS的磁盘配置文件,添加可用存储路径:
vim /usr/local/moosefs/etc/mfs/mfshdd.cfg
对新增硬盘进行分区操作,并创建挂载点:
fdisk /dev/sdx
mkdir /data
修改目录所属用户和组为moosefs,确保服务有读写权限:
chown -R moosefs:moosefs /data
完成磁盘挂载:
mount /dev/sdx /data
为ChunkServer服务程序创建系统级软链接,方便调用:
ln -s /usr/local/moosefs/sbin/mfschunkserver /usr/local/sbin/
启动ChunkServer服务:
mfschunkserver start
检查服务运行状态,确认MFS相关进程已正常监听端口:
netstat -anpt | grep mfs
在MooseFS中,副本的最大数量不能超过当前活跃的ChunkServer节点总数。当某个存储副本的节点失效时,系统会自动在其他节点上重建副本;若原节点恢复并重新接入集群,则多余副本会被自动清理。
查看指定文件的副本设置数量:
mfsgetgoal a.txt
设置文件a.txt的副本数为2:
mfssetgoal 2 a.txt
查看文件副本的详细分布信息:
mfsfileinfo a.txt
进入元数据日志存储目录:
cd /usr/local/moosefs/var/mfs
查看最新的变更日志内容:
cat changelog_ml.0.mfs
在Master服务器上也可查看同步的日志信息(通常由metalogger推送):
当Master服务器发生崩溃后,可通过MetaLogger服务器上的备份日志进行恢复。
首先,在MetaLogger服务器上将元数据备份文件复制到Master服务器:
cd /usr/local/moosefs/var/mfs
scp -rp ./* root@mfsmaster:/usr/local/moosefs/var/mfs/
随后,在Master服务器上启动主控服务:
mfsmaster start
检查Master服务是否成功启动并监听相应端口:
netstat -anpt | grep mfsmaster
在Master服务器上启动CGI监控服务,提供Web可视化界面:
/usr/local/moosefs/sbin/mfscgiserv
确认服务已在默认端口9425上运行:
netstat -anpt | grep 9425
通过浏览器访问以下地址查看集群状态:
http://192.168.1.100:9425
安全启动MFS集群的顺序如下:
mfsmastermfschunkserver服务mfsmetalogger服务mfsmount挂载文件系统安全停止MFS集群的步骤如下:
umount /mnt/mfsmfschunkserver stopmfsmetalogger stopmfsmaster stop
扫码加好友,拉您进群



收藏
