通過提供底層存儲的單一視圖和暴露自動化API,StorageOS致力于提供靈活的容器存儲。
StorageOS是一個虛擬層,提供統一的可用存儲層視圖。該視圖可作為卷(volume)來訪問。StorageOS以容器的形式運行,并用一個Docker卷插件來訪問卷。也可以在容器外部直接訪問卷。底層存儲可以跨越許多運行StorageOS的底層容器。為了解該方案背后更多的技術信息,InfoQ聯系了StorageOS的創始人兼CTO Alex Chircop。據Chircop介紹,StorageOS"可以通過單一層來訪問后端的不同存儲類型。虛擬化引擎目前支持物理和虛擬磁盤。我們正計劃支持對象存儲(如S3)。"
分布式存儲系統必須處理容錯和延遲。為了實現容錯,Chircop說,"存儲池使用糾刪碼(erasure coding)和副本來做保護。節點內使用糾刪碼以應對磁盤故障,跨節點使用副本以應對節點故障。"
StorageOS卷可以跨多主機,因此它們被創建在有實例化容器的節點上,以減少延遲。Chircop說,通過使用固態硬盤感知的布局(layout)并減少算法中的寫入放大(write amplification),該軟件針對固態硬盤進行了優化。寫入放大是寫入固態硬盤時遇到的問題。寫入放大發生的原因包括重讀已經寫入的數據,更新已經寫入的數據和作為重寫過程的一部分寫入新的位置。固態硬盤在這里還包括NVMe設備,NVMe是一種基于PCI Express總線的規范,用于訪問諸如固態硬盤的非易失性存儲介質。
無狀態應用比有狀態應用更適合容器,因為后者需要持久性存儲。現有的存儲架構不適合自動化。StorageOS的既定目標之一是在操作方面與容器環境實現相同的靈活性。例如,StorageOS Docker插件即時提供存儲,并直接與API和控制面板集成。"docker run"命令可以在啟動指定容器的過程中調配和加載存儲。StorageOS還計劃與Kubernetes集成。
標簽功能可以更好地與編排流水線集成。標簽可以指示位置、特定應用以及像QA環境或模擬(staging)環境。使用標簽標記一個卷就將激活該功能。
Docker最近收購了Infinit,這是一家擁有可移植的分布式文件系統和存儲層的初創公司。StorageOS與他們的產品有什么不同? 聽聽Chircop怎么說:
企業中的一個問題是缺乏持久性的容器存儲。對用戶來說,Docker所倡導的有狀態分布式存儲是一個容易的起點,很快客戶就會面對企業級的持久性容器存儲需求。Infinit具有分布式文件系統,而數據庫和消息隊列需要快速的和確定的性能以及一致性保證,這些都是StorageOS體系結構的關鍵特性。
StorageOS還可以與公有云(如AWS)集成。由于被部署為容器,它可以安裝在任何能夠運行容器的平臺上。還可以啟用加密以滿足數據隱私的要求。
查看英文原文 : StorageOS Aims to Improve Stateful Container Storage