使用(可能)無盤從節點建立低成本開發集群
考慮以下:
我(假設)有一個重量級伺服器/主節點,其中有幾個磁碟,還有一組輕量級無盤客戶端/節點在 10 Gb LAN 上。
伺服器正在執行:DHCP 和 TFTP 為客戶端提供基於 PXE 的核心。PXE 核心在主伺服器上傳入和掛載 NFS 作為根文件系統。
我通過主伺服器路由所有 Internet 訪問並與客戶端共享,以防止由於我希望最大化節點和主伺服器之間的 I/O 而引入的可能的安全問題,從而創建一個私有的不受保護的可信網路和一個公共防火牆網路。這可以通過我的主節點有 2 個 gigE 埠這一事實來實現。
目標是以不到四千美元的價格為大約六人的團隊建立一個軟體開發實驗室。這個想法是盡可能多地共享硬體。
我的問題是:哪個更好,直接在 NFS 掛載上編譯,或者在 tmpfs(完全在 RAM 中,沒有備份儲存的文件系統)上編譯,然後在主節點上進行交換(希望我不要’不必過多使用它)。或者是否值得為從節點獲取 SSD,以便它們可以進行本地編譯,然後將結果保存到主節點上的 NFS 掛載,請記住,這非常昂貴並且與設置的目標背道而馳。
我已經設置了多個這樣的系統。擁有一個可以訪問 DHCP 和 TFTP 站點以將映像載入到您想要臨時添加到集群中的任何隨機系統的引導磁碟/USB 也很方便。您還可以將工作站設置為每晚自動重新啟動到您的集群(以獲得一些非高峰處理能力),並在白天重新啟動到任何其他作業系統。順便說一句,如果您手動執行此操作,則有很多工具包可以提供幫助。
為了回答您的問題,在這樣的系統上進行編譯的一般方法是在前端編譯所有磁碟,並將主目錄 NFS 從那里安裝到計算節點。如果將它放在 tmpfs 上,則每次重新編譯時都必須重新建構節點。如果您曾經擴展到數百或數千個節點,NFS 可能不會擴展到那麼高,但是像 autofs 這樣的工具可以幫助您解決這個問題,並且 nfs 可以很好地滿足您的需求。我假設您正在設置該系統以執行某種並行作業(MPI、hadoop 等)。我提到這一點是因為您可能希望 6 個使用者以有效的方式共享此並行資源。我建議對作業使用排隊系統,這樣單個計算節點一次不會由多個使用者共享(並且單個作業可以跨越許多/所有計算節點)。
SSD 可能不錯,但我認為它們完全違背了您擁有廉價並行計算資源的目標。只要您有足夠的 RAM 來保存一個小圖像並執行您的作業,NFS 就會很好地將應用程式碼提供給它們。如果你不能在記憶中適應你的工作,那麼你就處於另一場比賽中。在這種情況下,考慮需要多少更多的計算節點才能在記憶體中適應作業(畢竟這是一個並行作業,希望它可以擴展到這麼多)。無論如何,RAM 比 SSD 快,因此在昂貴的 SSD 上的額外資金通常最好花在具有更多 RAM 的更多計算節點上。