Ceph v12.1.0 Luminous RC released
ceph L 版本終於出了一個候選release版本。來看看都有哪些新功能吧。
本文摘自個人部落格,更多幹貨,也詳見該部落格:夏天的風
v12.1.0 Luminous RC released
這是Luminous的第一個候選版本,下一個長期的穩定release。
Ceph Luminous將是下一個長期的穩定release系列的基礎。 自Kraken(v11.2.z)和jewel(v10.2.z)以來,發生了重大的變化。
Major Changes from Kraken
General
Ceph目前擁有一個簡單的、內建的基於Web的儀表板,用於監控群集狀態。
RADOS
BlueStore
- ceph-osd的新後端儲存BlueStore已經穩定,並且是新建OSD的預設設定。 BlueStore通過直接管理物理磁碟(HDD或SSD)而不使用XFS之類的中間檔案系統來管理儲存在每個OSD上的資料,這提供了更好的效能和特性。
- BlueStore對於通過ceph儲存的資料支援完整資料和元資料校驗。
- BlueStore支援zlib、snappy或LZ4的線上壓縮。(Ceph還支援zstd進行RGW壓縮,但由於效能原因,不推薦BlueStore使用zstd)。
EC pools現在完全支援覆蓋寫,允許它們與RBD和CephFS一起使用。
ceph-mgr
- ceph-mgr是一個新的程序,它是任何Ceph部署所必須的一部分。雖然當ceph-mgr停止時,可以繼續下發IO,但是度量不會重新整理,並且某些與度量相關的請求(如:ceph df)可能會阻塞。為了可靠性,我們建議部署ceph-mgr的多個例項。檢視這裡的註釋
Upgrading
_ - ceph-mgr程序包括一個基於REST的管理API。 API仍然處於實驗階段,並有一定的限制,但未來將成為Ceph基於API管理的基礎。
叢集的總體可擴充套件性有所提高。我們已經成功測試了多達10,000個OSD節點的叢集。
- 目前,每個OSD都具有與其相關聯的裝置類(例如,hdd或ssd),允許CRUSH規則將資料簡單地對映到系統中的裝置的子集。通常不需要手動編寫CRUSH規則或手動編輯CRUSH。
- 現在可以優化CRUSH權重,以保持OSD之間資料的近乎完美的分佈。
- 還有一個新的upmap異常處理機制,允許單個PG移動以實現完美的分佈(這需要luminous的客戶端)。
- 目前每個OSD可以根據後端裝置是HDD還是SSD來調整其預設配置。一般不需要手動調整。
- mclock QoS排隊演算法原型現在是可用的;
- 現在有一種 backoff 機制,可以防止OSD出現對當前不能處理IO的物件或PG的請求出現過載。
- 簡化了OSD更換過程,並且更加魯棒。
- 您可以使用
ceph features
來查詢所有連線的守護程序和客戶端的支援特性和版本。 - 您可以配置你想要最舊的Ceph客戶端版本,並通過
ceph osd set-require-min-compat-client
命令連線到叢集,Ceph將阻止您啟用會破壞與這些客戶端相容性的特性。 - 一些
sleep
的設定,包括osd_recovery_sleep
,osd_snap_trim_sleep
和osd_scrub_sleep
已經被重新實現,並且可以有效地工作。(這些在某些情況下用於解決問題,限制後臺工作。)
RGW:
- ElasticSearch支援的RGW元資料搜尋現在通過RGW本身支援終端使用者請求服務,並且還支援自定義元資料欄位。查詢語言是一組RESTful API,使用者可以通過其元資料來搜尋物件。還添加了允許自定義元資料欄位控制的新API。
- RGW支援動態儲存桶索引分片(bucket index sharding)。隨著桶中的物件數量的增加,RGW將自動重新構建桶索引。不需要使用者干預或桶大小容量規劃。
- RGW引入了上傳物件的伺服器端加密,用於管理加密金鑰的三個選項有:自動加密(僅推薦用於測試設定),客戶提供的類似於Amazon SSE-C規範的金鑰,以及通過使用外部金鑰管理服務 (OpenstackBarbician)類似於Amazon SSE-KMS規範。
- RGW具有初步的類似AWS的儲存桶策略API支援。現在,策略是一種表達一系列新授權概念的方式。未來,這將成為附加身份驗證功能的基礎,例如STS和組策略等。
- RGW通過使用rados名稱空間合併了幾個元資料索引池。
RBD:
- RBD目前通過
rbd create
新的--data-pool
選項,對EC pools有全面穩定的支援。 - RBD映象的rbd-mirror守護程序現在是高可用的。我們建議部署rbd-mirror的多個例項來實現可靠性。
- 在建立叢集期間,不再自動建立預設的
rbd
儲存池。另外,當沒有指定池時,rbd CLI 使用的預設池的名稱可以通過新的rbd default pool = <pool name>
配置選項來覆蓋。 - 通過新的
rbd trash
CLI命令初步支援延遲 image 刪除。images,即使是由克隆主動使用的映象,也可以移動到垃圾桶,並在以後刪除。 - 新的管理池級別的命令
rbd mirror pool promote
和rbd mirror pool demote
可以批量提升/降級一個pool內所有的mirrored images。 - mirroring 現在可以通過
rbd mirroring replay delay = <seconds>
配置選項支援可選擇的配置複製延遲。 - 當物件map 特性啟用時,可以提升丟棄處理功能。
- rbd CLI
import
和copy
命令現在可以檢測稀疏並保留稀疏區域。 - snapshots現在將包含建立時間戳。
CephFS:
- 現在,多個活動的MDS守護程序是穩定的。活動的MDS伺服器的數量可以基於活動的CephFS檔案系統進行上下調整。
- CephFS目錄分片現在是穩定的,並且在新的檔案系統上預設啟用。要使其在現有的檔案系統上啟動,使用命令
ceph fs set<fs_name> allow_dirfrags
。大的或非常繁忙的目錄被分割並(可能)自動分佈在多個MDS守護程序中。 - 在自動負載均衡不需要和無效的情況下,目錄子樹可以明確固定到特定的MDS守護程序。
Miscellaneous:
Debian Stretch現在正在構建版本包。我們現在構建的發行版包括:
- CentOS 7 (x86_64and aarch64)
- Debian 8 Jessie(x86_64)
- Debian 9 Stretch(x86_64)
- Ubuntu 16.04 Xenial(x86_64 and aarch64)
- Ubuntu 14.04Trusty (x86_64)
注意 QA 僅限於 CentOS 和 Ubuntu (xenialand trusty).
CLI 變化
ceph -s
或者ceph status
命令煥然一新。ceph {osd,mds,mon} versions
總結了執行中守護程序的版本。ceph {osd,mds,mon} count-metadata <property>
類似地列出通過ceph {osd,mds,mon} metadata
命令可見的任何其他守護程序元資料。ceph features
總結了連線的客戶端和守護程序的特性和版本。ceph osd require-osd-release <release>
替換舊的require_RELEASE_osds
flags。ceph osd pg-upmap
,ceph osdrm-pg-upmap
,ceph osd pg-upmap-items
,ceph osdrm-pg-upmap-items
可以明確地管理upmap專案。ceph osd getcrushmap
在stderr上返回一個crush map版本號,如果版本匹配,ceph osd setcrushmap [version]
將只會注入更新的crush map。這允許crush map進行離線更新,然後重新注入到群集中,而不用擔心顛覆性的變化(例如,通過其他管理員新新增和修改osds)。ceph osd create
已被ceph osd new
所替換。大多數使用者應該使用像ceph-disk
這樣面向使用者的工具來隱藏這個。ceph osd destroy
將標記一個OSD被損壞,並刪除其cephx和lockbox keys。但其OSD id和CRUS map entry 將保留不動,允許使用最少資料重新平衡的替換裝置重新使用該 ID。ceph osd purge
將從叢集中刪除OSD的所有痕跡,包括其cephx加密金鑰,dm-crypt lockbox祕鑰,OSD ID和crush map entry。ceph osd ls-tree <name>
將在給定的CRUSH名稱(如主機或機架名稱)下輸出OSD id列表。這對於為整個子樹應用更改資訊非常有用。例如,ceph osd down
,ceph osd ls-tree rack1
。ceph osd {add,rm} - {noout,noin,nodown,noup}
允許noout
,nodown
,noin
和noup
標誌應用於指定的的OSD。ceph log last [n]
將輸出叢集日誌的最後n行。ceph mgr dump
將dump出MgrMap,包括當前活動的和任何 standbys 的 ceph-mgr守護程序。ceph osd crush swap-bucket <src> <dest>
將交換層次結構中兩個CRUSH buckets的內容,同時保留buckets的id。這允許替換整個裝置子樹(例如,用新imaged的BlueStore OSD替換整個主機的FileStore OSD),而不會中斷跨越相鄰裝置的資料分佈。ceph osd set-require-min-compat-client <release>
可以配置支援群集的最舊的客戶端版本。其他更改,如CRUSH可調引數,如果違反此設定,將會失敗並顯示錯誤。如果當前連線到叢集的客戶端版本比指定版本還老舊,則更改此設定也將失敗。ceph config-key dump
dump出config-key entries及其內容。(已有的ceph config-key ls
僅dump金鑰名稱,而不是值。)ceph osd set-{full,nearfull,backfillfull}-ratio
將叢集範圍的比例設定為各種全閾值(例如:當叢集拒絕IO時,當叢集警告接近滿時,當OSD延遲PG重新平衡到本身時)。ceph osd reweightn
將在單個命令中指定多個OSD的reweight
值。這相當於一系列ceph osd rewight
命令。ceph crush class {create,rm,ls}
管理新的CRUSH裝置類功能。ceph crush set-device-class <osd> <class>
將為特定裝置設定class。ceph mon feature ls
將列出MonMap中記錄的monitor功能。ceph mon feature set
將設定一個可選功能(這些功能尚未存在)。
Major Changes from Jewel
RADOS
- 我們現在預設使用AsyncMessenger(ms type = async),而不是傳統的SimpleMessenger。 最明顯的區別是,我們現在使用固定大小的執行緒池進行網路連線(而不是使用SimpleMessenger每個socket兩個執行緒)。
- 現在幾乎可以馬上檢測到一些OSD故障,而之前的心跳超時(預設為20秒)必須過期。 當host保持up狀態,但ceph-osd程序不再執行的故障出現時,可以防止IO長時間阻塞。
- 編碼OSDMaps的大小已經減少了。
- 當recovery或rebalancing進行時,OSD現在會靜止scrubbing。
RGW
- RGW現在支援 S3 多部分物件部分複製(multipart object copy-part)API。
- 現在離線resharding一個現有的bucket是可能的。離線resharding bucket當前需要所有到這個指定bucket的IO(特別是writes)是靜止的。(為了自動線上resharding,看上面Luminous的新特性)
- RGW現在支援對物件的資料壓縮。
- Civetweb版本已經更新到1.8。
- 支援Swift靜態網站API(之前的版本就已經支援S3)
- S3 bucket生命週期 API 已新增。注意當前只支援物件到期。
- 支援使用者自定義搜尋過濾器已新增到 LDAP 認證實現中。
- 對NFS版本3的支援已新增到RGW NFS閘道器
- 已經為librgw建立了一個Python繫結
RBD
- rbd-mirror守護程序現在支援從主image到非主image複製動態image特徵更新和image元資料金鑰/值對。
- Image快照的數量可以可選地限制在可配置的最大值。
- rbd Python API現在支援非同步IO操作。
CephFS
- libcephfs函式定義已更改,以啟用適當的uid / gid控制元件。library版本已經增加,以反映介面的變化。
- standby replay MDS守護程式現在在執行刪除的工作負載上消耗更少的記憶體。
- Scrub 現在修復回溯,通常使用
damage ls
發現錯誤。 - 新
pg_files
子命令cephfs-data-scan
可以識別受損壞或丟失的RADOS PG影響的檔案。 - 假陽性警告
failing to respond to cache pressure
已被修復。