如何使用ceph當作nova backend storage

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

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

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

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

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

添加一个secret key到libvirt
$ uuidgen 7ad56fa3-23e2-4d86-ae9e-253326a704f5

$ cat > secret.xml <<EOF <secret ephemeral='no' private='no'> <uuid>7ad56fa3-23e2-4d86-ae9e-253326a704f5</uuid> <usage type='ceph'> <name>client.nova secret</name> </usage> </secret> EOF
$ virsh secret-define --file secret.xml Secret 7ad56fa3-23e2-4d86-ae9e-253326a704f5 created
$ virsh secret-set-value --secret 7ad56fa3-23e2-4d86-ae9e-253326a704f5 $(cat /tmp/client.nova.key)

# 查詢密鑰
$ virsh secret-list

 UUID                                  Usage
-------------------------------------------------------------
d65bc749-e160-44d3-a903-9c50291b4293  ceph client.cinder secret
7ad56fa3-23e2-4d86-ae9e-253326a704f5 ceph client.nova secret

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

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

# 修改/etc/nova/nova-compute.conf $ sudo cp /etc/nova/nova-compute.conf /etc/nova/nova-compute.conf.bak $ sudo vim /etc/nova/nova-compute.conf

# 修改或是新增以下參數
[libvirt] virt_type=qemu images_rbd_ceph_conf = /etc/ceph/ceph.conf images_rbd_pool = vms images_type = rbd rbd_user = nova rbd_secret_uuid = 7ad56fa3-23e2-4d86-ae9e-253326a704f5 disk_cachemodes="network=writeback"

# 重啟 nova-compute服務
$ restart nova-compute

驗證是否連接ceph成功
$ nova boot --flavor m1.tiny --image image-name instance1

參考來源:
Ceph与OpenStack的Nova相结合

留言

這個網誌中的熱門文章

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

PHP - 產生qrcode

devstack安裝all in one openstack(pike)