FastDFS文件名策略及對小文件的優化
FastDFS是一個應用級分布式文件存儲服務,其采用中心型結構(類似GFS、HDFS、TFS等),主要用于大中型網站存儲資源文件。FastDFS具有輕量級,支持高并發放訪問,負載均衡,可擴展等優點。而FastDFS最大的亮點就是對小文件的存儲性能較好,這主要來自于其文件名策略。
1.小文件存儲性能優化
小文件的性能瓶頸主要來自于對元數據服務器(如FastDFS中的TrackerServer或TFS中的NameServer)的訪問,因為當文件本身大小很小時,元數據存儲所占空間與文件內容存儲所占空間的比例就變得較大,訪問元數據所消耗資源與訪問文件內容所消耗資源的比例也變得較大。因此,通常對小文件存儲的優化方法主要有兩大類思路:一是減少訪問元數據的次數,比如Cache預??;二是減少元數據所占的存儲空間,比如FastDFS使用的文件名策略。
2. FastDFS文件名策略
FastDFS中的文件名是在向StorageServer存儲文件時由系統指定的,文件名中包含了VolumeID和FileID。也就是說,當客戶要讀取某個文件時,通過在客戶端對文件名進行解析,就可以知道該文件存儲在哪個Volume上和它在StorageServer中的FileID。但是此時用戶還不能讀取文件,因為他不知道Volume內各個StorageServer的ip地址,也不知道應該從Volume內的哪個StorageServer中讀取。所以用戶需手持欲訪問的文件的VolumeID向TrackerServer詢問,TrackerServe會均衡當前各StorageServer的IO負載狀況,返回一個最佳的StorageServer的ip地址。最后用戶與該StorageServer連接,出示欲訪問文件的FileID,StorageServer上會維持一個FileID對應偏移量的表,從而得到欲訪問文件的偏移量。
可見,FastDFS的文件名策略將文件存儲位置信息隱含在文件名中,從而減少了元數據量,達到了優化小文件存儲性能的作用。