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

安装使用


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 | | +-----------+----------------------+------+-----+---------+-------+


相关文章:
Server-u安装使用详细过程
Server-u安装使用详细过程_IT/计算机_专业资料。帮你了解Server-u安装使用详细过程60 实验五:Server-U 使用实验目的:掌握文件服务器软件 Server-U 的使用 实验器材...
户户通安装使用手册
户户通安装使用手册_电脑基础知识_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 户户通安装使用手册_电脑基础知识_IT/计算机_专业资料。目 录 第一章 ...
Phoenix安装使用手册_详细版
Phoenix安装使用手册_详细版_计算机软件及应用_IT/计算机_专业资料。本文详细讲解了Phoenix连接hbase的配置以及使用,通过简单案例演示了Phoenix操作hbase数据库的详细过程...
软件使用和安装常见问题
软件使用安装常见问题_电脑基础知识_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 软件使用安装常见问题_电脑基础知识_IT/计算机_专业资料。目录一...
加密狗安装使用说明
加密狗安装使用说明一、下载并安装加密狗驱动程序 请注意:在安装驱动前不要插加密狗。 请注意:在安装驱动前不要插加密狗。 1、 先到以下地址下载加密狗驱动:...
Project_Server2010安装使用_图文
Project_Server2010安装使用_计算机软件及应用_IT/计算机_专业资料。Project Server 2010 安装和配置 Microsoft Project Server 是一个配套程序,与 Microsoft Project ...
IBM MSM 安装使用教程
LINUX 安装 MegaRAID Storage Manager (MSM)安装使用教程 说明,MSM 软件是 LSI 出品,DELL,IBM,HP 等使用 LSI 产品时有一些名称修改,国产的直接使用 原版。 MSM...
FlashPaper安装及使用方法
FlashPaper 安装使用方法第一步:安装 FlashPaper2.2 将 zip 压缩包解压至磁盘的某一文件夹中,注意,此版本 FlashPaper 为了能更 好的支持 xp、vista、win7 ...
mysql 5.6.21 安装使用说明
mysql 5.6.21 安装使用说明_计算机软件及应用_IT/计算机_专业资料。准备如下软件: 第一步:双击 mysql_installer_community_V5.6.21.1_setup.1418020972.msi 运行...
变频器的安装使用方法
实习教学教案课型: 一体化 课时:4 学时 日期: 2011.4 .28 班级: ××培训班 课题 变频器的安装使用方法一、实习目的 ★ 了解变频器的功能特点 ★ 学会变频...
更多相关标签:
nginx安装与使用 | cx oracle 安装和使用 | cocoapods安装与使用 | 使用bower进行安装 | wamp安装后怎么使用 | mysql安装后怎么使用 | python安装后如何使用 | jmeter安装与使用 |