2013-05-25 36 views
2

我正在嘗試構建在幾個高CPU無盤實例上運行的神經網絡模擬。我計劃使用永久磁盤來存儲我的模擬代碼和訓練數據,並將它們裝載到所有服務器實例上。它基本上是一個減少任務類型的地圖(幾個節點工作在相同的訓練數據上,所有節點的結果都需要收集到一個單獨的結果文件中)。無盤服務器的存儲選項

我現在唯一的問題是,我有什麼選擇來(永久)保存不同服務器的仿真結果(無論是在模擬過程中的某些點還是在結束時)。理想情況下,我很樂意將它們寫入安裝在所有服務器上的單個永久性磁盤,但這是不可能的,因爲我只能將它只讀安裝到多個服務器上。

將所有服務器的所有仿真結果收集回一個持久磁盤的最智能(也是最便宜的)方法是什麼?

回答

5

谷歌雲存儲是永久存儲在谷歌的雲信息的好方法。您只需爲項目啓用該產品,即可直接從Compute Engine虛擬機訪問雲存儲。如果使用'storage-rw'服務帳戶創建實例,則訪問更容易,因爲您可以使用內置於虛擬機中的gsutil命令,而無需執行任何明確的授權。

更具體地說,轉到Google Cloud Console,選擇要使用計算引擎和雲存儲的項目,並確保這兩項服務都已啓用。然後在創建虛擬機時使用'storage-rw'服務帳戶範圍。如果您使用gcutil創建虛擬機,只需添加--storage_account_scope = storage-rw(如果您使用雲控制檯啓動虛擬機,也可以使用直觀方式設置服務帳戶範圍)。一旦您的VM啓動並運行,您可以自由使用gsutil命令,而無需擔心執行交互式登錄或OAuth步驟。您還可以通過將任何需要的gsutil請求集成到您的應用程序中來編寫腳本(gsutil也可以在啓動腳本中運行)。

關於GCE的服務帳戶功能的更多背景可以在here找到。

0

如果你想留在谷歌的產品空間,google cloud storage

否則,我使用S3和boto對於這些類型的任務

0

作爲更普遍的選擇,你需要某種通用對象存儲。正如前面的回覆中指出的那樣,Google提供了一個很好的包,但幾乎所有的雲提供商都提供了一些存儲選項。確保您的雲提供商具有兩個密鑰選項 - 一個卷存儲區,一個類似於虛擬磁盤的數據存儲區以及一個對象存儲區,一個鍵/值存儲區。兩者都有自己的優點和缺點。卷存儲是虛擬磁盤的替代品。如果您可以使用stdio,則可能會使用遠程卷存儲。問題是,它們通常具有磁盤結構。如果你想要更多的東西,你需要一個數據庫。對象存儲是磁盤和數據庫之間的「中間地帶」。它速度快,半結構化。

我自己是OpenStack用戶 - 首先,因爲它確實提供了兩個存儲系列,其次,它受到各種供應商的支持,因此,如果您決定從供應商A轉到供應商B,則您的代碼可以保持不變。您甚至可以在自己的機器上運行它的副本(請訪問www.openstack.org)但請注意,OpenStack確實喜歡內存。你不會在4GB筆記本電腦上運行你的私有云!考慮兩臺16GB機器。

4

Marc的答案絕對是長期存儲結果的最佳選擇。根據您的I/O和可靠性需求,您還可以將一臺服務器設置爲NFS服務器,並使用它在您的其他節點上遠程安裝卷。

通常,NFS服務器將是您的「主節點」,它可以同時提供二進制文件和配置。工作人員會定期重新掃描從主服務器導出的目錄以獲取新的二進制文件或配置。如果你不需要太多的磁盤I/O(你提到的是神經模擬,所以我假設數據集適合內存,並且只輸出最終結果),只需將輸出寫入您的主節點上的NFS目錄,然後將主節點備份結果傳送到某個地方,如GCS。

使用NFS優於GCS的主要優勢在於NFS提供了熟悉的文件系統語義,如果您使用的第三方軟件希望從文件系統讀取文件,這可以提供幫助。定期將文件從GCS同步到本地存儲非常容易,但確實需要在主機上運行額外的代理。設置NFS的缺點是你可能需要在主機之間同步UID,NFS可能是一個安全漏洞(我只會在我的私有網絡上暴露NFS,而不是在10/8以外的任何地方),而且它需要在客戶端和服務器上安裝額外的軟件包來設置共享。此外,NFS只會像託管機一樣可靠,而像GCS或S3這樣的對象存儲將通過冗餘服務器實現,甚至可能實現地理多樣性。

+0

非常感謝這個答案。你知道哪種解決方案讀取和寫入速度更快:遠程NFS共享或GCS? – naeger

相關問題