Mogilefs是一款由perl语言研发的轻量级的分布式存储系统。类似淘宝的TFS可以从应用层解决海量的小数据的存储,比如图片。可以支持由php,java,perl,python写的扩展API接口来提供服务
- 特点:
- 支持多节点冗余
- 自动的文件复制
- 简单的命名空间,比如key,不多在当前domain全局惟一
- 不需要RAID,不共享任何东西,通过“集群”接口提供服务
- 不能追加写,随机写,因为它有自己的排列顺序,按照一定的编码来的
- 三大主件
- Tracker:跟踪器,调度器
- TrackerDB:Mysql ,主要用于存储数据的meta元数据
- Storage:存储真正的数据
# 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
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
添加设备:
mogadm –trackers=172.16.52.61:7001 device add 172.16.52.63 1
到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’
– 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这个地址,我们用浏览器访问一下:如图
- 本文固定链接: https://www.gayj.cn/?p=161
- 转载请注明: https://www.gayj.cn/