你好,我最近遇到一個有趣的問題:設定儲存空間來備份大量區塊設備。
每週我們都會備份雲端中的所有虛擬機,因此我們需要能夠維護數千個備份,並盡可能快速且有效率地進行備份。
不幸的是,標準配置 RAID5, RAID6 在這種情況下,我們將不被允許這樣做,因為像我們這樣大的磁碟上的復原過程將非常漫長,而且很可能永遠不會結束。
讓我們看看有哪些替代方案:
伺服器可用 富士通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-1YZ110 上 6TB 每個。
在我們做出任何決定之前,我們首先需要正確測試一切。
為此,我準備並測試了各種配置。 為此,我使用了 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 差。
單獨的我
在第一批測試中,Mdadm 表現出了相對於 ZFS 的優越性,但後來
xattr=sa atime=off recordsize=1M
之後,ZFS 的測試變得更好了。
您還可以注意到,與 RAIDZ 相比,DRAID 並沒有提供太多效能增益,但理論上它應該更安全。
在最後兩次測試中,我還嘗試將元資料(特殊)和ZIL(日誌)從SSD傳輸到鏡像。 但刪除元資料並沒有為記錄速度帶來太大的提升,當刪除 ZIL 時,我的
最後,我決定使用 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
好了,我們已經整理好了存儲,現在我們來談談要備份的內容。 在這裡我想立即談談我嘗試過的三個解決方案,它們是:
--special
,缺點之一:建立備份時,儲存庫被完全阻塞,因此建議為每個虛擬機器建立單獨的儲存庫,原則上這不是問題,幸運的是它們創建起來非常容易。
-
首先,我嘗試在所有虛擬機器(如 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