TOS 2023 Paper?論文閱讀筆記整理
問題
傳統桌面和服務器應用程序向云的遷移給底層云存儲帶來了高性能、高可靠性和低成本的挑戰。由于這些傳統應用程序的I/O模式和一致性要求,與采用特定編程模型和范式(如MapReduce[22]和RDD[52])的云原生應用程序不同。使得遷移的應用程序難以享受云存儲的高性能。盡管最近的研究在很大程度上提高了云卷服務的吞吐量,例如:利用磁盤并行性[35],但以低成本高性能滿足云服務要求仍然具有挑戰性。
本文方法
根據I/O跟蹤分析表明,I/O模式具有以下特征:
-
小型I/O在應用程序中占主導地位,因此塊存儲的性能在很大程度上取決于小型讀/寫的性能,因此固態驅動器(SDD)比硬盤驅動器(HDD)更可取。但企業級固態硬盤的每比特價格約為HDD的5-10倍[4],而且固態硬盤的能源成本遠高于HDD了[42]。這使得大部分客戶將所有副本存儲在SSD上的成本過高。
-
讀取和寫入都具有有限的局部性,表明使用SSD作為緩存層在加速應用程序的I/O方面是無效的,因為未命中率很高,而且SSD-HDD的性能差距很大。與RAMCloud[41]中的情況類似,考慮到高端SSD在延遲和IOPS方面都比HDD快三個數量級,即使1%的緩存未命中率也可能使平均I/O性能降低10倍。此外,使用緩存對改善尾延遲幾乎沒有幫助,這對于云存儲保證服務級別協議(SLA)非常重要[23]。額外的緩存層也使塊存儲容易出現一致性問題[51],例如由于緩存配置錯誤導致Facebook服務嚴重中斷[13]。
本文提出了分布式SSD-HDD混合存儲結構 Ursa,將主副本存儲在SSD上,將備份副本復制到HDD上,不使用SSD作為緩存層。
-
通過自適應日志,將小型備份隨機寫入轉換為日志追加,然后異步重放并合并到備份HDD,從而彌補主SSD和備份HDD之間的性能差距。
-
為了提高效率,大型順序寫入直接在備份HDD上執行(繞過日志)。
-
日志附加(用于小型備份寫入)和副本復制(用于大型備份寫入)的組合使復制和恢復變得復雜。為此設計了高效的范圍優化合并樹(ROMT)來索引日志,支持快速日志查詢,將連續范圍的鍵組合為單個復合鍵{offset,length},用于(1)過時日志附加的快速無效;(2)故障恢復期間日志數據的快速讀取。
-
在生產環境中,塊存儲必須為虛擬磁盤的I/O性能提供高可擴展性。因此擴展磁盤并行性優化,系統地利用了Ursa中的多級并行性,主要包括(1)磁盤上的并行I/O;(2)盤間分條、無序執行和無序完成;(3)在網絡流水線中,提高Ursa的IOPS和吞吐量。
-
復雜的SSD-HDD混合結構使得難以保證強一致性[26]并提供高可用性。因此設計了Ursa的復制協議,以滿足遷移的應用程序的強一致性要求。還設計了功能豐富的控制器和高效的機制,用于在線組件升級和并行開發
實驗表明,Ursa在其混合模式下實現了與僅SSD模式(將所有副本存儲在SSD上)幾乎相同的性能,并且在僅SSD模式下也優于其他塊存儲(Ceph和Sheepdog),同時實現了更高的CPU效率(IOPS和每核吞吐量)。
總結
針對生產環境中的云服務,如何在不影響性能的情況下降低成本。本文提出了分布式SSD-HDD混合存儲結構Ursa,將主副本存儲在SSD上,將備份副本復制到HDD上,不使用SSD作為緩存層。包括以下技術:(1)通過自適應日志,將小型隨機寫入轉換為日志追加,異步合并到HDD,從而彌補SSD和HDD之間的性能差距。(2)為了提高效率,大型順序寫入直接在HDD上執行(繞過日志)。(3)設計了高效的范圍優化合并樹(ROMT)來索引日志,將連續范圍的鍵組合為單個復合鍵{offset,length},支持快速日志查詢。(4)對磁盤并行性優化,利用Ursa中的多級并行性,包括:磁盤上的并行I/O;盤間分條、無序執行和無序完成;在網絡流水線中,提高IOPS和吞吐量。(5)設計Ursa的復制協議,以滿足強一致性要求。還設計了功能豐富的控制器和高效的機制,用于在線組件升級和并行開發。