mogilefs
mogilefs
介绍
MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的DangaInteractive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前使用MogileFS 的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片。
mogilefs
基本概念
mogilefs
组成架构
tracker节点
: tracker节点
是应用程序 mogilefsd
,通过数据库来保存元数据,提供API 响应客户端 storage节点
: storage节点
是应用程序 mogstored
,本质上是一个 WebDAV
服务,默认监听 7500
端口,接受客户端的文件存储请求 database
: 用于存储元数据的 mysql
数据库
mogilefs
数据存储相关概念
domain
: mogilefs
划分数据存储的容器,每一个 domain 中的数据的 key 不能重复,但是不同 domain 中数据的 key 可以重复;domain 的划分可以按照数据类型划分,也可以按照业务类型划分。host
: mogilefs
的每一个存储节点被称为一个 host
,每个 host
有自己的 IDdevice
: 每个存储节点可以挂靠多个 device
, 每个 device
对应一个时间存储数据的存储设备(硬盘),每个 device
有自己的IDclass
: 对于存储在mogilefs 上的文件进行分类,同一 domain
下的文件可以分类不同类型,但是key 不同重复,上传文件时,可指定 class
, 默认为 default
mogilefs
基本操作
mogadm
mogadm check
检查 mogilefs
集群状态
$mogadm check
Checking trackers...
127.0.0.1:7001 ... OK
Checking hosts...
[ 1] storage1 ... OK
Checking devices...
host device size(G) used(G) free(G) use% ob state I/O%
---- ------------ ---------- ---------- ---------- ------ ---------- -----
[ 1] dev1 374.702 29.018 345.684 7.74% writeable 0.0
---- ------------ ---------- ---------- ---------- ------
total: 374.702 29.018 345.684 7.74%
mogadm domain
mogilefs
集群 domain
管理
1 | mogadm domain add domain1 # 新增 domain |
mogadm host
mogilefs
集群 host
管理
1 | # 新增 host |
mogadm device
mogilefs
集群 device
管理
device
列出
1 | mogadm device list # 列出所有 host |
新增 device
下面的例子中新增 device
“1. 进入 /etc/mogilefs/mogstored.conf
文件中配置的 docroot
,例如 cd /home1/mogdata
- 如果待挂载的
device
(ID 命名为 dev2) 所在的硬盘和/home1
所在硬盘不一致(例如/home2
),需要在/home2
中新建目录/home2/mogdata/dev2
,并在/home1/mogdata
中创建软链
1 | mkdir -pv /home2/mogdata/dev2; |
device
状态修改
1 | # dev2 磁盘故障 |
device
列表状态查询
1 | mogadm --trackers=127.0.0.1:7001 device summary |
文件上传
1 | mogupload --trackers="127.0.0.1:7001" --domain=[${domain}] --key=[${key}] --file=[${file}] --class=[${class}] |
--domain
: 指定上传文件的 domain
--key
: 指定上传文件的 key
--file
: 指定上传文件的路径--class
: 指定上传文件的 class
,可选项,默认值为 default
文件下载
1 | mogfetch --trackers=host --domain=[${domain}] --key=[${key}] --file=[${file}] |
--domain
: 指定上传文件的 domain
--key
: 指定上传文件的 key
--file
: 指定下载文件的路径及名称
文件查看
1 | mogfileinfo --trackers="127.0.0.1:7001" --domain=[${domain}] --key=[${key}] |
--domain
: 指定上传文件的 domain
--key
: 指定上传文件的 key
输出结果:
- file: [$file]
class: default
devcount: 1
domain: [$domain]
fid: 30
key: [$key]
length: 608
- http://127.0.0.1:7500/dev1/0/000/000/0000000030.fid