Ceph V9.2.0版本(代號INFERNALIS)已發布

jopen 9年前發布 | 13K 次閱讀 Ceph

本文由Ceph中國社區-AmosG翻譯,Thomas校稿

英文出處:官網releases欄 

Ceph V9.2.0版本(代號INFERNALIS)已發布

此次的主發版本將是Ceph下一個穩定系列的基石。自Hammer v0.94.x發布后,我們做了重大修改,這個更新過程很不簡單。請仔細閱讀以下的發行說明。

自Hammer版本以來所做的重要修改

  • General

    • Ceph的守護進程現已通過systemd來管理(Ubuntu Trusty是個例外,仍沿用upstart來管理)。

    • Ceph的守護進程以ceph用戶而非root運行。

    • 在Red Hat的發行版本中,也存在SeLinux Policy。

  • RADOS

    • RADOS的cache層現在可通過代理將寫操作發送到持久層(base tier),允許直接處理寫操作無需先強制將對象移至cache層。

    • 對SHEC 糾刪碼的支持已不再標記為實驗性的。SHEC通過消耗一些額外的存儲空間來換取更快的修復速度。

    • 為(優化)客戶端IO、數據恢復、數據清理、快照裁剪提供統一的隊列。

    • 對低層級的修復工具(ceph-objectstore-tool)做了許多改進。

    • 為方便使用新的存儲后端(如NewStore),內部ObjectStore API已做了重大的修改。

  • RGW

    • Swift API現已支持對象過期機制

    • Swift API的兼容性得到了很大的改善

  • RBD

    • 通過rbd du命令顯示實際的使用(容量)信息(當object-map處于enabled狀態時該操作很快)

    • 對object-map特性的穩定性做了許多改善。

    • object-map和exclusive-lock特性可動態的開啟或者關閉。

    • 現在你可以依據個體鏡像(individual image)來存儲用戶的元數據并設置持久的librbd選項。

    • 新的深度扁平(deep-flatten)特性允許對一個克隆及其所有的快照進行扁平化處理(在此之前快照不能被扁平化。)

    • 更快的export-diff命令(使用了aio)。另外新增了fast-diff特性。

    • 可通過單位后綴指定-size參數大小(如—size 64G)。

    • 有一個新的rbd status命令,現在可通過該命令來顯示誰打開/映射了某個鏡像。

  • CephFS

    發行版的兼容性

    我們已決定放棄對多個舊的Linux發行版的支持,這樣一來我們就可以轉用更新的編譯器工具鏈(如C++11)。 盡管通過安裝向后兼容的開發工具來在舊版本中生成Ceph還是可能的,但我們不會在ceph.com上為這些發行版生成并發布release版本的安裝包。

    我們現在為以下的版本構建安裝包:

    • 現已可對快照進行重命名操作。

    • 在管理、診斷、檢查和修復工具上已作出了持續的改善。

    • 由未使用inode引發的client端cache狀態的緩存和撤回問題已經得到極大的改善。

    • 32位主機上,ceph-fuse客戶端表現得更好。

  • CentOS 7或后續版本。我們已放棄對CentOS 6的支持(以及RHEL 6其它的衍生系列,如Scientific Linux 6)。

  • Debian Jessie 8.x或后續版本。 Debian Wheezy 7.x的g++對C++11的支持并不完整(而且沒有systemd)。

  • Ubuntu Trusty 14.04或后續版本。 Ubuntu Precise 12.04已不再被支持。

  • Fedora 22或后續版本。

    從Firefly更新至Infernalis

    我們不推薦從Firefly v0.80.z直接更新。雖然直接更新是可能的,但會存在停機時間。我們推薦先更新至Hammer v0.94.4或之后的v0.94.z的發行版,只有這樣之后才能做到線上更新至Infernalis 9.2.z(見下文)。

    若需線下直接從Firefly更新至Infernalis,那么在任一Infernalis OSD允許啟動之前,必須停止所有的Firefly OSD并將其標記為down狀態。通過Infernalis的監控器來保證這種隔離機制,因此,使用類似如下的升級步驟:

  1. 在monitor主機上更新Ceph

  2. 重啟所有的ceph-mon守護進程

  3. 在所有的OSD主機上更新Ceph

  4. 停止所有的ceph-osd守護進程

  5. 將所有的OSD標記為down,所用的執行命令類似于:ceph osd down seq 0 1000

  6. 啟動所有的ceph-osd守護進程

  7. 升級并重啟余下的守護進程(ceph-mds, radosgw)

    從Hammer更新至Infernalis

  • 對于支持systemd(CentOS 7, Fedora, Debian Jessie 8.x, OpenSUSE)的所有Linux發行版,Ceph守護進程現在使用原生的systemd文件而不是遺留的sysvinit腳本來進行管理。比如:

    systemctl start ceph.target # start all daemons

    systemctl status ceph-osd@12 # check status of osd 12

    主流的發行版中,Ubuntu trusty 14.04還未使用systemd。(下一個Ubuntu LTS,16.04,將會使用systemd替換upstart)。

  • 現 在,默認情況下,Ceph守護進程將以ceph用戶和組的身份運行。 在Fedora和Debian(以及其他諸如RHEL/CentOS和Ubuntu等衍生發行版)中ceph用戶被賦予了一個靜態UID。在SUSE中 ceph用戶會在其創建的時候被動態的賦予一個UID。

    如果你的系統中已有ceph用戶,那么升級安裝包的過程中將會出現問題。我們建議在升級前,先移除或重命名已有的ceph用戶或ceph組。

    升級過程中,管理員有兩個選擇:

    1. 將如下行添加至所有主機的ceph.conf中:

      setuser match path = /var/lib/ceph/

      這將使得Ceph的守護進程以root身份運行(即:未放棄特權及切換至ceph用戶),如果Ceph守護進程的數據目錄的所有者仍是root。 新部署的守護進程將以ceph用戶來創建數據目錄,并以非特權運行,但升級的守護進程仍以root身份運行。

    2. 升級過程中修復數據的所有權。這是我們所偏好的選擇,但這需要做更多工作而且耗時。對每個主機,需做如下步驟的操作:

      a.升級ceph安裝包。這就創建了ceph用戶和組。如:

      ceph-deploy install —stable infernalis HOST

    b.停止守護進程

    service ceph stop # fedora, centos, rhel, debian

    stop ceph-all # ubuntu

    c.修復所有權

    chown -R ceph:ceph /var/lib/ceph/$type/$cluster-$id

    d.重啟守護進程

    start ceph-all # ubuntu

    systemctl start ceph.target # debian, centos, fedora, rhel

    可選的,相同的過程可以用單一的守護進程類型來完成,比如:只停止監控器并改變/var/lib/ceph/mon的所有者。

  • 處于實驗階段的KeyValueStore OSD后端所采用的磁盤格式(on-disk format)已發生了變化。如果你所要升級的測試集群中用到了它,那么你需要移除所有用到該后端的OSD。

  • 與 集群滿一樣,當達到存儲池的配額時,librados操作將會無限期阻塞。(而之前的版本中會返回-ENOSPC)。默認狀態下,當一個集群或pool滿 了,就會發生阻塞。如果你的librados應用能優雅地處理ENOSPC或EDQUOT等錯誤,那么你可以通過使用lirados中新的 OPERATION_FULL_TRY標記來獲取錯誤返回碼。

  • librbd的rbd_aio_read和Image::aio_read API方法在成功時將不再返回已讀的字節數,而是在成功時返回0,失敗時返回一個負值。

  • ‘ceph scrub’, ‘ceph compact’ 和 ‘ceph sync force’ 已棄用,取而代之的是 ‘ceph mon scrub’, ‘ceph mon compact’ 和 ‘ceph mon sync force’。

  • ‘ceph mon_metadata’ 現在應寫成 ‘ceph mon metadata’。沒有必要棄用這個命令(自引入以來一直存在)。

  • osdmaptool命令的–dump-json已由–dump json替換。

  • pg ls-by-{pool,primary,osd} 和 pg ls 這兩命令中的recovery參數改為了recovering, 用來包含所列出的pg中正處于recovering狀態的pg。

  • 更多變化內容請詳見發行說明

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