linux分布式存储介绍

大纲:

    一、常见分布式文件系统

    二、MogileFS基本原理

    三、MogileFS的实现

    四、Fastdfs基本原理

    五、Fastdfs的实现

    六、Mogilefs与FastDFS的对比

数据存储是个永恒的话题,从结绳记数到文字出现,实现了数据信息表示方式的演化和进步,而存储介质的变化,在这一过程中,更是呈现了种类繁多的样式,记录是保存信息的一种有效方式,但随着时间的推移,数据信息的安全和持久必将打破传统的存储介质和存储思维的束缚,随着计算机技术的发展,再加上网络和通讯技术的成熟,存储变得无处不在,需要时时更新。存储需要保持实时读写,提供复杂的查询功能,缺乏容灾和备份能力,大量无结构的数据的存储和处理,对传统的存储方式提出挑战。这个时候,分布式存储,应运而生,就是将数据信息分散存储。

一、常见分布式文件系统

Google Filesystem   GFS+MapReduce擅长处理单个大文件
Hadoop Distributed Filesystem GFS的山寨版+MapReduce,擅长处理单个大文件
ClusterFS 擅长处理单个大文件
Taobao Filesystem   擅长处理海量小文件
MogileFS 擅长处理海量小文件
Ceph PB级别的分布式文件系统
MooseFS     通用简便,适用于研发能力不强的公司
Lustre   一种平行分布式文件系统

二、MogileFS基本原理

MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。其主要特性包括支持多节点冗余、实现文件自动复制、无需RAID、无特殊组件要求等。mogilefs主要有以下三部分构成:
1、Tracker:MogileFS 的核心部分,称为调度器,MogileFSd 进程就是trackers进程程序,trackers 做了很多工作:Replication,Deletion,Query,Reaper,Monitor 等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),,包括将请求负载平衡到多个“query workers”中,然后让 MogileFSd 的子进程去处理

2、Database:用来存放mogilefs的元数据

3、Storage server:mogilefs数据存储于此

MogileFS管理的几个概念:
1、Domain:一个MogileFS可以有多个Domain,用来存放不同文件(大小,类型),同一个Domain内key必须唯一,不同Domain内,key可以相同

2、每一个存储节点称为一个主机host,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有ID号,Domain+Fid用来定位文件
3、Class:文件属性管理,定位文件存储在不同设备上的份数

三、MogileFS的实现

工具:三台主机,角色如下

172.17.19.17:tracker+mysql

172.17.19.117:storage1

172.17.19.189:storage2

大环境:三台主机全部安装如下包

yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO

yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
yum localinstall *

1、tracker配置

①[root@tracker ~]# yum install mariadb mariadb-server -y

    [root@tracker ~]# systemctl start mariadb 

②初始化数据库
[root@websrv /etc/mogilefs]# mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'mogile' @'127.0.0.1' IDENTIFIED BY 'mogile' WITH GRANT OPTION;       授权
flush privileges;      清权限
[root@websrv /etc/mogilefs]# mogdbsetup --dbpass=mogile(一路y

③[root@websrv /etc/mogilefs]# vim mogilefsd.conf

listen = 172.17.19.17:7001      监听的IP对应的port

db_user = mogile    

db_pass = mogile

④启动服务

/etc/init.d/mogilefsd start

Starting mogilefsd (via systemctl): [ OK ]

[root@websrv /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 check   检测

Checking trackers...

172.17.19.17:7001 ... OK

Checking hosts...

No devices found on tracker(s).    此时只是配了tracker,还没有添加storage,所以是no devices

2、storage配置

[root@localhost mogilefs]# vim mogstored.conf

docroot = /data/mogdata

[root@localhost mogilefs]# mkdir /data/mogdata -p

chown mogilefs.mogilefs mogdata/ -R

[root@localhost mogilefs]# /etc/init.d/mogstored start

3、组合(也就是把storage“加到”tracker)

tracker操作

[root@websrv ~]# mogadm --tracker=172.17.19.17:7001 host add node1 --ip=172.17.19.117 --port=7500 --status=alive  指定storage为node1节点,alive的状态加到tracker里

[root@websrv ~]# mogadm --tracker=172.17.19.17:7001 host add node2 --ip=172.17.19.189 --port=7500 --status=alive

[root@websrv ~]# mogadm --tracker=172.17.19.17:7001 check

Checking trackers...

172.17.19.17:7001 ... OK

Checking hosts...

[ 1] node1 ... OK

[ 2] node2 ... OK

storage操作

[root@centos7 ~]# cd /data/mogdata/

[root@centos7 /data/mogdata]# ls

[root@centos7 /data/mogdata]# mkdir dev1

[root@centos7 /data/mogdata]# chown mogilefs.mogilefs dev1/ -R

[root@localhost mogilefs]# cd /data/mogdata/

[root@localhost mogdata]# mkdir dev2

[root@localhost mogdata]# chown mogilefs.mogilefs dev2/ -R

tracker操作

[root@websrv ~]# mogadm --tracker=172.17.19.17:7001 device add node1 1

[root@websrv ~]# mogadm --tracker=172.17.19.17:7001 device add node2 2

[root@websrv ~]# mysql -uroot -p

4、上传一张图片,测试是否能存储成功

tracker操作

[root@websrv /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 domain add img

[root@websrv /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 domain list

domain class mindevcount replpolicy hashtype

-------------------- -------------------- ------------- ------------ -------

img default 2 MultipleHosts() NONE

[root@websrv ~]# mogupload --tracker=172.17.19.17:7001 --domain=img --key=test --file=test.jpg 

浏览器访问查找出来的路径,出现图片,测试成功

四、Fastdfs基本原理

      FastDFS是一个由国人余庆开发的轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。其特性包括分组存储、灵活简洁、支持多块磁盘、节省存储空间等,FastDFS的核心组件如下:

1、Tracker:调度器,负责维持集群的信息,例如各group及其内部的storage node,这些信息也是storage node报告所生成;每个storagenode会周期性向tracker发心跳信息;

2、storage server:以group为单位进行组织,任何一个storage server都应该属于某个group,一个group应该包含多个storage server;在同一个group内部,各storage server的数据互相冗余;

五、Fastdfs的实现

­­­­

工具:三台主机,角色如下

172.17.19.17:tracker+mysql

172.17.19.117:storage1

172.17.19.189:storage2

大环境:三台机器全部安装如下包

fastdfs-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-debuginfo-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-server-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-tool-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-devel-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-5.0.11-1.el7.centos.x86_64.rpm
libfastcommon-1.0.36-1.el7.centos.x86_64.rpm nginx-filesystem-1.10.2-1.el7.centos.noarch.rpm
libfastcommon-devel-1.0.36-1.el7.centos.x86_64.rpm

1、编辑配置文件

tracker操作

[root@websrv /etc/fdfs]# vim tracker.conf

disabled=false   默认为false,表示是否无效

port=22122   默认为22122 

base_path=/data/fastdfs/tracker

启动服务

[root@websrv /etc/fdfs]# /etc/init.d/fdfs_trackerd start

或者systemctl status fdfs_trackerd

Starting fdfs_trackerd (via systemctl): [ OK ]

storage操作

[root@centos7 ~/fastdfs]# cd /etc/fdfs/

[root@centos7 /etc/fdfs]# ls

anti-steal.jpg http.conf storage.conf.sample tracker.conf.sample

client.conf.sample mime.types storage_ids.conf.sample

[root@centos7 /etc/fdfs]# cp storage.conf.sample storage.conf

[root@centos7 /etc/fdfs]# vim storage.conf

disabled=false   默认为false,表示是否无效 

port=23000   默认为23000

base_path=/data/fastdfs/storage

tracker_server=172.17.19.17:22122

store_path0=/data/fastdfs/storage

http.server_port=8888

启动服务

systemctl start fdfs_storaged

2、配置完成,测试、上传文件

tracker上配置客户端

[root@websrv /etc/fdfs]# cp client.conf.sample client.conf

[root@websrv /etc/fdfs]# vim client.conf

base_path=/data/fastdfs/tracker

tracker_server=172.17.19.17:22122

[root@websrv ~]# fdfs_upload_file /etc/fdfs/client.conf test.jpg

group1/M00/00/00/rBETvVoc0meAcLtvAAAcdXbJWOo831.jpg

storge 上查看,图片已存储,测试成功

[root@localhost 00]# ls

rBETvVoc0meAcLtvAAAcdXbJWOo831.jpg

[root@localhost 00]# pwd

/data/fastdfs/storage/data/00/00

六、Mogilefs与FastDFS的对比

介绍结束,谢谢浏览~ 

 







原文地址:https://www.cnblogs.com/Qian-free/p/7910312.html