虛擬檔案系統充當主檔案系統的克隆+差異

虛擬檔案系統充當主檔案系統的克隆+差異

在我的公司,大約 10 名開發人員共用一個 ubuntu 開發伺服器。我們有單獨的程式碼目錄,但由於我們的資料庫大小(大約 50 GB),為每個開發人員克隆 mysql 資料庫是不切實際的。所以現在,我們都共享一個資料庫。但是,我想知道這是否可能:

建立儲存 50 GB 資料庫的主檔案系統 (ext4)。該檔案系統不會運行 mysql 伺服器,並且實際上是唯讀的。為每個引用主檔案系統的開發人員建立一個虛擬檔案系統,並將每次變更的差異儲存到其中。在每個虛擬檔案系統上運行一個 mysql 伺服器。然後,每個開發人員都可以獲得自己的資料庫來執行他想要的操作,同時無需不必要地複製 50 GB 資料庫。

我還沒有研究過 mysql 如何將其資料儲存在磁碟上,但由於希望最大限度地減少磁碟 I/O,我懷疑我們在例行測試中所做的小更改不會在虛擬中產生巨大的差異文件系統。

具體來說,這些都是我的問題:

  • 這種架構可能嗎?
  • 這是實現我的目標最簡單的方法嗎?
  • 這樣的虛擬檔案系統是否已經存在?

答案1

回答您的問題(下次請給它們編號,以便更容易參考):

  • 應該是可以的
  • 聽起來不像是最簡單的方法
  • 是的,這樣的虛擬FS確實存在。

你的想法聽起來像是一個很好的用例覆蓋檔案系統。您可以使用現有的資料庫 FS 作為「較低」檔案系統,並使用每位開發人員的「diff」FS 作為「較高」檔案系統。 Overlayfs 允許使用目錄作為“上”和“下”,因此您不必將資料庫掛載在不同的目錄中。

然後,您需要設定每個開發人員的 MySQL 實例以使用不同的資料目錄。

到目前為止,最簡單的方法是硬著頭皮,為您的伺服器配備一個1 TB 硬碟,為每個開發人員克隆資料庫,無論您需要多少次,然後為每個開發人員運行一個MySQL 實例,或者讓一個實例管理所有資料庫。對於開發人員來說,這裡的區別在於指定不同的連接埠與不同的資料庫名稱。恕我直言,只有一個 MySQL 實例會更簡單,因為這意味著移動部件更少。

這裡要考慮的因素是開發overlayfs 解決方案需要多長時間與您的特定伺服器硬體的1 TB 硬碟的成本。你的時間是有代價的;如果您打算以每小時 50 美元的價格(這裡非常保守)工作 3 天,總共花費 1200 美元,而硬碟解決方案意味著 2 小時的工作加上可能需要過夜的資料庫同步,您可以啟動-然後忘記了,那麼您就有1100 美元的預算購買1 TB 硬碟。另外,大磁碟解決方案的維護更加容易,因為不涉及「駭客」或欺騙;它只是一個帶有巨大硬碟的資料庫伺服器。

當然,如果您的 Ubuntu 伺服器位於雲端某個地方,那麼該 1TB 儲存切片的成本可能會更高。儘管如此,請務必考慮成本/效益分析來做出決定;從長遠來看,您最終可能會節省金錢和時間:)

相關內容