OpenStack存儲模塊-Cinderhtml
在前兩篇文檔中介紹了OpenStack的一些基礎搭建,可是並無加入存儲模塊。這篇主要介紹一下openstack的存儲模塊Cinder.node
存儲主要分爲三種:python
塊存儲:硬盤,存儲設備,磁盤整列等。mysql
文件存儲:如NFS,FTP等主要用於文件共享的存儲。正則表達式
對象存儲:分佈式文件系統,swift等。有metadata(元數據)的數據描述做爲支持的存儲方式。
sql
Cinder支持以上的多種存儲方式。數據庫
Cinder組件swift
cinder-api: 接受API的請求,路由到cinder-volume來執行。後端
cinder-volume:響應請求,讀取或寫入數據庫維護狀態信息,經過消息隊列機制與其它進程交互(如cinder-scheduler),也能夠直接與上層塊存儲提供的硬件或軟件進行交互。管理存儲。api
cinder-scheduler: 守護進程。相似於Nova-scheduler,爲存儲實例選擇最優的塊存儲節點。
cinder-backup:守護進程。服務提供任何種類備份捲到一個備份存儲提供者。就像``cinder-volume``服務,它與多種存儲提供者在驅動架構下進行交互。
Cinder數據庫配置和註冊服務
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html
建立數據庫並受權:
MariaDB [(none)]> CREATE DATABASE cinder; MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
建立服務證書,完成這些步驟:
# source admin-openstack.sh # openstack user create --domain default --password-prompt cinder
添加 admin 角色到 cinder 用戶上:
# openstack role add --project service --user cinder admin
建立 cinder 和 cinderv2 服務實體:
# openstack service create --name cinder --description "OpenStack Block Storage" volume +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | 27b797388aaa479ea5542048df32b3d8 | | name | cinder | | type | volume | +-------------+----------------------------------+
# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | 85f9890df5444a5d9a989c96b630c7a7 | | name | cinderv2 | | type | volumev2 | +-------------+----------------------------------+
建立塊設備存儲服務的 API 入口點,須要註冊兩個版本:
openstack endpoint create --region RegionOne volume public http://172.16.10.50:8776/v1/%\(tenant_id\)s openstack endpoint create --region RegionOne volume internal http://172.16.10.50:8776/v1/%\(tenant_id\)s openstack endpoint create --region RegionOne volume admin http://172.16.10.50:8776/v1/%\(tenant_id\)s openstack endpoint create --region RegionOne volumev2 public http://172.16.10.50:8776/v2/%\(tenant_id\)s openstack endpoint create --region RegionOne volumev2 internal http://172.16.10.50:8776/v2/%\(tenant_id\)s openstack endpoint create --region RegionOne volumev2 admin http://172.16.10.50:8776/v2/%\(tenant_id\)s
Cinder安裝配置
在控制節點安裝cinder組件:
# yum install -y openstack-cinder
編輯 /etc/cinder/cinder.conf,同時完成以下動做:
配置數據庫(密碼爲cinder):
connection = mysql+pymysql://cinder:cinder@172.16.10.50/cinder
同步塊設備服務的數據庫:
# su -s /bin/sh -c "cinder-manage db sync" cinder
確認數據庫同步成功:
# mysql -h 172.16.10.50 -ucinder -pcinder -e "use cinder;show tables;"
在 「[DEFAULT]」 和 「[oslo_messaging_rabbit]」部分,配置 「RabbitMQ」 消息隊列訪問:
[DEFAULT] rpc_backend = rabbit
[oslo_messaging_rabbit] ... rabbit_host = 172.16.10.50 rabbit_userid = openstack rabbit_password = openstack
在 「[DEFAULT]」 和 「[keystone_authtoken]」 部分,配置認證服務訪問:
[DEFAULT] auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://172.16.10.50:5000 auth_url = http://172.16.10.50:35357 memcached_servers = 172.16.10.50:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = cinder password = cinder
在 [oslo_concurrency] 部分,配置鎖路徑:
lock_path = /var/lib/cinder/tmp
編輯文件 /etc/nova/nova.conf 並添加以下到其中:
[cinder] os_region_name= RegionOne
重啓nova-api:
# systemctl restart openstack-nova-api.service
啓動cinder-api(端口8776)和cinder-scheduler:
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
安裝配置存儲節點
存儲節點能夠配置在計算節點上,也能夠有其它的專用存儲服務,這裏使用計算機節點提供存儲服務。
計算節點上須要有一個外掛磁盤。
建立LVM 物理卷 /dev/sdb:
建立 LVM 卷組 cinder-volumes:
# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created # vgcreate cinder-volumes /dev/sdb Volume group "cinder-volumes" successfully created
設置只有實例能夠訪問塊存儲卷組:
默認狀況下,LVM卷掃描工具會掃描``/dev`` 目錄,查找包含卷的塊存儲設備。若是項目在他們的捲上使用LVM,掃描工具檢測到這些卷時會嘗試緩存它們,可能會在底層操做系統和項目捲上產生各類問題。必須從新配置LVM,讓它只掃描包含``cinder-volume``卷組的設備。編輯``/etc/lvm/lvm.conf``文件並完成下面的操做:
在``devices``部分,添加一個過濾器,只接受``/dev/sdb``設備,拒絕其餘全部設備:
devices { ... filter = [ "a/sdb/", "r/.*/"]
每一個過濾器組中的元素都以``a``開頭,即爲 accept,或以 r 開頭,即爲**reject**,而且包括一個設備名稱的正則表達式規則。過濾器組必須以``r/.*/``結束,過濾全部保留設備。您可使用 :命令:`vgs -vvvv` 來測試過濾器。
在存儲節點安裝配置cinder
安裝軟件包:
yum install -y openstack-cinder targetcli python-keystone
配置存儲節點的cinder:
在存儲節點的cinder配置和在控制節點的配置差異不是很大,能夠直接從控制節點拷貝並修改權限:
# scp /etc/cinder/cinder.conf 172.16.10.51:/etc/cinder/
在cinder.conf 的``[lvm]``部分,配置LVM後端以LVM驅動結束,卷組``cinder-volumes`` ,iSCSI 協議和正確的 iSCSI服務,若是沒有此模塊能夠手動添加:
[lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm
在 [DEFAULT] 部分,啓用 LVM 後端:
enabled_backends = lvm
啓動塊存儲卷服務及其依賴的服務:
# systemctl enable openstack-cinder-volume.service target.service # systemctl start openstack-cinder-volume.service target.service
在控制節點驗證是否配置成功,正常爲up狀態,若是不是UP狀態則不能添加雲硬盤:
# source admin-openstack.sh # cinder service-list +------------------+-----------+------+---------+-------+----------------------------+-----------------+ | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | +------------------+-----------+------+---------+-------+----------------------------+-----------------+ | cinder-scheduler | node1 | nova | enabled | up | 2016-11-02T09:16:34.000000 | - | | cinder-volume | node2@lvm | nova | enabled | up | 2016-11-02T09:16:39.000000 | - | +------------------+-----------+------+---------+-------+----------------------------+-----------------+
爲虛擬機添加一個卷
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/launch-instance-cinder.html
以前已經安裝了Horizon,能夠直接經過dashboard添加雲硬盤操做。也能夠根據官方的文檔命令行添加雲硬盤。
若是在Web管理界面出現雲硬盤信息,說明添加成功。
查看虛擬機上是否有此虛擬硬盤:
$ sudo fdisk -l Disk /dev/vdb: 1073 MB, 1073741824 bytes 16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
格式化硬盤,並mount:
$ sudo fdisk /dev/vdb n p w $ sudo mkfs.ext4 /dev/vdb1 $ sudo mount /dev/vdb1 /data/
能夠對正在運行的虛擬機上添加雲硬盤,不建議動態的擴容或收縮硬盤容量,可能會形成數據丟失的狀況。在實際生產環境中,不建議使用cinder的各類複雜功能。