您好,登錄后才能下訂單哦!
OpenStack存儲模塊-Cinder
在前兩篇文檔中介紹了OpenStack的一些基礎搭建,但是并沒有加入存儲模塊。這篇主要介紹一下openstack的存儲模塊Cinder.
存儲主要分為三種:
塊存儲:硬盤,存儲設備,磁盤整列等。
文件存儲:如NFS,FTP等主要用于文件共享的存儲。
對象存儲:分布式文件系統,swift等。有metadata(元數據)的數據描述作為支持的存儲方式。
Cinder支持以上的多種存儲方式。
Cinder組件
cinder-api: 接受API的請求,路由到cinder-volume來執行。
cinder-volume:響應請求,讀取或寫入數據庫維護狀態信息,通過消息隊列機制與其它進程交互(如cinder-scheduler),也可以直接與上層塊存儲提供的硬件或軟件進行交互。管理存儲。
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的各種復雜功能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。