文章目录
案例概述
公司之前的图片服务器采用的是 NFS, 随着业务量增加, 多台服务器通过 NFS 方式共享一个服务器的存储空间, 使得 NFS 服务器不堪重负, 经常出现超时问题。 而且 NFS 存在着单点故障问题, 尽管可以用 rsync 同步数据到另外一台服务器上做 NFS 服务的备份, 但这对提高整个系统的性能毫无帮助。 基于这样一种需求, 我们需要对 NFS 服务器进行优化或采取别的解决方案, 然而优化并不能应对日益增多的客户端的性能要求, 因此选择的解决方案是采用分布式文件系统。 采用分布式文件系统后, 服务器之间的数据访问不再是一对多的关系,而是多对多的关系, 这样可以使性能得到大幅提升。
在当前多种常用的分布式文件系统中, 我们采用MFS(MooseFS)。 MFS 正式推出是在2008 年 5 月, 是一个具有容错功能的、 高可用、 可扩展的海量级分布式文件系统。 MFS 把数据分散在多台服务器上, 但用户看到的只是一个源。 MFS 也像其他类 UNIX 文件系统一样,包含了层级结构、 文件属性, 可以创建特殊的文件(块设备、 字符设备、 管道、 套接字)、符号链接和硬链接。
一、分布式简介
分布式文件系统(Distributed File System) 是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。简单来说就是把一些分散的(分布在局域网内各个计算机上) 共享文件夹, 集合到一个文件夹内(虚拟共享文件夹)。 对于用户来说, 要访问这些共享文件夹时, 只要打开这个虚拟共享文件夹, 就可以看到所有链接
到虚拟共享文件夹内的共享文件夹, 用户感觉不到这些共享文件是分散于各个计算机上的。
1、分布式文件系统的优势
- 集中访问
- 简化操作
- 数据容灾
- 提高文件存取性能
2、MFS原理
MFS 是一个具有容错性的网络分布式文件系统, 它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MFS文件系统组成架构图:
1)MFS文件系统的组成
①元数据服务器(Master)
- 在整个体系中负责管理文件系统, 维护元数据
②元数据日志服务器(MetaLogger)
- 备份 Master 服务器的变化日志文件, 文件类型为 changelog_ml.*.mfs。 当 Master 服务器数据丢失或者损坏,可以从日志服务器中取得文件恢复
③数据存储服务器(Chunk Server)
- 真正存储数据的服务器。 存储文件时, 会把文件分块保存, 并在数据服务器之间复制, 数据服务器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。
④客户端(Client)
- 可以像挂载 NFS 一样挂载 MFS 文件系统, 其操作是相同的。
2)MFS 处理过程
-
MFS 读取数据的处理过程
① 客户端向元数据服务器发出读请求。
② 元数据服务器把所需数据存放的位置(Chunk Server 的 IP 地址和 Chunk 编号) 告知客户端。
③ 客户端向已知的 Chunk Server 请求发送数据。
④ Chunk Server 向客户端发送数据。 -
MFS 写入数据的处理过程
① 客户端向元数据服务器发送写入请求。
② 元数据服务器与 Chunk Server 进行交互(只有当所需的分块 Chunks 存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块 Chunks,创建成功后由Servers 告知元数据服务器操作成功
③ 元数据服务器告知客户端, 可以在哪个 Chunk Server 的哪些 Chunks 写入数据。
④ 客户端向指定的 Chunk Server 写入数据
⑤ 该 Chunk Server 与其他 Chunk Server 进行数据同步, 同步成功后 Chunk Server 告知客户端数据写入成功。
⑥ 客户端告知元数据服务器本次写入完毕。
3、NFS与MFS
多台Web服务器通过NFS共享一个存储
1)业务功能上满足需求
2)在性能与容量上无法胜任更高的要求
3)NFS服务器不堪重负,出现超时问题
4)NFS存在着单点故障问题
解决方案
1)采用分布式文件系统
2)服务器之间的数据访问不再是一对多的关系,而是多对多的关系
3)可以使性能得到大幅提升
二、案例部署
主机 | 操作系统 | IP 地址 | 主要软件 |
---|---|---|---|
Master Server | CentOS 7.6 | 192.168.100.41 | moosefs-3.0.100-1.tar.gz |
MetaLogger Server | CentOS 7.6 | 192.168.100.42 | moosefs-3.0.100-1.tar.gz |
Chunk Server1 | CentOS 7.6 | 192.168.100.43 | moosefs-3.0.100-1.tar.gz |
Chunk Server2 | CentOS 7.6 | 192.168.100 |