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

安装使用


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


相关文章:
安装使用说明书
第二章 安装说明书为了您的权益,在安装使用本锅炉前,请您持本锅炉所附的相关文件, 到当地锅炉安全监察机构办理安装、使用手续。 1、安装准备 (1)确定安装单位。...
(详细的)ONE程序安装使用方法
ONE 程序安装使用方法 一.软件安装 1. 安装平台: Windows XP(可以是 linux 环境,方法类似) 2. 所需软件: 至少需要: one_1.3.0.zip(windows 版) jdk-6u...
户户通安装使用手册
户户通安装使用手册_电脑基础知识_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 户户通安装使用手册_电脑基础知识_IT/计算机_专业资料。目 录 第一章 ...
Phoenix安装使用手册_详细版
Phoenix安装使用手册_详细版_计算机软件及应用_IT/计算机_专业资料。本文详细讲解了Phoenix连接hbase的配置以及使用,通过简单案例演示了Phoenix操作hbase数据库的详细过程...
VirtualBox安装使用教程 (经典)
VirtualBox安装使用教程 (经典)_计算机软件及应用_IT/计算机_专业资料。虚拟机安装VirtualBox 安装使用教程一.选择 VirtualBOX 的理由: 二.VirtualBox 的下载及安装...
Project_Server2010安装使用
Project_Server2010安装使用_计算机软件及应用_IT/计算机_专业资料。Project Server 2010 安装和配置 Microsoft Project Server 是一个配套程序,与 Microsoft Project ...
变频器的安装使用方法
实习教学教案课型: 一体化 课时:4 学时 日期: 2011.4 .28 班级: ××培训班 课题 变频器的安装使用方法一、实习目的 ★ 了解变频器的功能特点 ★ 学会变频...
审神很忙简单易懂的安装使用教程
审神很忙简单易懂的安装使用教程_电脑基础知识_IT/计算机_专业资料。下载最新的本体,有新刀补丁记得下。 本体解压出来后的文件夹 把补丁覆盖进解压好的本体文件夹...
SQL数据库及软件安装使用教程
SQL数据库及软件安装使用教程_计算机软件及应用_IT/计算机_专业资料。数据库安装及使用安装前确认您的系统满足以下条件 1. Windows2000 或者以上版本 2. 没有安装过...
Server-u安装使用详细过程
Server-u安装使用详细过程_IT/计算机_专业资料。帮你了解Server-u安装使用详细过程60 实验五:Server-U 使用实验目的:掌握文件服务器软件 Server-U 的使用 实验器材...
更多相关标签:
cx oracle 安装和使用 | nginx安装与使用 | 安装使用漏电保护器 | cocoapods安装与使用 | wamp安装后怎么使用 | 使用u盘安装win7系统 | jmeter安装与使用 | 输入法安装后无法使用 |