当前位置:首页 >> 农林牧渔 >>

安装使用


MogileFS 安装使用
Sky

本文档内容来自互联网、同事分享、个人经验。 同系列文档有: Ashley Sun 服务器(基于 Solaris+10)日常应用基本处理实例篇.pdf Ashley nginx+resin+Memcached 简单入门.pdf

MogileFS 介绍....................

......................................................... 4 MogileFS 特点........................................................................ 5 MogileFS 实例架构图........................................................... 6 MogileFS 安装............................................................................. 6 MogileFS 配置文件................................................................8 MogileFS DB 安装及配置......................................................9

MogileFS DB 表结构............................................................ 9

MogileFS 介绍
MogileFS是一种分布式文件存储系统。 可支持文件自动备份的功能, 提供高可用性和高 可扩展性。Mogilefs不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用, 如图片服务,静态HTML服务等,这些应用在文件写入后基本上不需要对文件进行修改,但是 可以生成一个新的文件覆盖原有文件。 Mogilefs分为如下几部分: 1、数据库部分 数据库保存了Mogilefs的所有元数据,一般使用MySQL,可以单独拿数据库服务器来做,也 可以跟其他程序跑在一起。 可以用 mogdbsetup程序来初始化数据库。 数据库部分非常重要, 因为一个MogileFS系统的所有Tracker都必须指向同一个数据库, 因此如果数据库出现问题, 那么整个MogileFS系统将处于不可用状态,因此数据库最好采用HA结构,如MySQL主从复制 架构,这样可以降低数据库出现问题对 MogileFS系统的影响。 2、跟踪器(Tracker) mogilefsd即trackers程序,类似mogilefs的wiki上介绍,trackers做了很多工作,主要有 以下几个: * * * * * Replication: 机器间复制文件 Deletion:从命名空间删除是立即的,从文件系统删除是异步的 QueryWorker: 响应客户端的请求 Reaper:在磁盘失败后将文件复制请求重新放到队列中 Monitor:监测主机和设配的健康度和状态

Tracker是访问MogileFS的入口,所有系统管理相关的操作都要通过其中的某个trackers完 成, 应用系统的一些操作也要通过trackers, 因此一个高业务量的MogileFS系统最好同时运 行多个trackers来做负载均衡。 3、存储节点(Storage) mogstored程序的启动将使本机成为一个存储节点。mogstored启动后,便可以通过mogadm

增加这台机器到系统中。 一台机器可以只运行一个 mogstored作为存储节点即可, 也可以同 时运行其他程序。存储节点下面还需要定义设备(device) ,每个设备都有一个唯一的ID编 号,设备也是用mogadm添加到MogileFS系统中的。 4、工具 主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看 状态等等。 5、客户端(Client) 客户端通过接口访问mogilefs系统,对整个系统进行文件读写操作。 (http://www.admindigest.com/4/mogilefs%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7% BD%AE/#mogilefs%E4%BB%8B%E7%BB%8D)

MogileFS 特点
* 应用层——不需要特殊的核心组件 * 无单点失败——MogileFS安装的三个组件(存储节点、跟踪器、跟踪用的数据库) , 均可运行在多个机器上,因此没有单点失败。 (你也可以将跟踪器和存储节点运行在同一台 机器上, 这样你就没有必要用4台机器) 推荐至少两台机器。 (没有单点失败本人持保留意见) * 自动的文件复制——基于不同的文件“分类”, 文件可以被自动的复制到多个有足够 存储空间的存储节点上, 这样可以满足这个“类别”的最少复制要求。 比如你有一个图片网 站,你可以设置原始的JPEG图片需要复制 至少三份,但实际只有1or2份拷贝,如果丢失了 数据,那么Mogile可以重新建立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节约 磁盘,否则你将存储同样的拷贝多份,完全没有必要。 * “比RAID好多了”——在一个非存储区域网络的RAID(non-SAN RAID)的建立中, 磁 盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 MogileFS在不 同的机器之间进行文件复制,因此文件始终是可用的。 * 传输中立,无特殊协议——MogileFS客户端可以通过NFS或HTTP来和MogileFS的存储 节点来通信,但首先需要告知跟踪器一下。 * 简单的命名空间——文件通过一个给定的key来确定,是一个全局的命名空间。你可 以自己生成多个命名空间,只要你愿意,不过这样可能在同一MogileFS中会造成key冲突。 * 不用共享任何东西——MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维 护好自己的磁盘。 * 不需要RAID——在MogileFS中的磁盘可以是做了RAID的也可以是没有, 如果是为了安 全性着想的话RAID没有必要买了,因为 MogileFS已经提供了。 * 不会碰到文件系统本身的不可知情况——在MogileFS中的存储节点的磁盘可以被格 式化成多种格式(ext3,reiserFS等等) MogilesFS会做自己内部目录的哈希,所以它不会 。 碰到文件系统本身的一些限制,比如一个目录中的最大文件数。你可以放心的使用。 * mogileFS 适合于静态存储,就是那种一次保存,多次读取型的资源,比如以html方 式静态化处理的动态文件,图片文件,其他只提供下载的文件等。 (http://blog.csdn.net/starxu85/archive/2008/12/04/3447301.aspx)

Mogilefs 的网站地址(http://www.danga.com/mogilefs)

MogileFS 实例架构图
两台服务器 10.0.0.122 和 10.0.0.130, 分别安装 Tracker, Storage。 服务器 10.0.0.122 安装 MySQL 主数据库, 服务器 10.0.0.130 安装 MySQL 从数据库。 两台服务器上的 Tracker 都 使用 10.0.0.122 的 MySQL 主数据库进行数据插入、更新和查询,同时可以使用 10.0.0.130 的 MySQL 从数据库进行数据的查询。

MogileFS 安装
( 详 细 的 安 装 可 以 参 http://www.admindigest.com/4/mogilef) 考 : http://code.google.com/p/mogilefs/ ;

简单化安装可以下载 MFS.tgz,内部封装好的安装包。 1.mkdir /data/mogilefs && cd /data/mogilefs && tar -zxvf MFS.tgz 2../install_all.sh 3../install_core.sh (顺序不能乱)

install_all.sh ------------------------------------------------------------------------------------------------------------tar xvf mogconf.tar mkdir /etc/mogilefs cp mogilefs/mogilefs.conf /etc/mogilefs/ cp mogilefs/mogilefsd.conf /etc/mogilefs/ cp mogilefs/mogtool.conf /etc/mogilefs/ cp mogilefs/mogstored.conf /etc/mogilefs/ echo "########### DONE Create Config file ##########" echo #installation starts here #It will search for install.sh in each sub- folder and starts installation for each for i in `find . -type f |grep install.sh`; do echo "################## "$i" #########################" name=`echo $i |grep install.sh | awk -F"/" '{print $(NF-1)}'` cd `echo $PWD\/$name` sh install.sh cd .. echo "################## DONE ######################" echo done

install_core.sh -------------------------------------------------------------------------------------------------------------

for i in `find . -type f |grep install_core_mfs.sh`; do echo "################## "$i" #####################"

name=`echo $i |grep install_core_mfs.sh | awk -F"/" '{print $(NF-1)}'` cd `echo $PWD\/$name` sh install_core_mfs.sh cd .. echo "################## DONE ############################" echo " " done

install_all 中安装的包有(可参考原网站的安装方法) : ./Perlbal-1.73/install.sh ./Gearman-Client-Async-0.93/install.sh ./Sys-Syscall-0.22/install.sh ./MogileFS-Client-1.09/install.sh ./BSD-Resource-1.2903/install.sh ./IO-stringy-2.110/install.sh ./MogileFS-Client-FilePaths-0.02/install.sh ./Gearman-Server-1.08/install.sh ./ExtUtils-MakeMaker-6.55_02/install.sh ./common-sense-2.02/install.sh ./Gearman-1.07/install.sh ./DBD-mysql-4.013/install.sh ./Net-Netmask-1.9015/install.sh ./IO-AIO-3.261/install.sh ./Danga-Socket-1.56/install.sh

install_core 中安装的包有(可参考原网站的安装方法) : ./DBI-1.609/install_core_mfs.sh ./MogileFS-Utils-2.12/install_core_mfs.sh ./mogilefs-server-2.36/install_core_mfs.sh

MogileFS 配置文件
mogilefs.conf mogilefsd.conf mogtool.conf mogstored.conf mogilefs.conf : 配置 tracker 的 ip 和端口。 eg: trackers = 192.168.10.171:6001, 192.168.10.172:6001 mogilefsd.comf: 配置 MogileFS 的 db 相应信息。 eg: db_dsn = DBI:mysql:mogilefs:192.168.10.172

db_user = mogile db_pass = pconline listen = 0.0.0.0:6001 conf_port = 6001 ( 也可以: db_dsn= DBI:mysql:mogilefs:host=192.168.10.172;port=3306;mysql_connect_timeout=5 ) listener_jobs = 50 delete_jobs = 1 replicate_jobs = 5 reaper_jobs = 1 min_free_space = 100 #max_disk_age = 5 #node_timeout = 2 #old_repl_compat = 1 #default_mindevcount = 2 mogilefsd 不会以 root 身份运行, 所以在 mysql 数据库中要创建一个非 root 的用户给 MogileFS 使用。 mogstored.conf:配置 storage 的信息。 maxconns = 10000 最大连接数 httplisten = 0.0.0.0:7500 监听端口 mgmtlisten = 0.0.0.0:7501 管理端口 docroot = /data/mogdata 数据目录

MogileFS

DB 安装及配置

MogileFS DB 表结构
MogileFS 数据库使用 Innodb 数据引擎 以下是所有表: +----------------------+ | Tables_in_mogilefs | +----------------------+ | class | | device |

| domain | | file | | file_on | | file_on_corrupt | | file_to_delete | | file_to_delete2 | | file_to_delete_later | | file_to_queue | | file_to_replicate | | fsck_log | | host | | server_settings | | tempfile | | unreachable_fids | +----------------------+

domain(域) :用于记录域信息 +-----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------------------+------+-----+---------+-------+ | dmid | smallint(5) unsigned | NO | PRI | NULL | | | namespace | varchar(255) | YES | UNI | NULL | | +-----------+----------------------+------+-----+---------+-------+

class(类) :用于记录各域中的类信息,对每个类可定义不同的备份策略 +-------------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------------------+------+-----+---------+-------+ | dmid | smallint(5) unsigned | NO | PRI | NULL | | | classid | tinyint(3) unsigned | NO | PRI | NULL | | | classname | varchar(50) | YES | | NULL | | | mindevcount | tinyint(3) unsigned | NO | | NULL | | | replpolicy | varchar(255) | YES | | NULL | | +-------------+----------------------+------+-----+---------+-------+

host(存储节点) :用于记录各存储节点状态和访问的 ip 和端口等 +---------------+-----------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+-----------------------------+------+-----+---------+-------+ | hostid | mediumint(8) unsigned | NO | PRI | NULL | |

| status | enum('alive','dead','down') | YES | | NULL | | | http_port | mediumint(8) unsigned | YES | | 7500 | | | http_get_port | mediumint(8) unsigned | YES | | NULL | | | hostname | varchar(40) | YES | UNI | NULL | | | hostip | varchar(15) | YES | UNI | NULL | | | altip | varchar(15) | YES | UNI | NULL | | | altmask | varchar(18) | YES | | NULL | | +---------------+-----------------------------+------+-----+---------+-------+

device(设备块) :用于记录各 Host 中的设备块信息,如总共多大,使用了多少空间,当 前设备状态等 +----------+------------------------------------------------+------+-----+--------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------------------------------------+------+-----+--------+-------+ | devid | mediumint(8) unsigned | NO | PRI | NULL | | | hostid | mediumint(8) unsigned | NO | | NULL | | | status | enum('alive','dead','down','readonly','drain') | YES | MUL | NULL | | | weight | mediumint(9) | YES | | 100 | | | mb_total | mediumint(8) unsigned | YES | | NULL | | | mb_used | mediumint(8) unsigned | YES | | NULL | | | mb_asof | int(10) unsigned | YES | | NULL | | +----------+------------------------------------------------+------+-----+--------+-------+

server_settings(服务器设置) :服务器的一些配置信息,主要用于记录 MogileFS 系统执 行 fsck 的相关记录,fsck 操作会根据当前 mogileFS 的备份策略进行文件的备份检查 +--------------------------+----------+ | field | value | +--------------------------+----------+ | fsck_fids_checked | 0 | | fsck_fid_at_end | 23972852 |

| fsck_highest_fid_checked | 0 | | fsck_logid_processed | 6244097 | | fsck_start_fid | 1121081 | | fsck_start_maxlogid | 6244097 | | internal_queue_limit | 500 | | queue_rate_for_fsck | 2000 | | queue_size_for_fsck | 20000 | | schema_version | 12 | +--------------------------+----------+

fsck_log(fsck 日志记录) :mogileFS 执行 fsck 时的具体操作记录(具体对某个 fid 文件 进行的操作) +--------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-----------------------+------+-----+---------+----------------+ | logid | int(10) unsigned | NO | PRI | NULL | auto_increment | | utime | int(10) unsigned | NO | MUL | NULL | | | fid | int(10) unsigned | YES | | NULL | | | evcode | char(4) | YES | | NULL | | | devid | mediumint(8) unsigned | YES | | NULL | | +--------+-----------------------+------+-----+---------+----------------+

unreachable_fids(不可达的 fid) :不可到达的文件列表 +------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | lastupdate | int(10) unsigned | NO | MUL | NULL | | +------------+------------------+------+-----+---------+-------+

tempfile(不可达的 fid) :复制的临时文件信息 +------------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+----------------------+------+-----+---------+----------------+ | fid | int(10) unsigned | NO | PRI | NULL | auto_increment | | createtime | int(10) unsigned | NO | | NULL | | | classid | tinyint(3) unsigned | NO | | NULL | | | dmid | smallint(5) unsigned | NO | | NULL | | | dkey | varchar(255) | YES | | NULL | | | devids | varchar(60) | YES | | NULL | | +------------+----------------------+------+-----+---------+----------------+

file(文件基本信息) :记录文件的基本信息,属于哪个域,哪个类,fid 对应的 dkey、文 件大小以及记录该文件的复制份数是多少 +----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | dmid | smallint(5) unsigned | NO | MUL | NULL | | | dkey | varchar(255) | YES | | NULL | | | length | bigint(20) unsigned | YES | | NULL | | | classid | tinyint(3) unsigned | NO | | NULL | | | devcount | tinyint(3) unsigned | NO | | NULL | | +----------+----------------------+------+-----+---------+-------+

file_on(文件所在设备) :记录每个 fid 文件在什么设备上,一个 fid 文件同时存储在多 个设备上,则各有一条记录 +-------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | devid | mediumint(8) unsigned | NO | PRI | NULL | | +-------+-----------------------+------+-----+---------+-------+

file_on_corrupt(损坏的文件) :记录哪一个文件在哪个设备上损坏了 +-------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | devid | mediumint(8) unsigned | NO | PRI | NULL | | +-------+-----------------------+------+-----+---------+-------+

file_to_delete(要删除的文件) :记录哪些文件需要删除 +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | +-------+------------------+------+-----+---------+-------+

file_to_delete2(要删除的文件) :记录删除失败的文件以及再次尝试的时间和失败的总

次数 +-----------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | nexttry | int(10) unsigned | NO | MUL | NULL | | | failcount | tinyint(3) unsigned | NO | | 0 | | +-----------+---------------------+------+-----+---------+-------+

file_to_delete_later(要延迟删除的文件) :记录要延迟删除的文件 +----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | delafter | int(10) unsigned | NO | MUL | NULL | | +----------+------------------+------+-----+---------+-------+

file_to_queue(当前排队的文件) :不详 +-----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | devid | int(10) unsigned | YES | | NULL | | | type | tinyint(3) unsigned | NO | PRI | NULL | | | nexttry | int(10) unsigned | NO | | NULL | | | failcount | tinyint(3) unsigned | NO | | 0 | | | flags | smallint(5) unsigned | NO | | 0 | | +-----------+----------------------+------+-----+---------+-------+

file_to_replicate(要做复制分发的文件) :要做分发的文件,记录来源设备,失败次数 和下次重试的时间等信息。 +-----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | nexttry | int(10) unsigned | NO | MUL | NULL | | | fromdevid | int(10) unsigned | YES | | NULL | | | failcount | tinyint(3) unsigned | NO | | 0 | | | flags | smallint(5) unsigned | NO | | 0 | | +-----------+----------------------+------+-----+---------+-------+


相关文章:
SEP安装指导
22 1 文档介绍 一. 文档介绍 1、本文档是由 Symantec 技术支持部门编写的内部文档; 2、本文档交由代理商使用,用来指导小型用户顺利的安装 SEP11.0 产品; 3、...
系统安装配置手册
系统安装配置手册_IT/计算机_专业资料。浙江科技学院信息学院 文件编号: 纺织服装...选择使用缺省字符集,点击下一步出现如下对话框: 共 38 页第 13 页 浙江科技...
电加热带安装使用规范
电加热带安装使用规范_电力/水利_工程科技_专业资料。暖通知识 1.安装前 防锈防腐涂层要干透、管道上无毛刺和利角,电带热表面 无破损,加热带绝缘电阻应≥20MΩ...
安装使用手册_图文
(1)下载软件后仔细阅读安装使用手册并安装程序 (2)登陆软件输入企业信息 (3)进入【基本员工信息】模块--填写员工基本信息 (4)进入【报表管理】模块—填写明细数据...
动力设备安装技术
动力设备安装技术_建筑/土木_工程科技_专业资料。1H413050 动力设备安装技动力设备...4.按使用不同分类,有热水锅炉、工业锅炉、电站锅炉等。 (二)电站锅炉系统主要...
MySql_5.5安装图解说明(超详细)
意思是:允许用户选择安装的程序功能和安装的位置,建议高级用户使用。 Complete(完全安装) All program features will be installed.Requires the most disk space. ...
设备安装流程及管理制度
第二条 设备安装过程管理 (一) 、设备进入客户使用现场施工前,设备安装负责人一定要与销售人员及使 用单位负责人三方协商沟通好,杜绝设备进场无法施工的情况,沟通...
酒店安装全过程
到各机电设备、通风空调设备间管、线安装,各功能性用房和地下 车库照明安装。 ...研究成果的使用,大大提高了综合管网施工的一次成型率,管网工程施工 质量得以...
设备安装调试过程及一般要求
设备安装调试过程及一般要求 1)开箱验收 新设备到货后,由设备管理部门,会同购置单位,使用单位(或 接收单位)进行开箱验收,检查设备在运输过程中有无损坏、丢失, ...
现场设备安装规范
现场安装调试严禁带电作业,所有的设备必须安装良好的接地线。 调试设备正常运行后,将设备操作使用方法培训给现场使用人员,使其能达到正常 使用设备的能力。 安装调试...
更多相关标签: