<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    基于索引的按需下載容器鏡像格式

    VSole2021-10-25 08:07:10

    容器因其部署方便、輕量化等特點正在成為云平臺的基礎架構。然而粗粒度的層級共享使得鏡像中存在大量的重復數據和無用數據,不僅增加了用戶端容器部署過程中下載鏡像的耗時,也加重了倉庫端存放鏡像的負擔。為了加快鏡像下載并減小倉庫體積,我們提出了一種按需下載鏡像Gear。Gear將傳統鏡像分為索引和文件兩部分,并將索引部分置于與容器架構兼容的單層鏡像中。容器部署過程中用戶端只需下載包含索引的鏡像,并按索引實時下載容器運行所需文件即可。另外,Gear能夠進行文件級數據共享,不僅去除了倉庫端的冗余數據,也避免了用戶端重復下載相同文件。和現有的容器鏡像格式相比,Gear能夠將容器的部署速度提升5倍。另外,Gear還能夠為鏡像倉庫節約一半的空間。

    該成果“Gear: Enable Efficient Container Storage and Deployment with a New Image Format”發表在ICDCS 2021(IEEE 41st International Conference on Distributed Computing Systems),是實驗室分布式系統組在容器技術領域的研究成果。

    • 論文鏈接:
    • https://ieeexplore.ieee.org/document/9546503

    背景與動機

    圖1 鏡像與容器化應用全生命周期管理

    容器通過操作系統級虛擬技術和層次化鏡像管理為應用提供相比于虛擬機更輕量級的運行空間和更便捷的部署過程。因此,容器系統及相關應用得到了國內外越來越多的關注,研發和應用發展勢頭迅猛。容器鏡像在整個容器生態中處于核心地位,與容器化應用的整個生命周期息息相關。如圖1所示,開發者將系統文件、依賴包、自身文件等運行應用所需的數據構建成層次化的鏡像,并上傳到鏡像倉庫進行托管。位于不同場景的用戶可以通過簡單的命令行從倉庫下載所需鏡像,并基于鏡像在不同節點運行容器化應用。

    初次部署容器時,用戶需要花費大量時間下載鏡像(平均占據76%的部署時間),造成服務質量下降。隨著容器系統的快速普及和容器化應用的持續更新,單個鏡像的體積和鏡像的總體數量不斷增加。不僅使得容器初次部署時間進一步增加也增大了倉庫端存儲開銷。

    實際生產中,鏡像的層級粗粒度共享和快速迭代使得鏡像中包含大量重復數據和無用數據。然而,運行容器只需訪問鏡像中很小一部分數據。按需下載鏡像應運而生。但是,現有按需下載鏡像缺乏靈活性和兼容性。一方面,現有按需下載方案需要依托特定的網絡文件系統(NFS、CIFS)或虛擬塊設備以實現數據訪問。這些網絡文件系統只能適配POSIX應用,同時缺乏快照、壓縮等特性;而虛擬塊設備無法依據鏡像尺寸調節大小。另一方面,現有實現方案需要對I/O棧進行大量修改,包括設計存儲驅動、部署特定文件系統等。這些復雜改動導致現有方案無法在公有云平臺廣泛部署。此外,現有方案在用戶端缺乏細粒度緩存,鏡像間無法通過充分共享數據來加速下載過程。為此,我們設計了與當前容器架構兼容的按需下載鏡像,并設計細粒度緩存加速鏡像下載。

    設計與實現

    基于索引的按需下載鏡像

    圖2 傳統鏡像與Gear鏡像轉換

    為了實現與現有架構兼容的按需下載鏡像,我們提出了基于索引的容器鏡像格式Gear。如圖2所示,Gear鏡像將傳統鏡像分解為Gear索引和Gear文件兩部分。Gear索引包含于一個單層的傳統鏡像中,負責記錄對應傳統鏡像的文件系統結構,并將對應路徑的文件被替換為文件的索引值(數據指紋)。由于Gear索引移除了常規文件,所以體積很小。Gear文件為分離出的鏡像內文件,我們用這些文件的數據指紋為這些文件命名以保證Gear索引可以基于數據指紋找到對應文件。使用Gear鏡像部署容器時,用戶可以使用原生命令下載包含Gear索引的單層鏡像,并基于現有I/O棧訪問Gear索引,Gear索引根據數據指紋從倉庫端按需下載對應的Gear文件。倉庫端將Gear索引和Gear文件分開存儲。Gear索引存放在一個基于原始鏡像倉庫構建的索引倉庫。Gear文件被統一存放在一個對象存儲池中,存儲池只存儲數據指紋不同的文件。由于數據指紋能夠唯一標識文件,存儲池中不存在重復文件,倉庫規模顯著下降。

    按需下載鏡像的用戶端存儲

    圖3 Gear的用戶端存儲架構

    如圖3所示,用戶端Gear鏡像的存儲系統分為三層。最底層的共享緩存負責存儲所有鏡像的Gear文件,文件通過數據指紋唯一標識。中間層負責存儲Gear索引。由于用戶可以基于Gear索引和Gear文件同時啟動多個容器,中間層的Gear索引和底層的Gear文件均為只讀格式。為了對Gear鏡像進行更新,Gear在最上層存儲為每個容器創建一個文件夾(/diff)用于記載每個容器各自的文件修改。需要提交新版本Gear鏡像時,首先將對應文件夾中的文件元數據和原始Gear索引結合生成新版本Gear索引。然后將新版本文件以其數據指紋命名,并存入最底層共享存儲。最后將新版本Gear索引和倉庫端缺失的Gear文件上傳至鏡像倉庫。

    性能測評

    性能測評中,我們分別使用傳統鏡像和Gear鏡像分別部署各類鏡像。在高帶寬(1000Mbps)和低帶寬(5Mbps)條件下,Gear鏡像平均能夠將容器的部署速度提升1.6倍和5倍。另外,我們在本地分別構建了一個傳統鏡像倉庫和一個Gear鏡像倉庫。兩個倉庫均包含DockerHub中TOP50鏡像的最近20個版本。相比于傳統鏡像倉庫,Gear鏡像倉庫的體積縮小了54%。

    圖4 實驗結果

    鏡像索引
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    邊緣計算場景中由于節點帶寬受限,采用現有架構部署傳統的標準容器鏡像效果不佳,為此我們提出了一種面向邊緣計算的容器鏡像構建方法。
    速收藏!企業漏洞掃描工具大全!
    容器鏡像包含大量重復和無用數據,導致容器部署因需要下載大尺寸鏡像而耗時較長,影響服務質量。為此,提出了一種基于索引結構且與現有容器架構兼容的按需下載鏡像。實驗顯示,該鏡像格式相比傳統鏡像格式能夠將容器的部署速度提升5倍,倉庫規模縮小54%。
    5月8日消息,外媒TechCrunch獲悉,英國外包巨頭Capita大量數據暴露在互聯網上,持續時間長達7年。此前數周前,該公司還承認發生了一起可能影響客戶的數據泄露事件。
    Kaiser Permanente近期披露數據泄露事件,近7萬人健康數據一覽無余。
    安全研究員發現keep、pyanxdns、api-res-py等python模塊突然引入了密碼竊取模塊,仔細一看竟是開發者疏漏。
    Bughound是一款開源的靜態代碼分析工具,可以幫助廣大研究人員分析自己的代碼,并將結果發送至Elasticsearch和Kibana,以更好地審查代碼中潛在的安全漏洞。
    漏洞名為batsignal,是macOS中的一個本地提權漏洞,該漏洞允許研究人員在Spotlight(聚焦搜索功能)中將非特權用戶(包括訪客用戶在內)提升為root權限。
    @真琴師傅基于Windows打造的一個滲透測試套件工具包,非常不錯的一個項目,有喜歡的可以點個Star支持一下,有問題也可以提交Issues反饋!- 基于Win10 Workstation 21H2 x64 MSDN原版鏡像制作;
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类