Samba
現代數據中心的共享磁碟(SAN、虛擬化等)
我是一名開發人員……在外國地形上跋涉。請原諒任何天真。
我在一個將數據儲存在數據庫和文件系統中的應用程序上工作。
上下文:集群和網路共享
過去,當我們以集群方式執行應用程序(即多個應用程序伺服器面向數據)時,我們對文件系統的處理如下:
- 節點 A:共享“數據目錄”(通過 samba 或 nfs)
- 節點 B、C、D 等:掛載“網路共享”並在其“數據目錄”中使用它
降低節點 B、C、D 的“磁碟速度”不是最理想的,但不是一個大問題。
另請注意:應用程序使用自己的文件鎖定機制。並發寫入不是問題。
問題
- 因此,在現代數據中心光纖通道將伺服器連接到 SANS 中,在多台伺服器之間共享“大塊磁碟”的最佳方式是什麼?
- 這種“磁碟共享”是否被廣泛使用?
- 任何特定於作業系統的問題(“適用於 linux,但不適用於 Windows”)
- 有什麼注意事項嗎?難以配置、不可靠等?
我從我們的系統管理員那裡聽到了很多“我們不能那樣做”……最後當我詢問更多細節時,他們說“嗯,從技術上講這是可能的,但這不是我們在這裡做的方式”
提前致謝,
更新:感謝您的回答。(它們都很好:我必須選擇一個。對不起,如果不是你的)正如我(有點)預期的那樣:我希望你可以簡單地將 NTFS 或 XFS 或任何“正常”文件系統附加到同一個“大塊” ‘磁碟’ 被證明是幼稚的。集群文件系統就是門票。並且花哨的文件系統並不是我們託管團隊的首要任務)。
“嗯,從技術上講這是可能的,但這不是我們在這裡的做法”
這聽起來很像我經常告訴開發人員的話;)
從企業運營的角度來看,您希望應用程序盡可能使用標準的可重複解決方案。如果您的應用程序不需要/保證特殊處理,您將不會得到它。非標準解決方案需要專業技能、更昂貴或更簡單的設備,如果它是“最先進的”故障,通常也是災難性的。
對於許多應用程序來說,(高度可用的)文件共享仍然是一個非常合適且普遍部署的解決方案。
使用文件共享的常見 HA 替代解決方案是:
- 不要將文件儲存在文件系統上,而是使用高度可用的數據庫並將它們儲存為 BLOB。一種很常見的做法。通常你已經需要一個數據庫,這使得應用程序伺服器幾乎是無狀態的,通過將它們轉移到數據庫層來解決許多鎖定、複製、HA、一致性和訪問問題,其中很多問題都是舊聞,很好理解和解決了。儘管一旦達到 PB 範圍(相當大的一部分),維護起來可能會很昂貴。
- 一個適當的集群文件系統,允許通過光纖通道或 iSCSI 對共享儲存進行並發讀寫塊級訪問。企業儲存陣列往往非常昂貴,但這可以很好地擴展。集群文件系統通常需要(昂貴的)集群 FS 軟體的每個節點的許可。在專門應用程序的企業環境中也很常見。
- 使用分佈式對象儲存。這是更開源的解決方案,使用低端商品硬體,在軟體中創建冗餘和可擴展性。這是一種常見的“雲”方法。