linux分佈式存儲介紹

大綱:

    1、常見分佈式文件系統node

    2、MogileFS基本原理mysql

    3、MogileFS的實現nginx

    4、Fastdfs基本原理web

    5、Fastdfs的實現sql

    6、Mogilefs與FastDFS的對比數據庫

數據存儲是個永恆的話題,從結繩記數到文字出現,實現了數據信息表示方式的演化和進步,而存儲介質的變化,在這一過程當中,更是呈現了種類繁多的樣式,記錄是保存信息的一種有效方式,但隨着時間的推移,數據信息的安全和持久必將打破傳統的存儲介質和存儲思惟的束縛,隨着計算機技術的發展,再加上網絡和通信技術的成熟,存儲變得無處不在,須要時時更新。存儲須要保持實時讀寫,提供複雜的查詢功能,缺少容災和備份能力,大量無結構的數據的存儲和處理,對傳統的存儲方式提出挑戰。這個時候,分佈式存儲,應運而生,就是將數據信息分散存儲。vim

1、常見分佈式文件系統centos

Google Filesystem   GFS+MapReduce擅長處理單個大文件
Hadoop Distributed Filesystem GFS的山寨版+MapReduce,擅長處理單個大文件
ClusterFS 擅長處理單個大文件
Taobao Filesystem   擅長處理海量小文件
MogileFS 擅長處理海量小文件
Ceph PB級別的分佈式文件系統
MooseFS     通用簡便,適用於研發能力不強的公司
Lustre   一種平行分佈式文件系統

2、MogileFS基本原理瀏覽器

MogileFS是一個開源的分佈式文件存儲系統,由LiveJournal旗下的Danga Interactive公司開發。其主要特性包括支持多節點冗餘、實現文件自動複製、無需RAID、無特殊組件要求等。mogilefs主要有如下三部分構成:
一、Tracker:MogileFS 的核心部分,稱爲調度器,MogileFSd 進程就是trackers進程程序,trackers 作了不少工做:Replication,Deletion,Query,Reaper,Monitor 等等,這個是基於事件的( event-based ) 父進程/消息總線來管理全部來之於客戶端應用的交互(requesting operations to be performed),,包括將請求負載平衡到多個「query workers」中,而後讓 MogileFSd 的子進程去處理安全

二、Database:用來存放mogilefs的元數據

三、Storage server:mogilefs數據存儲於此

MogileFS管理的幾個概念:
一、Domain:一個MogileFS能夠有多個Domain,用來存放不一樣文件(大小,類型),同一個Domain內key必須惟一,不一樣Domain內,key能夠相同

二、每個存儲節點稱爲一個主機host,一個主機上能夠有多個存儲設備dev(單獨的硬盤),每一個設備都有ID號,Domain+Fid用來定位文件
三、Class:文件屬性管理,定位文件存儲在不一樣設備上的份數

3、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 *

一、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

二、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

三、組合(也就是把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

四、上傳一張圖片,測試是否能存儲成功

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 

瀏覽器訪問查找出來的路徑,出現圖片,測試成功

4、Fastdfs基本原理

      FastDFS是一個由國人餘慶開發的輕量級的開源分佈式文件系統,主要解決了大容量的文件存儲和高併發訪問的問題,文件存取時實現了負載均衡。它用純C語言實現,支持Linux、FreeBSD、AIX等UNIX系統。其特性包括分組存儲、靈活簡潔、支持多塊磁盤、節省存儲空間等,FastDFS的核心組件以下:

一、Tracker:調度器,負責維持集羣的信息,例如各group及其內部的storage node,這些信息也是storage node報告所生成;每一個storagenode會週期性向tracker發心跳信息;

二、storage server:以group爲單位進行組織,任何一個storage server都應該屬於某個group,一個group應該包含多個storage server;在同一個group內部,各storage server的數據互相冗餘;

5、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

一、編輯配置文件

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

二、配置完成,測試、上傳文件

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

6、Mogilefs與FastDFS的對比

介紹結束,謝謝瀏覽~ 

相關文章
相關標籤/搜索