MogileFS简介
MogileFS是什么
MogileFS是一款开源的、高性能的、分布式的文件系统,用于组建分布式文件集群,跟Memcached是同门,都由LiveJournal旗下Danga Interactive公司开发。
MogileFS能干什么
最主要的功能就是:用来存取海量文件,而不用关心具体的文件存放位置、存储容量大小,以及文件损坏和丢失等问题。
MogileFS特点
- 应用层:不需要特殊的核心组件。
- 无单点失败:MogileFS分布式文件存储系统安装的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个机器上,因此没有单点失败。
- 自动进行文件复制:基于不同的文件“分类”,文件可以被自动的复制到多个有足够存储空间的存储节点上,这样可以满足这个“类别”的最少复制要求。
- 比RAID更好: 在一个非存储区域网络的RAID中,磁盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 MogileFS分布式文件存储系统在不同的机器之间进行文件复制,因此文件始终是可用的。
- 传输中立,无特殊协议。
- 简单的命名空间:文件通过一个给定的key来确定,是一个全局的命名空间。
MogileFS的组成
Trackers(跟踪器 ,调度器)——mogilefsd进程
这是MogileFS的核心部分,mogilefsd进程就是trackers程序,做了很多工作,包括复制、删除、查询、监控等等。
1)mogilefsd主要的子进程有:
Replication — 在机器间复制文件。
Deletion — 从命名空间删除是立即的,从文件系统删除是异步的。
Query — 响应客户端的请求。
Reaper — 在磁盘失败后将文件复制请求重新放到队列中。
Monitor — 监测主机和设备的健康度和状态。
2)采用基于事件的父进程或消息总线来管理所有来之于客户端应用的交互,包括将请求负载平衡到“query workers”中,让mogilefsd的子进程去处理。
3)其默认的配置文件在/etc/mogilefs/mogilefsd.conf,可以自己指定。
数据库(MySQL)
数据库用来存放MogileFS的元数据 (命名空间, 和文件在哪里),由Trackers来操作和管理它,可以用mogdbsetup程序来初始化数据库。因为数据库保存了MogileFS的所有元数据,如果这儿出问题了,那么整个MogileFS将处于不可用状态,因此最好是HA结构。
存储节点(Storage Nodes )——mogstored进程
就是实际文件存放的地方,可通过配置来指定、加入和从集群中去掉。其默认配置文件: /etc/mogilefs/mogstored.conf
MogileFS的适用性
由于MogileFS不支持对一个文件的随机读写,因此注定了只适合做一部分应用。比如图片服务,静态HTML服务。即文件写入后基本上不需要修改的应用,当然你也可以生成一个新的文件覆盖上去。