zoukankan      html  css  js  c++  java
  • 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的对比

    介绍结束,谢谢浏览~ 

     







  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/Qian-free/p/7910312.html
Copyright © 2011-2022 走看看