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的對比
介紹結束,謝謝瀏覽~