分散式儲存檔案系統 - 哪一個/是否有現成可用的產品?

分散式儲存檔案系統 - 哪一個/是否有現成可用的產品?

Hadoop沙發資料庫部落格和相關新聞都介紹了什麼是真正有效的分散式容錯儲存(引擎)。

  • CouchDB 實際上沒有任何內建的分發功能,據我所知,自動分發條目甚至整個資料庫的黏合劑根本就缺失。
  • Hadoop 似乎得到了非常廣泛的使用——至少它得到了很好的報道,但仍然存在單點故障:NameNode。另外,它只能透過 FUSE 安裝,我知道 HDFS 實際上並不是 Hadoop 的主要目標
  • GlusterFS確實有一個「無共享」的概念,但最近我讀了幾篇文章,這些文章讓我認為它不太穩定
  • 光澤由於使用專用元資料伺服器,因此也存在單點故障
  • 頭孢似乎是首選播放器,但主頁表明它仍處於 alpha 階段。

所以問題是哪個分散式檔案系統有以下功能集(沒有特定的順序):

  • POSIX 相容
  • 輕鬆新增/刪除節點
  • 無共享概念
  • 在廉價硬體上運行(AMD Geode 或 VIA Eden 級處理器)
  • 內建認證/授權
  • 網路檔案系統(我希望能夠同時安裝在不同的主機上)

很高興有:

  • 本地可存取的檔案:我可以使用標準本機檔案系統(ext3/xfs/其他...)將節點掛載到分割區上,並且仍然可以存取檔案

我是不是尋找託管應用程序,而不是讓我可以使用每個硬體盒的 10GB 空間,並在我們的網路中提供該儲存空間,並且可以輕鬆安裝在多個主機上的應用程式。

答案1

我認為你必須放棄 POSIX 要求,很少有系統實現這一點 - 事實上甚至 NFS 也沒有真正實現(想想鎖等)並且沒有冗餘。

任何使用同步複製的系統都會非常緩慢。任何具有非同步複製(或「最終一致性」)的系統都將違反 POSIX 規則,且行為不像「傳統」檔案系統。

答案2

我無法與其他人交談,但您似乎對“分散式儲存引擎”和“分散式檔案系統”感到困惑。它們不是同一件事,不應該被誤認為是同一件事,而且它們永遠不會是同一件事。檔案系統是一種追蹤事物在硬碟上的位置的方法。像 hadoop 這樣的儲存引擎是一種追蹤由鍵標識的資料塊的方法。從概念上講,沒有太大區別。問題是檔案系統是儲存引擎的依賴項......畢竟,它需要一種寫入區塊設備的方法,不是嗎?

拋開這一切不談,我討論在生產環境中使用 ocfs2 作為分散式檔案系統。如果您不想要具體細節,請停止閱讀此行之後的內容:這有點酷,但它可能意味著比您想像的更多的停機時間。

過去幾年我們一直在生產環境中運行 ocfs2。沒關係,但對於很多應用程式來說並不是很好。你應該真正審視你的需求並弄清​​楚它們是什麼——你可能會發現你對錯誤的寬容度比你想像的要大得多。

例如,ocfs2 為叢集中要掛載分割區的每台機器都有一個日誌。假設您有四台 Web 計算機,當您使用 mkfs.ocfs2 建立該分割區時,您指定總共有六台計算機,以便為自己提供一些成長空間。每個日誌都會佔用空間,從而減少了可以在磁碟上儲存的資料量。現在,假設您需要擴展到七台機器。在這種情況下,您需要取下全部的叢集(即卸載所有 ocfs2 分割區)並使用tunefs.ocfs2 公用程式建立附加日誌(前提是有可用空間)。然後,只有這樣,您才能將第七台機器新增至叢集(這需要您將文字檔案分發到叢集的其餘部分,除非您使用實用程式),將所有內容備份,然後在所有七台機器上安裝分割區機器。

明白了嗎?它應該是高可用性的,這應該意味著“永遠在線”,但就在那裡你有大量的停機時間......上帝保佑你的磁碟空間擁擠。你不想看到當你擁擠 ocfs2 時會發生什麼。

請記住,evms 曾經是管理 ocfs2 集群的「首選」方式,現在已經走上了渡渡鳥的道路,轉而支持 clvmd 和 lvm2。 (並且很好地擺脫了 evms。)此外,heartbeat 很快就會變成一個殭屍項目,轉而支持 openais/pacemaker 堆疊。 (旁白:在為 ocfs2 進行初始叢集配置時,您可以指定「pcmk」作為叢集引擎,而不是 heartbeat。不,這沒有記錄。)

無論如何,我們回到了由pacemaker管理的nfs,因為當pacemaker將nfs共享遷移到另一台機器時,幾秒鐘的停機時間或一些丟棄的tcp資料包與我們看到的基本停機時間相比是微不足道的共用儲存操作,例如使用 ocfs2 時新增電腦。

答案3

我可能誤解了你的要求,但你看過嗎http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_file_systems

答案4

相關內容