複製和擦除編碼技術之間的區別
我希望我在正確的社區中提問,如果沒有,任何建議將不勝感激。
我正在做一份調查報告,我正在對糾刪碼和複製技術進行比較。在這個階段,我正在對它們進行比較,具體參數如下。
我正在嘗試建構的表正在處理區分哪種技術更好的參數:儲存效率、可用性、持久性、編碼時間、故障延遲和重建成本。
- 由於發生故障時複製在讀取性能方面更快,所以當我說複製技術在故障時具有更高的延遲時是否正確?編碼時間也是如此,說複製具有較高的編碼時間是否正確,因為它在寫入時具有更好的性能時間?
- 糾刪碼系統的故障重建成本是否高於複製?它涉及更多的磁碟 I/O 嗎?如果故障是暫時的還是永久性的,情況會有所不同嗎?
- 如果我根據瞬時和永久故障比較所有上述參數,會不會提供更多資訊?
如果我將它們進行如下比較是否正確?
糾刪碼: 更高(耐久性、儲存效率、可用性)和更低(編碼時間、故障延遲、重構成本)
複製:更高(編碼時間、故障延遲、重建成本)和更低*(持久性、儲存效率、可用性)
擦除編碼通常用於 RAID 奇偶校驗條帶,通過奇偶校驗計算和跨多個儲存子系統(或磁碟)條帶化結果數據來實現高可用性。複製,通常稱為鏡像,只是將數據的多個副本寫入多個儲存子系統或磁碟。
擦除編碼會增加所有寫入的延遲,因為傳入的數據必須計算其奇偶校驗並將其寫入磁碟。故障模式下的讀取速度會變慢,因為失去的數據必須通過將非失去數據與奇偶校驗塊進行比較來即時重建。
複製下的寫入通常不會像擦除編碼下那樣受到影響,因為複制的數據可以傳遞到底層儲存而無需奇偶校驗計算,並且通常同時並行寫入兩個或多個磁碟。在故障模式下讀取複製數據的速度通常與在非故障模式下的讀取速度相同,因為數據是從非故障磁碟完整讀取的,不需要執行任何計算來“彌補”失去的數據。
糾刪碼通常比複製需要更少的儲存空間,因為唯一的冗餘數據是奇偶校驗碼,而在複製中所有數據都是重複的。
可以說,SQL Server 儲存系統中最常用的儲存冗餘方案是 RAID-10,它結合了 RAID-1(更常見的複製或鏡像)和沒有奇偶校驗的 RAID-0 條帶化。一個典型的 RAID-10 陣列可能由 8 個磁碟組成,這些磁碟配置為 4 個鏡像對,其中數據在 4 個磁碟對之間進行條帶化。這可以實現快速讀取和快速寫入,同時保持冗餘。只要單個鏡像對中的任何兩個磁碟不會同時發生故障,就可以有多個磁碟發生故障而不會失去數據。
邏輯盤:C:\ | 條帶化:============================= | | | | 鏡像:===== ===== ===== ===== DDDDDDDD iiiiiiiii sssssss 呸呸呸呸 1 2 3 4 5 6 7 8
在 Raid 10 中,只要在同一鏡像對中沒有兩個故障發生,上述設置中最多可能發生 4 個磁碟故障。使用 RAID-50,在條帶級別使用糾刪碼,只要只有一個鏡像對有兩個磁碟同時發生故障,最多 5 個磁碟就會發生故障。例如,Disk1、Disk2、Disk3、Disk5 和 Disk8 可能同時發生故障而不會失去數據。
為了回答您的問題,任何在以非冗餘方式將數據寫入單個磁碟之上產生額外操作的 I/O 都會給系統增加明顯的延遲。一個系統比另一個系統慢還是快在很大程度上取決於實際實施,每個製造商所做的優化因目標受眾而異。
可以肯定地說,奇偶校驗(糾刪碼)速度較慢,需要更多的 I/O,並且每 GB 的成本低於複製。複製的重建速度可能更快,寫入延遲更低,每 GB 成本更高。同樣,這些假設是廣泛的概括,並且取決於因供應商和目標系統而異的實現細節。