從裸機到雲端:OpenStack Cinder 介紹

Auto Draft

今天我們要來介紹最後一項 OpenStack 元件,Cinder。Cinder 也是常見 OpenStack 部屬會提供的服務,也是 OpenStack 核心專案之一,我們就來一起看看 Cinder 提供了什麼服務以及其架構長得怎麼樣。

Cinder 是什麼?

官方文件中是這麼說的:

Cinder 是 OpenStack Block Storage 服務,用於為 Nova 虛擬機、Ironic baremetal、container 等提供 volume。

你可以把 Cinder 想像成一個提供硬碟的服務,他提供了一個 API 讓你可以在 Instance 上掛載硬碟,以提供儲存空間。除了單純的提供區塊式儲存到硬碟外,Cinder 額外的也提供了 volume snapshots 跟備份的功能,同時也能利用 volume type 管理不同的後端或儲存空間。

Cinder 本身設計的目標是:

  • 基於 microservice 的架構:讓開發者能夠快速添加新功能
  • 高度可用:可擴展到非常高的工作負載
  • 容錯:隔離的 process 避免連動式的故障
  • Recoverable:Admin 可以很容易的發現,調整,解決問題
  • 開放標準:成為社區驅動的 API 的參考實作

Cinder 架構

Cinder 包含以下幾個元件:

cinder-api

負責提供最前端的 API 處理,並且將使用者請求送往 cinder-volume

cinder-volume

Cinder 的核心元件,直接與 cinder-api 以及 cinder-scheduler 等 process 透過 message queue 互動。 cinder-volume 負責處理發送到 cinder-api 的讀寫請求來維護 cinder 的狀態。 它可以透過不同的 driver 與各種存儲 backend 串接。

cinder-scheduler daemon

與 nova-scheduler 類似,負責選擇最適合提供 volume 的 storage provider。

cinder-backup daemon

cinder-backup daemon 負責提供 cinder volume 的備份服務。跟 cinder-volume 類似,它也可以透過不同的 driver 與各種存儲 backend 串接。

Messaging queue

Cinder 服務內部各元件溝通都是透過 message queue,通常是 RabbitMQ。

小結

本篇介紹了 Cinder,也就是目前預計會介紹的最後一個 OpenStack 元件。其提供的是 VM persistant volume storage 的服務,雖然並非 OpenStack 要提供 VM 服務中必須的元件,但是大部分 OpenStack 部屬都會提供 Cinder 服務。而除了能夠提供 OpenStack 相關服務區塊儲存外,cinder 也可以透過其 CSI driver 為 K8S 提供 persistant volume。


Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.