fastDFS配置及日誌查看 所遇到的問題

FastDFS的配置文件在/usr/local/webserver/fastdfs/etc目錄下,其中包括
 client.conf    客戶端上傳配置文件
 storage.conf    文件存儲服務器配置文件
 tracker.conf    負責均衡調度服務器配置文件
 http.conf        http服務器配置文件
 
跟蹤器tracker:192.168.0.6
存儲節點Storage:192.168.0.5
 
1、配置及啓動Tracker Server
一、修改tracker.conf文件,修改以下
base_path=/usr/local/webserver/fastdfs/    
http.server_port= 8090   # 指定端口   
#include http.conf       # HTTP支持
  
三、啓動tracker服務器
/usr/local/webserver/fastdfs/bin/fdfs_trackerd /usr/local/webserver/fastdfs/etc/tracker.conf  
 
四、查看tracker的啓動日誌 
tailf /usr/local/webserver/fastdfs/logs/trackerd.log
[2011-12-09 10:34:44] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4096MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-09 10:34:44] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
[2011-12-09 10:34:44] ERROR - file: ../common/sockopt.c, line: 735, bind port 22122 failed, errno: 98, error info: Address already in use.
[2011-12-09 10:35:06] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4096MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-09 10:35:06] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
tracker server啓動成功。php

2、配置及啓動Storage Server
一、修改storage.conf文件,修改以下:
 #能夠自定義,但必須存在此目錄,用於存儲storage相關的log、group內的相關信息
 group_name=lxsym         #自定義組
 base_path=/usr/local/webserver/fastdfs  #安裝路徑
 store_path0=/data/fastdfs   #數據存儲路徑(能夠指定多個)
 tracker_server=192.168.0.6:22122   #跟蹤器IP及端口
 http.server_port= 8090   # 指定端口
 #include http.conf       # HTTP支持
 
 二、啓動storage服務器
 /usr/local/webserver/fastdfs/bin/fdfs_storaged /usr/local/webserver/fastdfs/etc/storage.conf
 
 三、查看storage服務器啓動日誌 
 tailf /usr/local/webserver/fastdfs/logs/storaged.log
[2011-12-18 18:13:28] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, store_path_count=1, subdir_count_per_path=256, group_name=group1, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, disk_rw_direct=0, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
[2011-12-18 18:13:28] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
[2011-12-18 18:13:50] INFO - file: storage_param_getter.c, line: 97, storage_ip_changed_auto_adjust=1, store_path=0, reserved_storage_space=4096 MB, use_trunk_file=0, slot_min_size=0, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-18 18:13:52] INFO - file: tracker_client_thread.c, line: 304, successfully connect to tracker server 192.168.0.6:22122, as a tracker client, my ip is 192.168.0.5
[2011-12-18 18:13:52] INFO - file: tracker_client_thread.c, line: 1100, tracker server 192.168.0.6:22122, set tracker leader: 192.168.0.6:22122
storage server啓動成功。html

 

 

 

FastDFS是爲互聯網應用量身定作的一套分佈式文件存儲系統,很是適合用來存儲用戶圖片、視頻、文檔等文件。對於互聯網應用,和其餘分佈式文件系統相比,優點很是明顯。可是在使用過程當中,也會遇到一些問題,一塊兒來看看。nginx

 

 

1、FastDFS簡介web

FastDFS(最新版本v3.04)是一個開源的輕量級分佈式文件系統,它用純C語言實現,支持Linux、FreeBSD、AIX等UNIX系統。它只能經過專有API對文件進行存取訪問,不支持POSIX接口方式,不能mount使用,不是系統級的分佈式文件系統,而是應用級的分佈式文件存儲服務。apache

2、FastDFS用途服務器

1)FastDFS主要解決了大容量的文件存儲高併發訪問的問題,文件存取時實現了負載均衡網絡

2)FastDFS實現了軟件方式的RAID,可使用廉價的IDE硬盤進行存儲 ,支持存儲服務器在線擴容。併發

3)FastDFS特別適合大中型網站使用,用來存儲資源文件(如:圖片、文檔、音頻、視頻等等。app

3、FastDFS原理負載均衡

存儲節點採用了分組(group)的方式。存儲系統由一個或多個group組成,group與group之間的文件是相互獨立的,全部group的文件容量累加就是整個存儲系統中的文件容量。一個group能夠由一臺或多臺存儲服務器組成,一個group下的存儲服務器中的文件都是相同的,group中的多臺存儲服務器起到了冗餘備份和負載均衡的做用一個組的存儲容量爲該組內存儲服務器容量最小的那個,不一樣組的Storage server之間不會相互通訊,同組內的Storage server之間會相互鏈接進行文件同步)。

在group中增長服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務。

當存儲空間不足或即將耗盡時,能夠動態添加group。只須要增長一臺或多臺服務器,並將它們配置爲一個新的group,這樣就擴大了存儲系統的容量。

FastDFS只有兩個角色:Tracker server和Storage server。Tracker server做爲中心結點,其主要做用是負載均衡和調度。Tracker server在內存中記錄分組和Storage server的狀態等信息,不記錄文件索引信息,佔用的內存量不多。另外,客戶端(應用)和Storage server訪問Tracker server時,Tracker server掃描內存中的分組和Storage server信息,而後給出應答。由此能夠看出Tracker server很是輕量化,不會成爲系統瓶頸。

FastDFS中的Storage server在其餘文件系統中一般稱做Trunk server或Data server。Storage server直接利用OS的文件系統存儲文件。FastDFS不會對文件進行分塊存儲,客戶端上傳的文件和Storage server上的文件一一對應(FastDFS中的文件標識分爲兩個部分:組名和文件名,兩者缺一不可)。

4、Nginx環境調用FastDFS要求

1)編譯安裝 nginx時附帶 fastdfs-nginx-module 模塊 –add-module=/root/fastdfs-nginx-module/src

2)修改 nginx 配置文件增長 ngx_fastdfs_module;

3)編譯fastdfs_client.so php擴展模塊

4)修改 php.ini 讓 php-fpm 支持fastdfs_client 擴展模塊 extension = fastdfs_client.so

注意:若是要使fastdfs支持web和開機自動腳本(默認是不支持的),須要修改make.sh文件

#WITH_HTTPD=1

#WITH_LINUX_SERVICE=1

(由於是給nginx添加fastdfs模塊,因此不須要fastdfs支持 http 因此就不須要去掉 #WITH_HTTPD=1 前的註釋了)。

5、所遇問題

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

FastDFS是爲互聯網應用量身定作的一套分佈式文件存儲系統,很是適合用來存儲用戶圖片、視頻、文檔等文件。對於互聯網應用,和其餘分佈式文件系統相比,優點很是明顯。FastDFS沒有對文件作分塊存儲,所以不太適合分佈式計算場景。

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

FastDFS Server僅支持unix系統,在Linux和FreeBSD測試經過。在Solaris系統下網絡通訊方面有些問題。編譯須要的其餘庫文件有pthread和libevent。pthread使用系統自帶的便可。對libevent的版本要求爲1.4.x,建議使用最新的stable版本,如1.4.14b。注意,千萬不要使用libevent 2.0 stable之前的版本。

3. 啓動storage server時,一直處於僵死狀態

啓動storage server,storage將鏈接tracker server,若是連不上,將一直重試。直到鏈接成功,啓動纔算真正完成。

出現這樣狀況,請檢查鏈接不上tracker server的緣由。

友情提示:從V2.03之後,多tracker server在啓動時會作時間上的檢測,判斷是否須要從別的tracker server同步4個系統文件。

觸發時機是第一個storage server鏈接上tracker server後,併發起join請求。

若是集羣中有2臺tracker server,而其中一臺tracker沒有啓動,可能會致使storage server一直處於僵死狀態。

4. 執行fdfs_test或fdfs_test1上傳文件時,服務器返回錯誤號2

錯誤號2表示沒有ACTIVE狀態的storage server。能夠執行fdfs_monitor查看服務器狀態。

5. 如何刪除無效的storage server

可使用fdfs_monitor來刪除。命令行以下:

/usr/local/bin/fdfs_monitor delete

例如:

/usr/local/bin/fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.0.100

注意:若是被刪除的storage server的狀態是ACTIVE,也就是該storage server還在線上服務的狀況下,是沒法刪除掉的。

6. nginx和apache擴展模塊與FastDFS server版本對應關係

擴展模塊1.05: 針對FastDFs server v2.x,要求server版本大於等於v2.09

擴展模塊1.07及以上版本: 針對FastDFs server v3.x

7. 上傳文件失敗,返回錯誤碼28,這是怎麼回事?

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

8. nginx擴展模塊,不能正常顯示圖片的問題

在配置文件/etc/fdfs/mod_fastdfs.conf中,缺省的設置是這樣的:http.need_find_content_type=false這個參數在nginx中須要設置爲true,apache中應該設置爲false

相關文章
相關標籤/搜索