MFS 特性:
1. Free(GPL)
2. 2. 通用文件系统,不需要修改上层应用就可以使用
3. 可以在线扩容,体系架构可伸缩性极强。#直接 chunkserver
4. 部署简单。
5. 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响
读或写的性能,只会加速!)
6. 可回收在指定时间内删除的文件( “ 回收站 ” 提供的是系统级别的服务,不怕误操作了,提供类似 oralce 的闪回等高级 dbms 的即时回滚特性!)
7. 提供 netapp,emc,ibm 等商业存储的 snapshot 特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)
8. google filesystem 的一个 c 实现。
9. 提供 web gui 监控接口。 #9425 端口
10. 提高随机读或写的效率。
11. 提高海量小文件的读写效率。
可能的瓶颈:
1. master 本 身 的 性 能 瓶 颈 。 mfs 系 统master 存 在 单 点 故 障 如 何 解决?moosefs+iscis+pacemaker 来保证 master 单点问题?不过在使用过程中不可能完全不关机和间歇性的网络中断! mfsmaster的高可用
2. 体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存 中 , 文 件 越 多 ,master 的 内 存 消 耗 越 大 ,8g 对 应 2500w 的 文 件 数 ,2 亿 文 件 就 得64GB 内存 )。
master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。
各种角色作用:
1. 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
2. 元 数 据 日 志 服 务 器 : 负 责 备 份 master 服 务 器 的 变 化 日 志 文 件 , 文 件 类 型 为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。
3. 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
4. 客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。
mfs的读写原理:
实验环境:rhel7.3
Server1 172.25.77.1 master 节点
Server2 172.25.77.2 存储节点
Server3 172.25.77.3 存储节点
真机 172.25.254.77 mfs 客户端
从mfschunkserver的配置文件可以看出,chunkserver可以去连接mfsmaster
NOTCE: 每个节点都要进行解析
Server1 安装 master 节点:
yum install 3.0.100/moosefs-cgi-3.0.100-1.rhsystemd.x86_64.rpm
3.0.100/moosefs-cgiserv-3.0.100-1.rhsystemd.x86_64.rpm
3.0.100/moosefs-master-3.0.100-1.rhsystemd.x86_64.rpm -y
Notice:
Moosefs-master #主要是控制 master 节点的。端口:9419-9421
Moosefs-cgiserv 和 moosefs-cgi #主要是分提供布式文件系统的图形管理界面
Server2 和 server3 安装存储节点:
yum install moosefs-chunkserver-3.0.100-1.rhsystemd.x86_64.rpm -y
真机安装客户端:
yum install moosefs-client-3.0.100-1.rhsystemd.x86_64.rpm -y
步骤:1.给 mfs-chunk 主机添加虚拟硬盘
2.给硬盘分区,并且初始化
fdisk /dev/vdb #硬盘分区
mkfs.xfs /dev/vdb1 #初始化文件系统
3.设置 chunk 位置,并且挂载初始化的硬盘
mkdir /mnt/chunk2
chown mfs.mfs chunk2/ 此文件夹要给 mfs 权限
vim /etc/mfs/mfshdd.cfg
35 /mnt/chunk2
vim /etc/fstab #开机自启动
/dev/vdb1 /mnt/chunk2 xfs defaults 0 0
mount -a
开启 moofs-chunk 服务
vim /etc/mfs/mfsmount.cfg 配置客户端挂载点
直接用 mfsmount 挂载:(只需要输入mfsmount命令即可)
mfsmount #直接会去查询配置文件,进行挂载。
会发现/mnt/mfs 出现两个目录:
查询 dir1 中文件属性:
这是我设置的,当导入文件到这个目录下时,去做一个 chunk 副本。
可以通过
mkdir /mnt/mfsmeta/
mfsmount -m /mnt/mfsmeta/ #进行挂载,-m 对 meta 的描述