一、理论知识
MogileFS 是一个开源的分布式文件系统,用于组建分布式文件集群。
1. 几个组成部分
(1) Tracker(跟踪器 ,调度器)- (MogileFSd 进程-建议二个 tracker 实例)
Tracker的进程: MogileFSd
Tracker的工作:Replication ,Deletion,Query,Reaper,Monitor
Tracker的配置文件:/etc/mogilefs/mogilefsd.conf
(2) 数据库(MySQL)部分
存放MogileFS的元数据(命名空间和文件存放位置)。
(3) 存储节点(Storage Nodes )
实际文件存放的地方
存储节点是一个HTTP服务器,用来做删除,存放,重命名等事情
mogstored进程
mogstored的配置文件: /etc/mogilefs/mogstored.conf
(4) 管理工具
主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。
(5) Client
Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。
2. 二个服务进程
(1) mogilefsd — MogileFS 的主守护进程:
就是上面指的 trackers(跟踪器 ),由 /etc/MogileFS/MogileFSd.conf 这个配置文件控制, 查询和主控制机器需要这个.
(2) mogstored — MogileFS 存储守护进程
这个就是上面指的存储节点(Storage Nodes ),由 /etc/MogileFS/mogstored.conf 这个配置文件控制. 每个存储数据的节点都是需要启动.
3. 数据存储结构
(1) domain:域,在一个域下key是唯一的。
(2) class:包含在domain中,可以针对每一个class定义保存的份数。
(3) key:对文件的唯一标识。
(4) file:文件。
图示如下:
4. 工作原理
客户端.连接到一个域,然后在域中拿着文件的 key 来查文件的位置,然后通过查到集群中的位置来打开这个文件.
图示如下:
二、安装配置
1. 安装MogileFS的Perl模块
cpanm MogileFS::Server
cpanm MogileFS::Utils
cpanm MogileFS::Client
cpanm IO::AIO # 建议安装,会性能好些
2. 设置MogileFS的Tracker调度器与元信息存储数据库
(1) 元信息存储数据库用mysql, 以下为安装mysql数据库
yum install mysql mysql-server mysql-devel
(2) 建MogileFS用的数据库和授权
CREATE DATABASE MogileFS DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
grant all on MogileFS.* to 'mogile'@'%' identified by 'mogile';
UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='mogile';
FLUSH PRIVILEGES;
quit
(3) 初始化数据库
mogdbsetup --dbhost=mogiledb.yourdomain.com --dbname=MogileFS --dbuser=mogile --dbpass=mogilepw
(4) 编辑 /etc/mogilefs/mogilefsd.conf
# Database connection information
db_dsn = DBI:mysql:MogileFS:host=mogiledb.yourdomain.com
db_user = mogile
db_pass = mogilepw
# IP:PORT to listen on for MogileFS client requests
listen = 127.0.0.1:7001
# Optional, if you don't define the port above.
conf_port = 7001
# Number of query workers to start by default.
query_jobs = 10
# Number of delete workers to start by default.
delete_jobs = 1
# Number of replicate workers to start by default.
replicate_jobs = 5
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1
(5) 添加mogile用户 ,并使用mogile用户启动tracker node
#mogilefsd 不能用 root 用户启动
$ adduser mogile
$ su - mogile
$ mogilefsd -c /etc/mogilefs/mogilefsd.conf --daemon
(6) 查看mogilefsd进程
ps -ef | grep mogilefsd
3. 设置MogileFS的存储节点
(1) 编辑/etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot=/var/mogdata
#数据存在什么根路径是由docroot=/var/mogdata 来设置的
(2) 启动store node
mogstored --daemon
4. 设置MogileFS管理工具的接口
#vim /etc/mogilefs/mogilefs.conf
trackers = <trackers_ip>:7001
三、管理操作
#注意,下面的命令中,如果没有配置照我前面 “设置 MogileFS 中的管理工具的接口” 来配置管理接口的地址的话,都要加一个 –trackers=<tracker_ip>:7001 才能正常.
1. MogileFS 中的存储主机(节点)管理
(1) 增加存储节点
mogadm host add <storage_node_name> --ip=127.0.0.1 --port=7500 --status=alive
(2) 显示节点列表
mogadm host list
(3) 修改节点信息
mogadm host modify storage_node_name --ip=123.xxx.xxx.70 --status=alive
2. MogileFS 中的存储设备管理
(1) 增加设置
mogadm device add <storage_node_name> ID
(2) 显示设备列表
mogadm device list
(3) 标记设备失效
mogadm device mark <storage_node_name> ID dead
3. MogileFS 中域,类的管理
(1) 增加域
mogadm domain add <domain_name>
(2) 显示域列表
mogadm domain list
(3) 增加类,并指定最小保存份数
mogadm class add <domain_name> <class_name> --mindevcount=3
(4) 显示类列表
mogadm class list
(5) 系统检查
mogadm check
4. MogileFS 中文件管理
(1) 上传文件
mogupload --domain=foo --key=<key_name> --file=<file_path>
(2) 查询文件
mogfileinfo --trackers=host --domain=<domain_name> --key=<key_name>
(3) 检查文件状态
mogfiledebug --domain=he.yinyuetai.com --key=crossdomain
(4) 删除文件
mogdelete --domain=<domain_name> --key=<key_name>
(5) 列出所有的文件key
moglistkeys --domain=<domain_name> --key_prefix=<key_name>
(6) 列出指定 fid 的文件
moglistfids --fromfid=<file_id> --count=<数量>