mogilefs

Mogilefs是一款由perl语言研发的轻量级的分布式存储系统。类似淘宝的TFS可以从应用层解决海量的小数据的存储,比如图片。可以支持由php,java,perl,python写的扩展API接口来提供服务

  • 特点:
  1. 支持多节点冗余
  2. 自动的文件复制
  3. 简单的命名空间,比如key,不多在当前domain全局惟一
  4. 不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过“集群”接口提供服务
  5. 不能追加写,随机写,写完就不能修改了,因为它有自己的排列顺序,按照一定的编码来的
       ....
  • 三大主件
  1. Tracker:跟踪器,调度器,7001/TCP
  2. TrackerDB:Mysql  ,主要用于存储数据的meta元数据,最好做HA
  3. Storage:存储真正的数据,7500/TCP
三台centos6主机:
host1:172.16.52.61   作为tracker&&mysql
host2:172.16 .52.63   storage1
host3:172.16 .52.64    storage2

Install
host1: 需要的包可以到http://pkgs.org/去下载
yum install MogileFS-Server-2.46-2.el6.noarch.rpm MogileFS-Utils-2.19-1.el6.noarch.rpm MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm perl-Net-Netmask-1.9015-8.el6.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm perl-MogileFS-Client-1.14-1.el6.noarch.rpm MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm perl-Danga-Socket-1.61-5.el6.noarch.rpm perl-IO-AIO-3.71-2.el6.x86_64.rpm perl-common-sense-3.5-1.el6.noarch.rpm perl-Sys-Syscall-0.23-1.el6.noarch.rpm perl-IO-AIO-3.71-2.el6.x86_64.rpm perl-IO-stringy-2.110-10.1.el6.noarch.rpm 

安装配置数据库:
yum install  mysql-server
~]#mysql
msyql>CREATE  DATABASE mogile  CHARACTOR SET utf8;
mysql> GRANT ALL ON mogile.* TO 'mogile'@'127.0.0.1' IDENTIFIED BY 'mogile';
mysql>exit;
测试连接数据库:
 ~]#mysql -umogile  -h127.0.0.1 -p  

Configuration

host1:创建文件:
~]#mkdir /etc/mogilefs/mogile

编辑配置文件,主要修改如下:

 vim /etc/mogilefs/mogilefsd.conf

# Enable daemon mode to work in background and use syslog
daemonize = 1
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /var/run/mogilefsd/mogilefsd.pid
# Database connection information
db_dsn = DBI:mysql:mogile:host=127.0.0.1       ///mogile是指库名
db_user = mogile
db_pass = mogile
# IP:PORT to listen on for mogilefs client requests
listen = 0.0.0.0:7001


初始化mogilefs的数据库,创建完就可以在mysql查看到多出一些新的表了:

~]#mogdbsetup --dbhost=127.0.0.1 --dbname=mogile --dbuser=mogile --dbpass=mogile 

启动mogilefsd服务:

 /etc/init.d/mogilefsd start

添加Tracker:

mogadm --trackers=172.16.52.61:7001 check

host2和host3上分别安装存储,表示缺包找包这种苦力活略考验耐心。。。此生不想再有第二次。。。

 yum install -y MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm perl-Perlbal-1.78-1.el6.noarch.rpm perl-IO-stringy-2.110-1.2.el6.rfx.noarch.rpm perl-Sys-Syscall-0.23-1.el6.noarch.rpm perl-Danga-Socket-1.61-5.el6.noarch.rpm perl-BSD-Resource-1.29.03-3.el6.x86_64.rpm  perl-IO-AIO-3.71-2.el6.x86_64.rpm perl-common-sense-3.5-1.el6.noarch.rpm  MogileFS-Utils-2.19-1.el6.noarch.rpm perl-MogileFS-Client-1.14-1.el6.noarch.rpm

创建存放数据的目录,不然会报错的:

 mkdir /var/mogdata

启动mogstored服务:

经验告诉我,需要手动运行在后台,如果再去研究脚本,估计今天就过去了,故先手动起着用咯。。。--daemon是指运行在后台,可以简写为-d

mogstored /etc/mogilefs/mogstored.conf --daemon

Add storage nodes

host1:添加存储节点:

~]# mogadm --trackers=172.16.52.61:7001 host add 172.16.52.62 --status=alive
 ~]# mogadm --trackers=172.16.52.61:7001 host add 172.16.52.64 --status=alive

host2&&host3:创建磁盘,挂载到/var/mogdata下面,如图


接着w保存,通知内核当前磁盘的分区了,多刷两次。。。

]# partx -a /dev/sda

]# partx -a /dev/sda

格式化磁盘

 ]#mkfs.ext4 /dev/sda3

挂载:

mount  /dev/sda3   /var/mogdata

设置开机自动启动:


添加设备:最后的1是为设备号,随机给的

 mogadm --trackers=172.16.52.61:7001 device add 172.16.52.63 1 

 mogadm --trackers=172.16.52.61:7001 device add 172.16.52.64  2

到host2&&host3上面创建对应的dev#目录

mkdir /var/mogdata/dev#


回到host1,因为我只添加了一个dev设备,因此。。。


[root@localhost ~]# mogadm --trackers=172.16.52.61:7001 check
Checking trackers...
  172.16.52.61:7001 ... OK


Checking hosts...
  [ 1] 172.16.52.62 ... REQUEST FAILURE FETCHING: http://172.16.52.62:7500/
  [ 2] 172.16.52.64 ... REQUEST FAILURE FETCHING: http://172.16.52.64:7500/
  [ 3] 172.16.52.63 ... OK


Checking devices...
  host device         size(G)    used(G)    free(G)   use%   ob state   I/O%
  ---- ------------ ---------- ---------- ---------- ------ ---------- -----
  [ 3] dev2            14.374      0.038     14.336   0.26%  ?         N/A
  ---- ------------ ---------- ---------- ---------- ------
             total:    14.374      0.038     14.336   0.26%

Add domain

添加domain:

~]# mogadm --trackers=172.16.52.61:7001 domain add fruit

查看domain, mindevcount选项是指副本,默认为2个副本,


[root@localhost ~]# mogadm --trackers=172.16.52.61:7001 domain list
 domain               class                mindevcount   replpolicy   hashtype
-------------------- -------------------- ------------- ------------ -------
 fruit                default                   2        MultipleHosts() NONE


Upload files to storage from Tracker

上传文件:将本地的chuju.jpg上传到存储,还记的 mindevcount是默认两个副本吗,如果两台存储主机都添加进去了,就会在两台storage上都存储下来

[root@localhost ~]# ls
anaconda-ks.cfg  chuju.jpg  Desktop  Documents  Downloads  install.log  install.log.syslog  Music  Pictures  Public  pxelinux.0  Templates  Videos
[root@localhost ~]# mogupload --trackers=172.16.52.61:7001 --domain=fruit --key='/chuju.jpg' --file='./chuju.jpg'

到host2&&host3可以查看:

[root@localhost dev2]# cd /var/mogdata/dev2/
[root@localhost dev2]# ls
0  test-write  usage
[root@localhost dev2]# tree 0
0
└── 000
    └── 000
        └── 0000000004.fid


2 directories, 1 file


[root@localhost mogilefs]# mogfileinfo --tracker=172.16.52.61:7001 --domain=fruit --key='/chuju.jpg'      这些数据都在mysql中存储的源数据
- file: /chuju.jpg
     class:              default
  devcount:                    1
    domain:                fruit
       fid:                    4
       key:           /chuju.jpg
    length:                68316
 - http://172.16.52.63:7500/dev2/0/000/000/0000000004.fid


Test


看到http://172.16.52.63:7500/dev2/0/000/000/0000000004.fid这个地址,我们用浏览器访问一下:如图










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值