OpenStack & Ceph Kilo 版解析

dyydp 9年前發布 | 23K 次閱讀 OpenStack

自從 OpenStack H 版開始,為 Nova 寫了第一個 Ceph RBD 驅動至今已有兩年,在上個月結束的 OpenStack Summit 上 Se?bastien Han 和 Josh Durgin 這兩個老搭檔又總結了一次 J 版 OpenStack 與 Ceph 的進展,Se?bastien Han 是個活躍的 Ceph 生態系統開發者,提供了諸如 Ceph-DockerCeph-Ansible 這些項目,同時本身也是 OpenStack 運維開發。而 Josh Durgin 是 Ceph 負責 RBD 的 CTL,也是 Cinder/Ceph RBD 的開發者。本文也會主要依據他們的 Topic 并且結合本人對 OpenStack & Ceph 的理解闡述。

OpenStack & Ceph Kilo 版解析

Kilo 進展

其實 OpenStack 跟 Ceph 的大部分現在做了的和至今沒完成的工作都在 13 年的 blog 中提到了,如 OpenStack H版與 Ceph 整合的現狀 ,14 年又老生常談的話題 OpenStack I 版與 Ceph 的現狀 。那么我們這次 Kilo Release 到底哪些事:

  1. 用 RBD Snapshot 取代 QEMU Snapshot 成為 Nova Root Image 快照的實現方式
  2. Devstack 現在支持 Ceph Backend了,也就是現在裝 Ceph & OpenStack 在單機上非常容易了
  3. OpenStack & Ceph CI 完成,也就是 OpenStack 上所有 Ceph 相關代碼開始有整合測試了
  4. Ceilometer 現在能支持對 RadosGW 的監控數據收集了
  5. Ceilometer integration for RG
  6. </ol>

    總而言之,看上去實際上就推動了 RBD Snapshot 和 Ceilometer 對 RadosGW 的支持,至于之前文章提到的:

    1. Volume Migration 的 RBD 支持
    2. 支持對于 RBD 已存在 Volume/Snapshot 的導入導出
    3. Multi-attach for RBD
    4. Ceph Backup 增強等等
    5. </ol>

      仍然會成為 Liberty 的 Blueprint 的一部分。

      另外還有一些 RBD 能夠收益的來自 OpenStack 通用的進展,比如 fsfreeze 特性。使得在打 Snapshot 時通過 QemuGuestAgent 發出 fsfreeze 指令凍結 VM 的操作,獲得一個一致安全的快照。這對于云平臺來說幫助很大,解決熱快照的實用性問題。

      從 OpenStack 看 Ceph 進展

      雖然這個站點也會寫一些 Ceph 開發和特性的進展和解析,但是大多數 OpenStack 用戶并不關心 Ceph 本身,或者不太了解 Ceph 這些進展哪些能被 OpenStacker 用起來,下面就討論一下在 OpenStack Kilo 期間 Ceph 特別是 Hammer 版本對于 OpenStack 用戶會有哪些增益。

      首先是三個性能相關的特性:

      1. Readahead: Hammer 支持 RBD 卷級預讀,通過配置 RBD 選項可以控制預讀效果。對于在 Boot 階段的 VM 會有更好的性能收益
      2. Copy-on-Read: 默認 RBD 支持 Copy-on-Write 的方式去實現 Clone,Ubuntu kylin 實現了 Copy-on-Read 的方式去使得 Clone 卷能夠在讀時就去完成 copy 操作
      3. ObjectMap: 這是一個我們在 H 版 CDS 提的 librbd: shared flag, object map ,在完成 Draft 以后由 Jason 完善。它主要使得一個卷可以被設為單客戶端模式,使得 Librbd 能進行相應特化使得性能提高,比如如果使用 ObjectMap 的卷,在克隆發生后幾乎不會有任何性能損耗。在相對于之前沒有 ObjectMap 特性,每次克隆如果不做 Copy-on-Write,每次讀操作會隨著克隆鏈增加性能幾何級下降
      4. </ol>

        另外是幾個有利于云提供商的特性:

        1. Per-image option: 這個是本人在 Ceph I 版實現的特性 Add Metadata Mechanism To LibRBD ,這個特性使得區別于之前使用 ceph.conf 控制 RBD 卷選項的方式,你能夠通過 rbd metadata 的方式去設置每個卷的選項,如 cache 大小,預讀大小等等。非常類似于 OpenStack Glance/Cinder 對于 Metadata 的設置和使用
        2. Fast Diff: 通過 ObjectMap 可以完成粗粒度(對象級)的實際空間占用,也使得云提供商了解每個卷真實數據占用量變得可能
        3. </ol>

          OpenStack 配置最佳實踐

          Ceph.conf :

          [client]
          rbd cache = true
          rbd cache writethrough until flush = true
          rbd concurrent management ops = 20
          admin socket = /var/run/ceph/$cluster-$type.$id.$pid.$cctid.asok
          log file = {{ rbd_client_log_file }}

          GLANCE

          Disable local cache: s/flavor = keystone+cachemanagement/flavor = keystone/
          Expose images URL: show_image_direct_url = T
          w_scsi_model=virtio-scsi # for discard and perf
          hw_disk_bus=scsi

          Nova:

          hw_disk_discard = unmap # enable discard support (be careful of perf)
          inject_password = false # disable password injection
          inject_key = false # disable key injection
          inject_partition = -2 # disable partition injection
          disk_cachemodes = "network=writeback" # make QEMU aware so caching works
          live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,
          VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"

          Cinder:

          glance_api_version = 2
          </div> 原文 http://www.wzxue.com/openstack-ceph-kilo/

           本文由用戶 dyydp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
           轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
           本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!