使用免費工具為數千個虛擬機備份存儲

使用免費工具為數千個虛擬機備份存儲

你好,我最近遇到一個有趣的問題:設定儲存空間來備份大量區塊設備。

每週我們都會備份雲端中的所有虛擬機,因此我們需要能夠維護數千個備份,並盡可能快速且有效率地進行備份。

不幸的是,標準配置 RAID5, RAID6 在這種情況下,我們將不被允許這樣做,因為像我們這樣大的磁碟上的復原過程將非常漫長,而且很可能永遠不會結束。

讓我們看看有哪些替代方案:

糾刪碼 — 與 RAID5、RAID6 類似,但具有可設定的奇偶校驗等級。 在這種情況下,預留不是逐塊進行的,而是針對每個物件單獨進行的。 嘗試糾刪碼最簡單的方法是擴展 鉛丹.

磁碟機陣列 是目前未發布的 ZFS 功能。 與 RAIDZ 不同,DRAID 具有分散式奇偶校驗區塊,並且在復原期間一次使用陣列的所有磁碟,這使得它能夠更好地承受磁碟故障並在故障後更快地恢復。

使用免費工具為數千個虛擬機備份存儲

使用免費工具為數千個虛擬機備份存儲

伺服器可用 富士通Primergy RX300 S7 帶處理器 英特爾至強 CPU E5-2650L 0 @ 1.80GHz, 九根 RAM 三星 DDR3-1333 8Gb PC3L-10600R ECC 註冊 (M393B1K70DH0-YH9), 磁碟架 Supermicro 超級機殼 847E26-RJBOD1,透過連接 雙 LSI SAS2X36 擴充器 和45張光碟 希捷 ST6000NM0115-1YZ1106TB 每個。

在我們做出任何決定之前,我們首先需要正確測試一切。

為此,我準備並測試了各種配置。 為此,我使用了 minio,它充當 S3 後端,並以不同的模式和不同數量的目標啟動它。

基本上,minio 案例在糾刪碼與軟體 raid 中進行了測試,具有相同數量的磁碟和磁碟奇偶校驗,這些是:RAID6、RAIDZ2 和 DRAID2。

供參考:當您只啟動一個目標的 minio 時,minio 工作在 S3 網關模式,以 S3 儲存的形式提供本機檔案系統。 如果您啟動指定多個目標的 minio,擦除編碼模式將自動打開,這將在目標之間傳播數據,同時提供容錯能力。

預設情況下,minio 將目標分為 16 個磁碟組,每組有 2 個奇偶校驗。 那些。 兩個磁碟可以同時發生故障而不會遺失資料。

為了測試效能,我使用了16 個6TB 的磁碟,並在上面寫入了1MB 大小的小對象,這最準確地描述了我們未來的負載,因為所有現代備份工具都將資料分成幾兆位元組的塊並以這種方式寫入。

為了進行基準測試,我們使用了 s3bench 實用程序,該實用程式在遠端伺服器上啟動,並透過數百個執行緒將數以萬計的此類物件傳送到 minio。 之後我嘗試以同樣的方式要求他們回來。

基準測試結果如下表所示:

使用免費工具為數千個虛擬機備份存儲

正如我們所看到的,minio 在其自己的糾刪碼模式下的寫入效能明顯比在相同配置的軟體 RAID6、RAIDZ2 和 DRAID2 上運行的 minio 差。

單獨的我 在 ext4 與 XFS 上測試 minio。 令人驚訝的是,對於我的工作負載類型來說,XFS 比 ext4 慢得多。

在第一批測試中,Mdadm 表現出了相對於 ZFS 的優越性,但後來 格梅利科夫 建議您可以透過設定以下選項來提高 ZFS 效能:

xattr=sa atime=off recordsize=1M

之後,ZFS 的測試變得更好了。

您還可以注意到,與 RAIDZ 相比,DRAID 並沒有提供太多效能增益,但理論上它應該更安全。

在最後兩次測試中,我還嘗試將元資料(特殊)和ZIL(日誌)從SSD傳輸到鏡像。 但刪除元資料並沒有為記錄速度帶來太大的提升,當刪除 ZIL 時,我的 SSDSC2KI128G8 利用率達到了 100% 的上限,所以我認為這次測試失敗了。 我不排除如果我有更快的 SSD 驅動器,那麼也許這可以大大改善我的結果,但不幸的是,我沒有它們。

最後,我決定使用 DRAID,儘管它處於測試階段,但它是我們案例中最快、最高效的儲存解決方案。

我在具有三個群組和兩個分散式備件的配置中建立了一個簡單的 DRAID2:

# zpool status data
  pool: data
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    data                 ONLINE       0     0     0
      draid2:3g:2s-0     ONLINE       0     0     0
        sdy              ONLINE       0     0     0
        sdam             ONLINE       0     0     0
        sdf              ONLINE       0     0     0
        sdau             ONLINE       0     0     0
        sdab             ONLINE       0     0     0
        sdo              ONLINE       0     0     0
        sdw              ONLINE       0     0     0
        sdak             ONLINE       0     0     0
        sdd              ONLINE       0     0     0
        sdas             ONLINE       0     0     0
        sdm              ONLINE       0     0     0
        sdu              ONLINE       0     0     0
        sdai             ONLINE       0     0     0
        sdaq             ONLINE       0     0     0
        sdk              ONLINE       0     0     0
        sds              ONLINE       0     0     0
        sdag             ONLINE       0     0     0
        sdi              ONLINE       0     0     0
        sdq              ONLINE       0     0     0
        sdae             ONLINE       0     0     0
        sdz              ONLINE       0     0     0
        sdan             ONLINE       0     0     0
        sdg              ONLINE       0     0     0
        sdac             ONLINE       0     0     0
        sdx              ONLINE       0     0     0
        sdal             ONLINE       0     0     0
        sde              ONLINE       0     0     0
        sdat             ONLINE       0     0     0
        sdaa             ONLINE       0     0     0
        sdn              ONLINE       0     0     0
        sdv              ONLINE       0     0     0
        sdaj             ONLINE       0     0     0
        sdc              ONLINE       0     0     0
        sdar             ONLINE       0     0     0
        sdl              ONLINE       0     0     0
        sdt              ONLINE       0     0     0
        sdah             ONLINE       0     0     0
        sdap             ONLINE       0     0     0
        sdj              ONLINE       0     0     0
        sdr              ONLINE       0     0     0
        sdaf             ONLINE       0     0     0
        sdao             ONLINE       0     0     0
        sdh              ONLINE       0     0     0
        sdp              ONLINE       0     0     0
        sdad             ONLINE       0     0     0
    spares
      s0-draid2:3g:2s-0  AVAIL   
      s1-draid2:3g:2s-0  AVAIL   

errors: No known data errors

好了,我們已經整理好了存儲,現在我們來談談要備份的內容。 在這裡我想立即談談我嘗試過的三個解決方案,它們是:

奔吉備份 - 叉 巴基2是一種專門用於區塊設備備份的解決方案,與 Ceph 緊密整合。 可以取得快照之間的差異並從中形成增量備份。 支援大量儲存後端,包括本地和S3。 需要一個單獨的資料庫來儲存重複資料刪除哈希表。 缺點:用python寫,cli有點反應遲鈍。

博格備份 - 叉 閣樓是一款久負盛名且經過驗證的備份工具,可以很好地備份資料並進行重複資料刪除。 能夠在本地保存備份並透過 scp 保存到遠端伺服器。 如果使用該標誌啟動,可以備份區塊設備 --special,缺點之一:建立備份時,儲存庫被完全阻塞,因此建議為每個虛擬機器建立單獨的儲存庫,原則上這不是問題,幸運的是它們創建起來非常容易。

雷斯蒂奇 是一個積極開發的項目,用 go 編寫,速度相當快,支援大量儲存後端,包括本地儲存、scp、S3 等等。 另外,我想指出的是,有一個專門創建的 休息伺服器 for Restic,它允許您快速匯出儲存以供遠端使用。 在以上所有內容中,我最喜歡它。 可以從標準輸入備份。 它幾乎沒有明顯的缺點,但有幾個特點:

  • 首先,我嘗試在所有虛擬機器(如 Benji)的通用儲存庫模式下使用它,它甚至運行得很好,但恢復操作花了很長時間,因為... 每次恢復之前,restic 都會嘗試讀取所有備份的元資料。 這個問題很容易解決,就像 borg 一樣,透過為每個虛擬機器建立一個單獨的儲存庫。 事實證明,這種方法對於管理備份也非常有效。 單獨的儲存庫可以有單獨的密碼來存取數據,而且我們也不必擔心全域儲存庫可能會以某種方式損壞。 您可以像在 borg 備份中一樣輕鬆地產生新儲存庫。

    無論如何,重複資料刪除僅相對於先前版本的備份執行;先前的備份由指定備份的路徑決定,因此,如果您將不同的物件從 stdin 備份到公共儲存庫,請不要忘記指定選項 --stdin-filename,或每次都明確指定選項 --parent.

  • 其次,由於其並行性質,恢復到標準輸出比恢復到檔案系統花費的時間要長得多。 將來,我們計劃增加對區塊設備備份的更緊密支援。

  • 三、目前推薦使用 來自master的版本, 因為0.9.6 版本存在大檔案復原時間較長的 bug。

為了測試備份的有效性以及從備份寫入/恢復的速度,我創建了一個單獨的儲存庫並嘗試備份虛擬機器的小映像(21 GB)。 在不更改原始資料的情況下執行了兩次備份,使用列出的每個解決方案來檢查複製重複資料刪除資料的速度有多快/有多慢。

使用免費工具為數千個虛擬機備份存儲

我們可以看到,Borg Backup 具有最佳的初始備份效率,但在寫入和復原速度方面均較差。

Restic 比 Benji Backup 更快,但恢復到標準輸出需要更長的時間,而且不幸的是,它還不知道如何直接寫入區塊裝置。

在權衡了所有的利弊後,我決定 雷斯蒂奇 с 休息伺服器 作為最方便和最有前途的備份解決方案。

使用免費工具為數千個虛擬機備份存儲

在此截圖影片中,您可以看到在同時運行的多個備份操作期間如何完全利用 10 GB 通道。 值得注意的是,磁碟回收率不會超過 30%。

我對收到的解決方案非常滿意!

來源: www.habr.com

添加評論