Openstack之cinder對接華爲FCV3存儲及cinder多後端

前言

    在以往搭建openstack塊存儲cinder組件與fc存儲對接時,我常採用了節點掛載fc盤,然後再以lvm、filesystem或ceph osd的方式來對接cinder,但這樣有着不可避免的性能損耗,其實Openstack中已經集成主流存儲廠家的FCDriver,可以讓cinder與存儲底層對接,得到更高以及穩定的性能表現。
    此文介紹了在Mitaka版本對接華爲OceanStor 5800V3的配置步驟以及踩過坑~

首發:blog.bobozhu.cn

環境準備

硬件環境

  • 華爲OceanStor V3 Fcsan存儲,光纖交換機。

  • 帶HBA的服務器

軟件環境

  • 存儲上配置管理ip,建好所需要對接的pool,注意只需要池,其他的主機組、LUN組,添加主機什麼的都不要,只要池。

  • 光纖交換機做好zone,確保每臺主機都和存儲都能連接。

  • 一套openstack平臺,可以不裝multipath。

Cinder配置

    在有文檔的情況下,當然要跟着文檔走,官網上已經要cinder對接HUAWEI V3的doc,但是版本比較老纔到liberty,V3的diver還是用HuaweiV3FCDriver,登錄到github下載最新華爲openstack_cinder_driver配置文檔 ,可以看到已經對應到了newton版,而且V3的driver已經改成了HuaweiFCDriver。

  • 在/etc/cinder目錄創建存儲配置文件,格式爲XML,名字隨便設,如cinder_huawei_conf.xml

<?xml version='1.0' encoding='UTF-8'?>
<config>
<Storage>
<Product>V3</Product>
<Protocol>FC</Protocol>
<RestURL>https://x.x.x.x:8088/deviceManager/rest/</RestURL>
<UserName>xxx</UserName>
<UserPassword>xxx</UserPassword>
</Storage>
<LUN>
<LUNType>xxx</LUNType>
<WriteType>xxx</WriteType>
<MirrorSwitch>xxx</MirrorSwitch>
<LUNcopyWaitInterval>xxx</LUNcopyWaitInterval>
<Timeout>432000</Timeout>
<StoragePool>xxx;xxx;xxx</StoragePool>
</LUN>
<Host OSType="Linux" HostIP="x.x.x.x, x.x.x.x" />
</config>

注意:

  • 這裏面有幾個強制參數,Product、Protocol、RestURL,Username、Userpassword、StoragePool,產品和協議當然就是V3和FC了,resturl是華爲開放的restful鏈接,基本上就是上面的x.x.x改成管理ip即可,注意大小寫,正常在瀏覽器打開會返回timeout。用戶名密碼華爲默認是admin,Huawei12#$(通用密碼)。StoragePool可以建多個,通過分號隔開,但這樣的多個池就在一個cinder後端了。HostIP爲nova-compute對應的IP。

  • 注意此配置文件權限要爲cinder.cinder,但是在實際docker容器中爲root好像也沒關係。。。

  • 在cinder.conf中添加

[V3_FC]
volume_driver = cinder.volume.drivers.huawei.huawei_driver.HuaweiFCDriver
cinder_huawei_conf_file = /etc/cinder/cinder_huawei_conf.xml
volume_backend_name = V3_FC

##在default段中,添加參數
[DEFAULT]
...
enabled_backends=V3_FC

到此,重啓cinder-volume服務,使用cinder service-list命令查看到V3_FC狀態爲up就可以用了~

cinder多後端開啓

    在生產環境中可能有多套存儲對接,如ceph加FCSan、或者多個FCsan池。

  • Ceph加FCSan就很簡單,只需要在cinder.conf中的backends參數添加名字和添加存儲部分即可,如添加ceph的後端

[DEFAULT]
...
enabled_backends=V3_FC,rbd-1

[rbd-1]
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_pool = volumes
volume_backend_name = rbd-1
volume_driver = cinder.volume.drivers.rbd.RBDDriver
  • 再多加FCSan,重複上面的對接FCsan步驟即可。

  • 要注意,在有多個cinder後端時要創建卷類型並關聯後端,這樣在創建卷的時候就可以選擇自己想要的池。

#> cinder type-create FC_V3
#> cinder type-key FC_V3 set volume_backend_name=V3_FC
#> cinder type-create rbd1
#> cinder type-key rbd1 set volume_backend_name=rbd-1

到此,重啓cinder服務就可以創建卷啦~

#> cinder create-volume --volume-type V3_FC  --display_name FC_VOLUME 10

TIP: 踩過的坑

  • 在配置完cinder對接之後,重啓cinder服務總是報失敗,日誌中有認證失敗的400的報錯“[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed”,這是由於本機沒有存儲的ca證書導致,可以通過手動下載然後再rest_client.py中指定路徑,也可以使用stackflow中所說的禁忌大法,直接去除ssl驗證,我覺得可行~~

打開/usr/lib/python2.7/site-packages/cinder/volume/drivers/huawei/rest_client.py,添加
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
  • 在對接成功後,創建了雲硬盤,但在attach給虛擬機的時候報錯”No FC initiator can be added to host”,當時找華爲的人半天也說不清楚,問雲的就說還沒測試過mitaka版。。查了下fujitsu的存儲配置文檔才知道,存儲對接是只需要創建pool,其他的都不要創建,看下華爲存儲,發現華爲的人什麼主機組,lun mapping都幫我們建好了。。

最後,還有一個遺留問題,在glance對接cinder的時候,上傳鏡像會報“ ‘NoneType’ object has no attribute ‘Client’”,看了下代碼是在import 某個client V3的時候失敗了,時間有限還沒來及看。。忘了是哪個client了,也不知道是不是跟多cinder後端有關。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章