linux分布式存储介绍

Posted 千纸赫H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的对比

介绍结束,谢谢浏览~ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 





以上是关于linux分布式存储介绍的主要内容,如果未能解决你的问题,请参考以下文章

将从集中式存储分布式存储区块链分布式存储引入为大家介绍比特盘

01 . 分布式存储之FastDFS简介及部署

01 . 分布式存储之FastDFS简介及部署

分布式文件系统Mogilefs介绍

zz`linux块设备IO栈浅析

hive之核心知识点