FastDFS 同步文件及目錄結構


一、FastDFS服務器端運行時目錄結構

${base_path}
|__data:存放數據文件
|__logs:存放日志文件

其中,${base_path}由配置文件中的參數“base_path”設定。

1. tracker server

tracker server目錄及文件結構:

${base_path} ---- 網上說在這個路徑下查找,但是實際上本人找不到,而是在安裝tracker時創建的文件夾(/apps/fastdfs/tracker1/data)才找到
|__data
| |__storage_groups[_new].dat:存儲分組信息
| |__storage_servers[_new].dat:存儲服務器列表
|__logs
|__trackerd.log:tracker server日志文件

數據文件storage_groups.dat和storage_servers.dat中的記錄之間以換行符(/n)分隔,字段之間以西文逗號(,)分隔。

storage_groups.dat中的字段依次為:

  • group_name:組名
  • storage_port:storage server端口號

storage_servers.dat中記錄storage server相關信息,字段依次為:

  • group_name:所屬組名
  • ip_addr:ip地址
  • status:狀態
  • sync_src_ip_addr:向該storage server同步已有數據文件的源服務器
  • sync_until_timestamp:同步已有數據文件的截至時間(UNIX時間戳)
  • total_upload_count:上傳文件次數
  • success_upload_count:成功上傳文件次數
  • total_set_meta_count:更改meta data次數
  • success_set_meta_count:成功更改meta data次數
  • total_delete_count:刪除文件次數
  • success_delete_count:成功刪除文件次數
  • total_download_count:下載文件次數
  • success_download_count:成功下載文件次數
  • total_get_meta_count:獲取meta data次數
  • success_get_meta_count:成功獲取meta data次數
  • last_source_update:最近一次源頭更新時間(更新操作來自客戶端)
  • last_sync_update:最近一次同步更新時間(更新操作來自其他storage server的同步)

2. storage server

storage server目錄及文件結構:

${base_path}
|__data
| |__.data_init_flag:當前storage server初始化信息 -- 沒找到
| |__storage_stat.dat:當前storage server統計信息
| |__sync:存放數據同步相關文件
| | |__binlog.index:當前的binlog(更新操作日志)文件索引號
| | |__binlog.###:存放更新操作記錄(日志)
| | |__${ip_addr}_${port}.mark:存放向目標服務器同步的完成情況
| |
| |__一級目錄:256個存放數據文件的目錄,目錄名為十六進制字符,如:00, 1F
| |__二級目錄:256個存放數據文件的目錄,目錄名為十六進制字符,如:0A, CF
|__logs
|__storaged.log:storage server日志文件

.data_init_flag文件格式為ini配置文件方式,各個參數如下:

  •  storage_join_time:本storage server創建時間
  • sync_old_done:本storage server是否已完成同步的標志(源服務器向本服務器同步已有數據)
  • sync_src_server:向本服務器同步已有數據的源服務器IP地址,沒有則為空
  • sync_until_timestamp:同步已有數據文件截至時間(UNIX時間戳)

storage_stat.dat文件格式為ini配置文件方式,各個參數如下:

  • total_upload_count:上傳文件次數
  • success_upload_count:成功上傳文件次數
  • total_set_meta_count:更改meta data次數
  • success_set_meta_count:成功更改meta data次數
  • total_delete_count:刪除文件次數
  • success_delete_count:成功刪除文件次數
  • total_download_count:下載文件次數
  • success_download_count:成功下載文件次數
  • total_get_meta_count:獲取meta data次數
  • success_get_meta_count:成功獲取meta data次數
  • last_source_update:最近一次源頭更新時間(更新操作來自客戶端)
  • last_sync_update:最近一次同步更新時間(更新操作來自其他storage server)

binlog.index中只有一個數據項:當前binlog的文件索引號

binlog.###,###為索引號對應的3位十進制字符,不足三位,前面補0。索引號基於0,最大為999。一個binlog文件最大為1GB。記錄之間以換行符(/n)分隔,字段之間以西文空格分隔。字段依次為:

  • timestamp:更新發生時間(Unix時間戳)
  • op_type:操作類型,一個字符
  • filename:操作(更新)的文件名,包括相對路徑,如:5A/3D/FE_93_SJZ7pAAAO_BXYD.S

${ip_addr}_${port}.mark

ip_addr為同步的目標服務器IP地址,port為本組storage server端口。例如:10.0.0.1_23000.mark。文件格式為ini配置文件方式,各個參數如下:

  • binlog_index:已處理(同步)到的binlog索引號
  • binlog_offset:已處理(同步)到的binlog文件偏移量(字節數)
  • need_sync_old:同步已有數據文件標記,0表示沒有數據文件需要同步
  • sync_old_done:同步已有數據文件是否完成標記,0表示未完成,1表示已完成
  • until_timestamp:同步已有數據截至時間點(UNIX時間戳)
  • scan_row_count:已掃描的binlog記錄數
  • sync_row_count:已同步的binlog記錄數

數據文件名由系統自動生成,包括三部分:當前時間(Unix時間戳)、文件大小(字節數)和隨機數。文件名長度為16字節。文件按照PJW Hash算法hash到65536(256*256)個目錄中分散存儲。

二、FastDFS同步相關文件

1. 192.168.178.10_23002.mark

內容如下:

binlog_index=0
binlog_offset=1334
need_sync_old=1
sync_old_done=1
until_timestamp=1457542256
scan_row_count=23
sync_row_count=11

解釋如下:

binlog_index:對應於哪個binlog
binlog_offset:binlog.xxx的偏移量,可以直接這個偏移量獲取下一行記錄
need_sync_old:本storage是否是對側storage(192.168.0.2)的源結點,同時是否需要從起點同步所有的記錄
sync_old_done:是否同步完成過
until_timestamp:上次同步時間結點
scan_row_count:總記錄數

2. binlog.000

內容如下:

1581001242 c M00/00/00/wKiyCl48KhqATsPqAABdrZgsqUU663.jpg
1581001242 c M00/00/00/wKiyCl48KhqATsPqAABdrZgsqUU663.jpg-m
1581001242 c M00/00/00/wKiyCl48KhqATsPqAABdrZgsqUU663_big.jpg
1581001242 c M00/00/00/wKiyCl48KhqATsPqAABdrZgsqUU663_big.jpg-m

解釋如下:

1457547668:同步時間戳
C:標記文件類型:C 源創建;A 源追加; D 源刪除; T 源Truncate。
對應的小寫字母則為副本,如c 副本創建。
M00/00/00/wKiyCl48KhqATsPqAABdrZgsqUU663.jpg:文件名

3. binlog.index

內容如下:

#現有binlog數
0

三、新增節點同步

注意事項:對於非源storage,只上傳指定時間結點后的源文件給新增結點,副本文件不處理。對於源結點,需要把時間結點前所有文件(源和副)傳給新結點。Storage的狀態的主要意義,給tracker用來判定哪些active的結點可以服務。啟動同步過程中,源結點狀態不改變,可以正常存儲文件。

四、正常文件同步

注意事項:正常文件上傳完成后,就記錄近binlog緩存中,系統定時刷入binlog文件。系統有線程定時讀取binlog文件,當有新增行時,判斷該記錄是源文件記錄還是副本文件記錄。系統只主動發送源文件,副本文件不做處理(非啟動時流程)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM