本文地址 分享提綱: 1.概述 2. 原理 3. 安裝 4. 使用 5. 參考文檔 1. 概述 1.1)【常見文件系統】 Google了一下,流行的開源分散式文件系統有很多,介紹如下: -- mogileFS:Key-Value型元文件系統,不支持FUSE,應用程式訪問它時需要API,主要用在web ...
本文地址
分享提綱:
1.概述
2. 原理
3. 安裝
4. 使用
5. 參考文檔
1. 概述
1.1)【常見文件系統】
Google了一下,流行的開源分散式文件系統有很多,介紹如下: -- mogileFS:Key-Value型元文件系統,不支持FUSE,應用程式訪問它時需要API,主要用在web領域處理海量小圖片,效率相比mooseFS高很多。 -- fastDFS:國人 餘慶老師(GitHub)在mogileFS的基礎上進行改進的key-value型文件系統,同樣不支持FUSE,提供比mogileFS更好的性能。 -- mooseFS:支持FUSE,相對比較輕量級,對master伺服器有單點依賴,用perl編寫,性能相對較差,國內用的人比較多 -- glusterFS:支持FUSE,比mooseFS龐大 -- ceph:支持FUSE,客戶端已經進入了linux-2.6.34內核,也就是說可以像ext3/rasierFS一樣,選擇ceph為文件系統。徹底的分散式,沒有單點依賴,用C編寫,性能較好。基於不成熟的btrfs,其本身也非常不成熟。 -- lustre:Oracle公司的企業級產品,非常龐大,對內核和ext3深度依賴 -- NFS:老牌網路文件系統,具體不瞭解,反正NFS最近幾年沒發展,肯定不能用 1.2)【fastDFS】 FastDFS是一個開源的輕量級分散式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的線上服務,如相冊網站、視頻網站等等。2. 原理
2.1)【三個角色】
具體參見: 分散式文件系統FastDFS設計原理
FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、存儲伺服器(Storage Server)和客戶端(Client)。
- Tracker Server: 跟蹤伺服器,主要做調度工作,起到均衡的作用;負責管理所有的 storage server
和 group,每個 storage 在啟動後會連接 Tracker,告知自己所屬 group 等信息,並保持周期性心跳。 - Storage Server:存儲伺服器,主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多台 storage server,數據互為備份。
- Client:客戶端,上傳下載數據的伺服器,也就是我們自己的項目所部署在的伺服器。
Tracker Server
伺服器,接著Tracker Server
伺服器分配group
和Storage Server
,當然這是有一定規則的,選擇好Storage Server
後再根據一定規則選擇存儲在這個伺服器會生成一個file_id
,這個file_id
包含欄位包括:storage server ip、文件創建時間、文件大小、文件 CRC32 校驗碼和隨機數;每個存儲目錄下有兩個 256 * 256 個子目錄,後邊你會知道一個Storage Server
存儲目錄下有好多個文件夾的,storage 會按文件file_id
進行兩次 hash ,路由到其中一個子目錄,然後將文件存儲到該子目錄下,最後生成文件路徑:group 名稱、虛擬磁碟路徑、數據兩級目錄、file_id和文件尾碼就是一個完整的文件地址。可能我理解的也不是很徹底,下載、同步操作我不寫了,這裡有一篇文章 分散式文件系統FastDFS設計原理 講解的很詳細,我就不班門弄斧了,大家可以點擊去看看。
3. 安裝
源碼下載:http://code.google.com/p/fastdfs 尋求幫助:http://www.csource.org 作者 餘慶老師(GitHub)
具體安裝教程見 :FastDFS 安裝及使用
及 【好】分散式文件系統 - FastDFS 在 CentOS 下配置安裝部署
3.1)【安裝libevent】
fastDFS需要安裝libevent比較新的版本,將本機的比較低的版本卸載了。
rpm -qa libevent
libevent-1.4.13-1.el6.x86_64
rpm -e --nodeps libevent
安裝一個最新穩定版
wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
tar zxvf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure
make && make install
為libevent創建軟鏈接到/lib庫下,64位系統對應/lib64
ln -s /usr/local/lib/libevent* /lib/
ln -s /usr/local/lib/libevent* /lib64/
安裝libevent
3.2)【安裝FastDFS】
wget http://fastdfs.googlecode.com/files/FastDFS_v3.06.tar.gz
tar zxvf FastDFS_v3.06.tar.gz
cd FastDFS
./make.sh
./make.sh install
安裝FastDFS
3.3)【配置FastDFS】
環境:
tracker server
192.168.1.5
storage server
192.168.1.51
192.168.1.52
1、配置並啟動 tracker server
①配置 tracker.conf
mkdir /data/fastdfs
vim /etc/fdfs/tracker.conf
base_path=/data/fastdfs
②啟動 tracker
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
③開機啟動
vim /etc/rc.local
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
2、配置並啟動 storage server
①配置 tracker.conf
mkdir /data/fastdfs
mkdir /data/images
vim /etc/fdfs/storage.conf
base_path=/data/fastdfs
store_path0=/data/images
tracker_server=192.168.1.5:22122
②啟動 tracker
/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf
③開機啟動
vim /etc/rc.local
/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf
3、為storage節點安裝fastdfs-nginx-module模塊
①安裝模塊
安裝Nginx詳見:
需重新編譯Nginx
wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz
tar zxvf fastdfs-nginx-module_v1.10.tar.gz
wget http://nginx.org/download/nginx-1.2.0.tar.gz
tar zxvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src
make && make install
cd ..
②配置
編輯nginx.conf
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
location /M00 {
alias /data/images/data;
ngx_fastdfs_module;
}
......
}
給 storage 的存儲目錄做一個軟連接
ln -s /data/images/data/ /data/images/data/M00
拷貝mod_fastdfs.conf 到 /etc/fdfs/
cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
store_path0=/data/images
啟動nginx
/usr/local/nginx/sbin/nginx
配置FastDFS
4. 使用
4.1)【具體使用】
1、上傳文件
FastDFS安裝包中,自帶了客戶端程式,通過程式可以進行文件上傳。在使用這個客戶端程式之前,首先需要配置client.conf,然後再進行文件上傳及下載。
在tracker上修改客戶端配置文件client.conf
vim /etc/fdfs/client.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
vim a.html
This Is FastDFS Test.
上傳文件
/usr/local/bin/fdfs_test /etc/fdfs/client.conf upload a.html
This is FastDFS client test program v3.06
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2012-04-29 12:42:53] INFO - base_path=/data/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0
tracker_query_storage_store_list_without_group:
server 1. group_name=group1, ip_addr=192.168.1.51, port=23000
server 2. group_name=group1, ip_addr=192.168.1.52, port=23000
group_name=group1, ip_addr=192.168.1.51, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
上傳成功
試試用
http://192.168.1.51/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
訪問看看吧。
具體使用
5. 參考文檔
5.2) 分散式文件系統FastDFS設計原理
5.3) FastDFS 安裝及使用
5.4) 【好】 分散式文件系統 - FastDFS 配置 Nginx 模塊及上傳測試