FastDFS常見問題

1. FastDFS適用的場景以及不適用的場景?html

 

FastDFS是爲互聯網應用量身定作的一套分佈式文件存儲系統,很是適合用來存儲用戶圖片、視頻、文檔等文件。對於互聯網應用,和其餘分佈式文件系統相比,優點很是明顯。具體狀況你們能夠看相關的介紹文檔,包括FastDFS介紹PPT等等。
出於簡潔考慮,FastDFS沒有對文件作分塊存儲,所以不太適合分佈式計算場景。java

 

2. FastDFS須要的編譯和運行環境是怎樣的?linux

 

FastDFS Server僅支持unix系統,在Linux和FreeBSD測試經過。在Solaris系統下網絡通訊方面有些問題。
編譯須要的其餘庫文件有pthread,V5.0之前的版本依賴libevent;V5.0之後,再也不依賴libevent。
v5.04開始依賴libfastcommon,github地址:https://github.com/happyfish100/libfastcommon
v5版本從v5.05開始纔是穩定版本,請使用v5版本的同窗儘快升級到v5.05或更新的版本,建議升級到v5.08。
pthread使用系統自帶的便可。
對libevent的版本要求爲1.4.x,建議使用最新的stable版本,如1.4.14b。
注意,千萬不要使用libevent 2.0非stable版本。
測試了一下,libevent 2.0.10是能夠正常工做的。
在64位系統下,可能須要本身在/usr/lib64下建立libevent.so的符號連接。好比:
ln -s /usr/lib/libevent.so /usr/lib64/libevent.so
在ubuntu 11及後續版本,可能會出現找不到動態庫pthread庫,解決方法參見:http://bbs.chinaunix.net/thread-2324388-1-2.html
若出現libfastcommon版本不匹配問題,請執行以下命令:/bin/rm -rf /usr/local/lib/libfastcommon.so /usr/local/include/fastcommonnginx

 

3. 有人在生產環境中使用FastDFS嗎?git

 

答案是確定的。據我所知,截止2012年末至少有25家公司在使用FastDFS,其中有好幾家是作網盤的公司。
其中存儲量最大的一家,集羣中存儲group數有400個,存儲服務器超過800臺,存儲容量達到6PB,文件數超過1億,Group持續增加中。。。
如下是使用FastDFS的用戶列表:
  某大型網盤(因對方要求對公司名保密,就不提供名字了。有400個group,存儲容量達到了6PB,文件數超過1億)  
  UC (http://www.uc.cn/,存儲容量超過10TB)
  支付寶(http://www.alipay.com/
  京東商城(http://www.360buy.com/
  淘淘搜(http://www.taotaosou.com/
  飛信(http://feixin.1008**/
  趕集網(http://www.ganji.com/
  淘米網(http://www.61.com/
  迅雷(http://www.xunlei.com/
  螞蜂窩(http://www.mafengwo.cn/
  丫丫網(http://www.iyaya.com/
  虹網(http://3g.ahong.com
  5173(http://www.5173.com/
  華夏原創網(http://www.yuanchuang.com/
  華師京城教育雲平臺(http://www.hsjdy.com.cn/
  視友網(http://www.cuctv.com/
  搜道網(http://www.sodao.com/
  58同城(http://www.58.com/
  商務聯盟網(http://www.biz72.com/
  中青網(http://www.youth.cn/
  繽麗網 (http://www.binliy.com/
  飛視雲視頻(http://www.freeovp.com/
  夢芭莎(http://www.moonbasa.com/
  活動幫(www.eventsboom.com
  51CTO(http://www.51cto.com/
  搜房網(http://www.soufun.com/github

 

四、如何讓server進程退出運行?apache


直接kill便可讓server進程正常退出,可使用killall命令,例如:
killall fdfs_trackerd
killall fdfs_storaged
也可使用以下命令:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
千萬不要使用-9參數強殺,不然可能會致使binlog數據丟失的問題。ubuntu

 

五、如何重啓server進程?服務器


直接使用:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart網絡

 

六、跨運營商通訊異常問題


好比電信和網通機房相互通訊,可能會存在異常,有兩種表現:
  1)不能創建鏈接,這個比較直接,確定是網絡鏈接的問題
  2)能夠正常創建鏈接,但接收和發送數據失敗,這個問題比較隱蔽,正常網絡環境下,不該該出現此類問題。
       還有人碰到過從一個方向創建鏈接能夠正常通訊,但從另一個方向就不能正常通訊的狀況。
解決辦法:
  嘗試將服務端口改小,建議將端口修改成1024如下。好比將storage服務端口由23000修改成873等,也能夠試試修改成8080
  若是問題還不能解決,請聯繫你的網絡(機房)服務商。

 

七、fdfs_test和fdfs_test1是作什麼用的?


   這兩個是FastDFS自帶的測試程序,會對一個文件上傳兩次,分別做爲主文件和從文件。返回的文件ID也是兩個。
   而且會上傳文件附加屬性,storage server上會生成4個文件。
   這兩個程序僅用於測試目的,請不要用做實際用途。
   V2.05提供了比較正式的三個小工具:
      上傳文件:/usr/bin/fdfs_upload_file  <config_file> <local_filename>
      下載文件:/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename]
       刪除文件:/usr/bin/fdfs_delete_file <config_file> <file_id>

 

八、什麼是主從文件?


主從文件是指文件ID有關聯的文件,一個主文件能夠對應多個從文件。
    主文件ID = 主文件名 + 主文件擴展名
    從文件ID = 主文件名 + 從文件後綴名 + 從文件擴展名
使用主從文件的一個典型例子:以圖片爲例,主文件爲原始圖片,從文件爲該圖片的一張或多張縮略圖。
FastDFS中的主從文件只是在文件ID上有聯繫。FastDFS server端沒有記錄主從文件對應關係,所以刪除主文件,FastDFS不會自動刪除從文件。
刪除主文件後,從文件的級聯刪除,須要由應用端來實現。
主文件及其從文件均存放到同一個group中。
主從文件的生成順序:
  1)先上傳主文件(如原文件),獲得主文件ID
  2)而後上傳從文件(如縮略圖),指定主文件ID和從文件後綴名(固然還能夠同時指定從文件擴展名),獲得從文件ID。

 

九、如何刪除無效的storage server?

 

可使用fdfs_monitor來刪除。命令行以下:
/usr/bin/fdfs_monitor <config_filename> delete <group_name> <storage_id>
例如:
/usr/bin/fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.0.100
注意:若是被刪除的storage server的狀態是ACTIVE,也就是該storage server還在線上服務的狀況下,是沒法刪除掉的。
         storage_id參數:若是使用默認的ip方式,填寫storage server IP地址,不然使用對應的server id。

 

十、FastDFS擴展模塊升級到V1.06及以上版本的注意事項


apache和nginx擴展模塊版本v1.06及以上版本,須要在配置文件/etc/fdfs/fastdfs_mod.conf中設置storage server的存儲路徑信息。
一個示例以下所示:
store_path_count=1
store_path0=/home/yuqing/fastdfs
store_path_count和store_path#均須要正確設置,必須和storage.conf中的相應配置徹底一致,不然將致使文件不能正確下載!

 

十一、nginx和apache擴展模塊與FastDFS server版本對應關係


    擴展模塊1.05:  針對FastDFs server v2.x,要求server版本大於等於v2.09
    擴展模塊1.07及以上版本:  針對FastDFs server v3.x
    具體的版本匹配狀況,參閱擴展模塊源碼下的HISTORY文件

 

十二、上傳文件失敗,返回錯誤碼28,這是怎麼回事?


  返回錯誤碼28,表示磁盤空間不足。注意FastDFS中有預留空間的概念,在tracker.conf中設置,配置項爲:reserved_storage_space,缺省值爲4GB,即預留4GB的空間。
  請酌情設置reserved_storage_space這個參數,好比能夠設置爲磁盤總空間的20%左右。

 

1三、上傳文件失敗,返回錯誤碼28,這是怎麼回事?


  返回錯誤碼28,表示磁盤空間不足。注意FastDFS中有預留空間的概念,在tracker.conf中設置,配置項爲:reserved_storage_space,缺省值爲4GB,即預留4GB的空間。
  請酌情設置reserved_storage_space這個參數,好比能夠設置爲磁盤總空間的20%左右。

 

1四、fdfs_trackerd或者fdfs_storaged的日誌中出現:malloc task buff failed字樣的錯誤,這是怎麼回事?


  出現此類信息表示已經達到最大鏈接數。server端支持的最大鏈接數能夠經過max_connections這個參數來設置。
  出現這樣的問題,須要排查一下是否客戶端使用不當致使的,好比客戶端沒有及時關閉無用的鏈接。

 

1五、FastDFS的文件ID中能夠反解出哪些字段?


文件ID中除了包含group name和存儲路徑外,文件名中能夠反解出以下幾個字段:
  1)文件建立時間(unix時間戳,32位整數)
  2)文件大小
  3)上傳到的源storage server IP地址(32位整數)
  4)文件crc32校驗碼
  5)隨機數(這個字段用來避免文件重名)

 

1六、爲何生成的token驗證沒法經過?


  出現這樣的問題,請進行以下兩項檢查:
  1)確認調用token生成函數,傳遞的文件ID中沒有包含group name。傳遞的文件ID格式形如:M00/00/1B/wKgnVE84utyOG9hEAAATz5-S0SI99.Java
  2)確認服務器時間基本是一致的,注意服務器時間不能相差太多,不要相差到分鐘級別。

 

1七、最新程序包的下載地址是什麼?


   因google code不支持上傳程序包,最新的程序包能夠在sourceforge上下載,下載地址:https://sourceforge.net/projects/fastdfs/files/

 

1八、FastDFS支持斷點續傳嗎?

   能夠支持。先上傳appender類型的文件,而後使用apend函數。

相關文章
相關標籤/搜索