於開始尋找一個真正的分佈式文件系統,來解決我的存儲難題,一下列舉幾個主要的:
mogileFS:Key-Value型元文件系統,不支持FUSE,應用程序訪問它時需要API,主要用在web領域處理海量小圖片,效率相比mooseFS高很多。
fastDFS:國人在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最近幾年沒發展,肯定不能用。
當然,對於現在很多的網盤,比如百度網盤,百度雲,阿里雲,騰訊雲,七牛雲等雲計算服務商也提供很好的分佈式儲存方案,具體用的技術肯定很多,據說其中UC的雲盤就是用fasfdfs實現的。
http://blog.csdn.net/zhushuai1221/article/details/52440970
http://www.open-open.com/lib/view/open1435468300700.html
那今天就說一下關於fastdfs分佈式文件的安裝,配置。
fsatdfs在github上的地址:https://github.com/happyfish100/fastdfs,最新版本是v5.08
fastdfs的v4.0*版本是需要依賴libenent,但從v5.04版本開始,不在依賴libevent,而是依賴libfastcommon,也是fastdfs做着餘慶開發的,地址:https://github.com/happyfish100/libfastcommon
首先下載fastdfs和libfastcommon,然後解壓這兩個文件夾
(1)安裝libfastcommon
cd libfastcommon
./make.sh
./make.sh install
(2) 安裝fastdfs
cd fastdfs-master
./make.sh
./make.sh install
(3) 安裝完畢後,在/usr/bin 下面會生成fdfs的各種可執行文件,如下圖:
那麼我們可以直接在終端執行每一個可執行文件,如下圖:
執行每一個,都會列出用法叫我們如何使用這些可執行文件。
(4) 在/etc/fdfs/下將會產生三個配置文件client.conf.simple,tracker.conf.simple,storage.conf.simple。
我們將這三個文件重命名爲client.conf,tracker.conf,storage.conf
client.conf:這個配置文件是我們使用api操作的時候需要調用的。
tracker.conf:這個配置文件是我們配置tracker服務使用的,啓動tracker服務時也需要用到該文件
storage.conf:這個配置文件是配置storage服務使用的,啓動也需要用到該配置文件。
(5)配置tracker.conf
一般只需要配置base_path這項,這項是一個基本路徑,storaged.log和trackerd.log文件將保存在這個路徑下的base_path下的logs/.
eg:base_path=/var/fdfsdata
一般也設置rotate_error_log = true
是否定期輪轉error log,目前僅支持一天輪轉一次 (建議設置爲true,否則會導致日誌文件只有一個,時間長了就會很大,不方便查看)
那麼在tracker和storage啓動後,將會在/var/fdfsdata創建u一個logs文件夾。logs裏面將會有storaged.log和trackerd.log文件,記錄這兩個服務的運行信息。
注意:http.server_port設置http端口號,這個配置在fastdfs5.05及以後版本中已經不用配置,不用管這個。
詳細的配置在http://www.linuxidc.com/Linux/2014-10/107577.htm有中文說明
(6) 配置storage.conf
這裏也說一下主要的幾個配置,其他配置默認就可以。
group_name=group1
base_path=/var/fdfsdata (和tracker.conf配置相同)
storage_path_count=1 (默認1,多個store_path設置多個)
store_path0=/var/fdfsdata (可以與base_path相同,也可以設置不同)
tracker_server=192.168.1.67:22122
//多個tracker_server時,可以設置多個
tracker_server=192.168.1.68:22122
注意:http.server_port設置http端口號,這個配置在fastdfs5.05及以後版本中已經不用配置,不用管這個
(7) 配置完成後,分別啓動這兩個服務,首先啓動tracker,再啓動storage。
啓動tracker:
fdfs_trackerd /etc/fdfs/tracker.conf
啓動storage:
fdfs_storaged /etc/fdfs/storage.conf
查看是否啓動,我們可以用以下命令:
netstat | grep 22122
netstat | grep 23000
(8) 配置client.conf
主要配置一下幾項:
base_path=/var/fdfsdata (這個base_path主要是用來保存logs文件的,可以設置與tracker.conf一樣,也可以不一樣,建議設置一樣,方便管理)
有多少個就設置多少個
tracker_server=192.168.1.67:22122
tracker_server=192.168.1.68:22122
http.tracker_server_port=8080
#include http.conf
fdfs_test /etc/fdfs/client.conf upload /home/www/test.png
可以看到上傳返回的信息,說明fastdfs整個安裝部署成功。
(10) 安裝php_client的擴展
php_client的擴展文件在fastdfs_master的php_client文件夾下
進入到該文件夾
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
(--with-php-config根據實際安裝路徑配置)
./make
./make install
安裝完成後,在複製php_client文件夾下的php_client.ini的內容到php.ini下面,同時修改如下主要幾項:
fastdfs_client.base_path=/tmp
fastdfs_client.log_filename=/usr/local/fastdfs/logs/fastdfs_client.log
fastdfs_client.tracker_group_count = 1
fastdfs_client.tracker_group0 = /etc/fdfs/client.conf
然後重新啓動apache或者php-fpm
然後再通過php -m 查看安裝的擴展模塊,如果看到fastdfs_client,說明模塊安裝成功!
在php_client的有一個fastdfs_test.php文件,可以直接執行:
php fastdfs_test.php
在終端將會打印出很多信息。
到這裏,我們可以使用php的api來操作很上傳,下載,刪除等功能了,具體的API函數說明在README.MD文件中有說明。