Glusterfs

如何為 GlusterFS 分區目錄系統?

  • August 24, 2015

我們在 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 文件以調整儲存集群以託管小文件。 至少要確保:

  1. GlusterFS 儲存伺服器上的文件系統有足夠的空閒 inode 可用(mkfs選項)
  2. GlusterFS 儲存伺服器上的驅動器可以處理大量 IOP。
  3. 您為任務使用適當的文件系統(ext4 或 xfs)
  4. 您的應用程序/員工不會嘗試頻繁掃描包含大量小文件的目錄。

如果可以(如果還沒有),最好創建一個數據庫作為文件的索引,而不是一直掃描(例如ls)或搜尋(例如find)文件。

引用自:https://serverfault.com/questions/716234