2015-11-01 84 views
1

我一直在使用git-annex一段時間來管理我的數據,並且我發現它非常令人滿意。使用git-annex管理許多小文件(〜5KB)

但是,當處理我的神經影像數據時,git annex的表現還是相當缺乏。這類數據通常包含許多圖像文件(5KB),例如每個實驗每個參與者約36.000個。您甚至可以看到,即使對於少數實驗,我的數據存儲庫也可以在萬億以上的文件中累積。

有什麼辦法可以緩解運行時的巨大滯後git annex syncgit annex get?如果沒有,是否有任何(大致)類似的軟件可以讓我管理多個神經影像數據庫?

回答

1

大量文件在多個層次上效率低下;也許你可以改進神經影像軟件?

如果這不是一個選項,你可以做幾件事情。首先是將數據存儲在SSD上。這些操作很慢,因爲它們必須查詢存儲庫中每個文件的狀態,並將它們放在SSD上可使每個磁盤的讀取速度快得多。

另一個是限制任何給定目錄中的文件數量。您可能無法從單個實驗中分割文件,但要確保不會將來自多個實驗的文件放在同一個目錄中。這是因爲目錄上的訪問時間通常與該目錄中文件的數量成正比。

另一種情況是調查不同的文件系統或不同的文件系統配置;並非所有文件系統都適合大型目錄。例如,在ext3/4上,您可以設置文件系統選項dir_index,以便它使用b-tree索引來加速大型目錄的訪問時間。使用tune2fs程序進行設置。

最後的絕望選擇可能是將所有這些小文件合併到壓縮文件或壓縮文件等壓縮文件中。這可能會使他們的工作複雜化,但會大大減少您必須處理的文件數量。您也可以編寫這些導致的一些複雜性;例如,當您需要查看其中一個圖像時,您的腳本可能會將tarball解壓縮到一個臨時目錄中,啓動查看器,然後在退出時刪除解壓縮的文件。

1

我同意db48x。如果更換神經影像軟件不是一個選項,您可以使用每個實驗一個容器(〜180mb是一個合理的大小)並將其與git-annex一起存儲。對於數據訪問,您將此文件作爲一個額外的文件系統掛載在內存中。這應該大大減少訪問時間和git-annex的負擔。