如何使用ceph當作cinder backend storage

在ceph node底下
# 建立ceph pool 給cinder使用,pool名稱為volumes $ sudo ceph osd pool create volumes 128

建立一個user為client.cinder並對pool volumes相關權限設定,產生一個keyring file
$ sudo ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' -o /etc/ceph/ceph.client.cinder.keyring

# 複製ceph.conf與cinder.keyring到openstack controller上
$ scp /etc/ceph/ceph.conf root@openstack node ip:/etc/ceph

$ scp /etc/ceph/ceph.client.glance.keyring root@openstack node ip:/etc/ceph

# 複製client.cinder的key複製到controller /tmp/client.cinder.key
$ ceph auth get-key client.cinder | ssh openstack node ip tee /tmp/client.cinder.key


添加一个secret key到libvirt
$ uuidgen d65bc749-e160-44d3-a903-9c50291b4293

$ cat > secret.xml <<EOF <secret ephemeral='no' private='no'> <uuid>d65bc749-e160-44d3-a903-9c50291b4293</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret> EOF
$ virsh secret-define --file secret.xml Secret d65bc749-e160-44d3-a903-9c50291b4293 created
$ virsh secret-set-value --secret d65bc749-e160-44d3-a903-9c50291b4293 $(cat /tmp/client.cinder.key)

# 查詢密鑰
$ virsh secret-list

 UUID                                  Usage
-------------------------------------------------------------
 d65bc749-e160-44d3-a903-9c50291b4293  ceph client.cinder secret


我們這邊的cinder服務是跑在openstack controller上
# 在opentack controller上的ceph.conf新增cinder的setion
$ vim /etc/ceph/ceph.conf

[client.cinder]
keyring = /etc/ceph/ceph.client.cinder.keyring
# 修改權限
$ chmod 0640 /etc/ceph/ceph.client.cinder.keyring
$ chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

# 修改/etc/glance/cinder.conf $ sudo cp /etc/cinder/cinder-api.conf /etc/cinder/cinder.conf.bak $ sudo vim /etc/glance/cinder.conf

# 修改或是新增以下參數
[DEFAULT]
enabled_backends = rbd


[rbd]
volume_backend_name = rbd
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = cinder
rbd_secret_uuid = d65bc749-e160-44d3-a903-9c50291b4293

# 重啟 cinder服務
$ restart cinder-volume
$ restart cinder-api
$ restart cinder-scheduler

驗證是否連接ceph成功
$ cinder list
參考來源:

留言

這個網誌中的熱門文章

Python - 計算特定目錄底下的檔案以及目錄數量

PHP - 產生qrcode

devstack安裝all in one openstack(pike)