OpenStack & Ceph Kilo 版解析
自從 OpenStack H 版開始,為 Nova 寫了第一個 Ceph RBD 驅動至今已有兩年,在上個月結束的 OpenStack Summit 上 Se?bastien Han 和 Josh Durgin 這兩個老搭檔又總結了一次 J 版 OpenStack 與 Ceph 的進展,Se?bastien Han 是個活躍的 Ceph 生態系統開發者,提供了諸如 Ceph-Docker , Ceph-Ansible 這些項目,同時本身也是 OpenStack 運維開發。而 Josh Durgin 是 Ceph 負責 RBD 的 CTL,也是 Cinder/Ceph RBD 的開發者。本文也會主要依據他們的 Topic 并且結合本人對 OpenStack & Ceph 的理解闡述。
Kilo 進展
其實 OpenStack 跟 Ceph 的大部分現在做了的和至今沒完成的工作都在 13 年的 blog 中提到了,如 OpenStack H版與 Ceph 整合的現狀 ,14 年又老生常談的話題 OpenStack I 版與 Ceph 的現狀 。那么我們這次 Kilo Release 到底哪些事:
- 用 RBD Snapshot 取代 QEMU Snapshot 成為 Nova Root Image 快照的實現方式
- Devstack 現在支持 Ceph Backend了,也就是現在裝 Ceph & OpenStack 在單機上非常容易了
- OpenStack & Ceph CI 完成,也就是 OpenStack 上所有 Ceph 相關代碼開始有整合測試了
- Ceilometer 現在能支持對 RadosGW 的監控數據收集了
- Ceilometer integration for RG </ol>
- Volume Migration 的 RBD 支持
- 支持對于 RBD 已存在 Volume/Snapshot 的導入導出
- Multi-attach for RBD
- Ceph Backup 增強等等 </ol>
- Readahead: Hammer 支持 RBD 卷級預讀,通過配置 RBD 選項可以控制預讀效果。對于在 Boot 階段的 VM 會有更好的性能收益
- Copy-on-Read: 默認 RBD 支持 Copy-on-Write 的方式去實現 Clone,Ubuntu kylin 實現了 Copy-on-Read 的方式去使得 Clone 卷能夠在讀時就去完成 copy 操作
- ObjectMap: 這是一個我們在 H 版 CDS 提的 librbd: shared flag, object map ,在完成 Draft 以后由 Jason 完善。它主要使得一個卷可以被設為單客戶端模式,使得 Librbd 能進行相應特化使得性能提高,比如如果使用 ObjectMap 的卷,在克隆發生后幾乎不會有任何性能損耗。在相對于之前沒有 ObjectMap 特性,每次克隆如果不做 Copy-on-Write,每次讀操作會隨著克隆鏈增加性能幾何級下降 </ol>
- Per-image option: 這個是本人在 Ceph I 版實現的特性 Add Metadata Mechanism To LibRBD ,這個特性使得區別于之前使用 ceph.conf 控制 RBD 卷選項的方式,你能夠通過 rbd metadata 的方式去設置每個卷的選項,如 cache 大小,預讀大小等等。非常類似于 OpenStack Glance/Cinder 對于 Metadata 的設置和使用
- Fast Diff: 通過 ObjectMap 可以完成粗粒度(對象級)的實際空間占用,也使得云提供商了解每個卷真實數據占用量變得可能 </ol>
總而言之,看上去實際上就推動了 RBD Snapshot 和 Ceilometer 對 RadosGW 的支持,至于之前文章提到的:
仍然會成為 Liberty 的 Blueprint 的一部分。
另外還有一些 RBD 能夠收益的來自 OpenStack 通用的進展,比如 fsfreeze 特性。使得在打 Snapshot 時通過 QemuGuestAgent 發出 fsfreeze 指令凍結 VM 的操作,獲得一個一致安全的快照。這對于云平臺來說幫助很大,解決熱快照的實用性問題。
從 OpenStack 看 Ceph 進展
雖然這個站點也會寫一些 Ceph 開發和特性的進展和解析,但是大多數 OpenStack 用戶并不關心 Ceph 本身,或者不太了解 Ceph 這些進展哪些能被 OpenStacker 用起來,下面就討論一下在 OpenStack Kilo 期間 Ceph 特別是 Hammer 版本對于 OpenStack 用戶會有哪些增益。
首先是三個性能相關的特性:
另外是幾個有利于云提供商的特性:
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/