Glusterfs
如何為 GlusterFS 分區目錄系統?
我們在 Ubuntu 14.04 機器上有 3 個文件夾,每個文件夾包含 250K 張圖片,每個文件夾大小為 2KB-30KB,預計每個目錄會增長到 1M 文件。
在嘗試將應用程序擴展到多台伺服器時,我們正在研究 Glusterfs 以實現共享儲存。由於 ext4 上 250K 文件不是問題,因此 glusterfs 似乎有問題。試圖複製文件會使機器完全崩潰。
我希望將文件劃分為 2 個級別的目錄:
mkdir -p {000..255}/{000..255}
/000/000/filename /001/000/filename /001/001/filename ...
這聽起來像是一個可行的好方法嗎?整個結構稍後將包含數百萬個文件。這會讓 glusterfs 在生產中可靠且性能良好,託管數百萬個文件嗎?
使用 GlusterFS 儲存和訪問大量非常小的文件是許多實現面臨的困難,而且您似乎已經走上了解決問題的好道路:將文件分成單獨的目錄。
您可以實施這樣的解決方案。只需創建一堆目錄,為每個目錄中可以放置的文件數量選擇一個限制,並希望您不會用完放置文件的地方。在您的範例中,您正在創建 65k+ 目錄,因此這不會很快成為問題。
另一種選擇是根據創建文件的日期創建目錄。例如,如果文件
cust_logo_xad.png
是今天創建的,它將儲存在這裡:/gluster/files/2015/08/24/cust_logo_xad.png
如果您託管不同實體(客戶、部門等)的數據,您可以根據所有權分離文件,為實體分配某種唯一 ID。例如:
/gluster/files/ry/ry7eg4k/cust_logo_xad.png
除此之外,最好查看GlusterFS 文件以調整儲存集群以託管小文件。 至少要確保:
- GlusterFS 儲存伺服器上的文件系統有足夠的空閒 inode 可用(
mkfs
選項)- GlusterFS 儲存伺服器上的驅動器可以處理大量 IOP。
- 您為任務使用適當的文件系統(ext4 或 xfs)
- 您的應用程序/員工不會嘗試頻繁掃描包含大量小文件的目錄。
如果可以(如果還沒有),最好創建一個數據庫作為文件的索引,而不是一直掃描(例如
ls
)或搜尋(例如find
)文件。