
我希望開始磁帶備份方案,並希望以足夠的方式保持資料流向磁帶驅動器(持續 120+MB 的目標),但無法弄清楚如何在沒有空閒時空閒的專用來源驅動器/陣列的情況下實現這一點寫磁帶。我們特定驅動器的文件提到沒有最低吞吐量要求。
環境
- Linux Debian 使用 mt 和 tar 寫入磁帶並備份帶有恢復記錄的 RAR 存檔,每個大小約為 1GB-300GB
- Quantum TC-42BN 磁帶機上的 LTO-4 磁帶透過 SAS 透過外部 SFF 電纜
- 伺服器僅用於檔案備份,沒有網路服務或檔案服務。
- MD RAID 陣列,資料在白天/晚上間歇性地突然讀取/寫入。
如果在磁帶寫入期間來源陣列有大量讀取/寫入(來自計劃的備份),則磁帶的吞吐量將急劇下降,即使是暫時的。因此,一些問題圍繞著來源陣列/磁帶寫入吞吐量:
- 我假設在磁帶寫入期間來源上的吞吐量持續下降到 10-20MB/s 以下(或更少)會出現問題?
- 我是否需要確保來源沒有安排備份?基本上至少 2 個陣列;一種用於備份,一種用於存檔和磁帶寫入?
- 是否有一個磁碟機/陣列的 QOS 可以優先考慮磁帶寫入?
- LTO-4 磁帶驅動器節流,那麼 LTO-4 是否有一個共同的吞吐量下限需要維持,或者每個驅動器的吞吐量限制是否有很大差異? 同樣,文件提到了最大設計速度和“變速傳輸”,但沒有提及如何變化。
- 我是否在這個源吞吐量方程中遺漏了一些東西,或者有毫無根據的擔憂?
更新:
我決定透過一個 600GB 歸檔作業以大約 30MB/s 的速度從陣列中持續讀取單個 I/O 流,同時將 tar 從具有消費級 SATA 的 4 驅動器 RAID 6 寫入磁帶,從而最大限度地減輕負擔。透過聆聽驅動器的聲音,磁帶確實減慢了速度,但似乎沒有耗盡數據或擦鞋。這告訴我不要指望在完整計劃備份期間事情能夠保持不變我們的硬體配置但它可以在寫入磁帶時處理較不繁重的 I/O 工作。
值得注意的是,LOT4 磁帶必須執行 56 次端對端傳遞,以便有效地寫入約 14GB 的區塊,然後停止幾秒鐘以減慢速度,然後「走」另一個方向。我認為這有助於使驅動器在較低的吞吐量下“饋送”數據,就像我一樣預讀和非同步寫入設定在stinit.def。
另一個注意事項是讀取「dd if=/dev/st0 of=/dev/null」僅產生 107MB/s 的結果。我認為這是現實世界的最大有效吞吐量這驅動器而不是 120 MB/s。 此磁碟機目前位於專用 SAS PCIe HBA 上,未安裝其他 PCIe 卡
同時,我設定了一個 1TB RAID0 作為 Disk2Tape 緩衝區,並且必須在伺服器上新增另一個磁碟才能使其可行。
我仍然希望找到一種方法來為磁帶驅動器執行某種 QOS,並將寫入磁帶設置為最高優先級,這樣我們就可以簡化陣列並降低寄生硬體成本,但與此同時,如果我想確保連續寫入,無論什麼計劃作業命中陣列,我都沒有找到一種方法來避免擁有專用的 disk2tape 緩衝區。
答案1
這緩衝區是一個小而方便的工具,可以幫助您maintain sustained data flow to the tape drive
。它在大多數 Linux 發行版上都可用。
mbuffer - 緩衝 I/O 操作並顯示吞吐率。它是多線程的,支援網路連接,並提供比標準緩衝區更多的選項。
動態多執行緒壓縮的用法範例:
tar cvf - /backupdir | 備份目錄lbzip2 | mbuffer -m 4G -L -P 80 > /dev/st0
- 開始將檔案加入 tar 檔案存檔中
- (可選)使用 lbzip2 壓縮它以使用所有 CPU 核心
- 開始填入記憶體緩衝區
- 一旦填充到 80%,開始向磁帶機發送數據
緩衝區參數解釋:
-m 4
4GB 記憶體緩衝區大小。如果需要或可用,請使用較大的緩衝區。-L
鎖定在記憶體中(可選)-P 80
緩衝區填滿 80% 後開始寫入磁帶。沒有必要輸入 100,因為磁帶機需要一些時間才能開始寫入,到那時它可能會填滿 100%。
在此範例中,一旦緩衝區填滿容量的 80%,它將開始向磁帶發送數據,並且 mbuffer 將繼續接收存檔流。
如果歸檔過程很慢,且 mbuffer 接收資料的速度不夠快,無法跟上磁帶驅動器的速度,那麼一旦達到 0%,它將停止向磁帶驅動器發送資料。一旦記憶體緩衝區填滿 80%,它將開始向磁帶驅動器發送數據,並且記錄將以全速繼續。
這樣,磁帶的「擦鞋」就減少到了最低限度,磁帶驅動器將始終以維持流所需的最大速度獲取資料。
您也可以反向使用 mbuffer 從磁帶驅動器讀取備份資料並將流儲存到某些較慢的媒體或透過網路發送。
答案2
這我找到的手冊列出了從 30.5 到 120 MB/s 的可變速度,增量約為 7 MB/s。
此外,LTO 驅動器使用合理大小的緩衝區來平衡資料流並提供速度調整指示器,因此除非讀取速度變化很大或非常低,否則回拉應該是最小的。
對於相當不錯的陣列和大檔案上的數據,120 MB/s 甚至不應該是一個大問題(除非檔案系統高度碎片化)。我們的磁帶緩衝區在 RAID 0 中使用兩個(慢速)4 TB 驅動器,可以支援大約 100 兆位元組的資料。 270 MB/s,但在寫入磁帶時我們不會寫入緩衝區。