• 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的对比

    介绍结束,谢谢浏览~ 

     







  • 相关阅读:
    SQLServer ---------- 安装SQLServer后报错解决
    linux --------- linux系统 安装tomcat
    linux -------------- Linux系统安装jdk
    linux ------ 在Vm 安装 centos系统
    linux ----------- 在VM上 的安装 centos
    Objective-C 图片处理
    Objective-C 符号化
    Objective-C
    Objective-C Core Animation深入理解
    C/C++ 内存对齐
  • 原文地址:https://www.cnblogs.com/Qian-free/p/7910312.html
Copyright © 2020-2023  润新知