上面左邊是個人我的微信,如需進一步溝通,請加微信。 右邊是個人公衆號「Openstack私有云」,若有興趣,請關注。html
OpenStack共享文件系統服務(manila)爲虛擬機提供文件存儲。共享文件系統服務提供了一個管理和配置文件共享的集合。該服務還支持共享類型的管理以及支持共享快照,前提是須要驅動程序支持。python
共享文件系統服務由如下組件組成:mysql
manila-apilinux
驗證請求並將其路由到共享文件系統服務的WSGI應用程序。sql
manila-data數據庫
一個獨立的服務,其目的是處理數據操做,如複製,共享遷移或備份。後端
manila-schedulerapi
安排和路由請求到適當的共享服務。調度程序使用可配置的過濾器和計量器來路由請求。篩選計劃程序是默認篩選器,可在後端的各類屬性(如容量,可用區和其餘功能)上啓用篩選。緩存
manila-share服務器
管理提供共享文件系統的後端設備。manila共享服務經過使用共享後端驅動程序做爲接口與後端設備進行通訊。共享驅動程序能夠以兩種模式之一運行,不管是否處理共享服務器。共享服務器經過共享網絡導出文件共享。共享文件系統服務中的共享服務器不禁驅動程序管理時,網絡要求應該在共享文件系統服務的帶外處理。
Messaging queue
在共享文件系統進程之間路由信息。
本節介紹如何在運行Red Hat Enterprise Linux或CentOS的控制器節點上安裝和配置代碼爲manila的共享文件系統服務。此服務至少須要一個管理文件存儲後端的額外共享節點。
在安裝和配置共享文件系統服務以前,您必須建立數據庫,服務憑據和API端點。
1、要建立數據庫,請完成如下步驟:
使用數據庫訪問客戶端以root用戶身份鏈接到數據庫服務器 :
$ mysql -u root -p
建立manila數據庫:
CREATE DATABASE manila;
授予對manila數據庫的正確訪問權限:
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'localhost' \
IDENTIFIED BY 'MANILA_DBPASS';
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'%' \
IDENTIFIED BY 'MANILA_DBPASS';
用MANILA_DBPASS合適的密碼替換。
退出數據庫訪問客戶端。
2、獲取管理員admin憑據CLI命令:
$ . admin-openrc.sh
3、要建立服務憑據,請完成如下步驟:
建立一個manila用戶:
$ openstack user create --domain default --password-prompt manila
User Password:
Repeat User Password:
將admin角色添加到manila用戶:
$ openstack role add --project service --user manila admin
建立manila和manilav2服務實體:
$ openstack service create --name manila \
--description "OpenStack Shared File Systems" share
$ openstack service create --name manilav2 \
--description "OpenStack Shared File Systems" sharev2
注意:共享文件系統服務須要兩個服務實體。
4、建立共享文件系統服務API端點:
$ openstack endpoint create --region RegionOne \
share public http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
share internal http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
share admin http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 public http://controller:8786/v2/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 internal http://controller:8786/v2/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 admin http://controller:8786/v2/%\(tenant_id\)s
注意:共享文件系統服務須要每一個服務實體的端點。
1、安裝軟件包:
# yum install openstack-manila python-manilaclient
2、編輯/etc/manila/manila.conf文件並完成如下操做:
在該[database]部分中,配置數據庫訪問:
[database]
...
connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila
替換MANILA_DBPASS爲您爲共享文件系統數據庫選擇的密碼。
3、完成其他的配置manila.conf:
在該[DEFAULT]部分中,配置RabbitMQ 消息隊列訪問:
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
替換RABBIT_PASS爲您爲該openstack 賬戶選擇的密碼RabbitMQ。
在該[DEFAULT]部分中,設置如下配置值:
[DEFAULT]
...
default_share_type = default_share_type
share_name_template = share-%s
rootwrap_config = /etc/manila/rootwrap.conf
api_paste_config = /etc/manila/api-paste.ini
重要:該default_share_type選項指定建立共享時使用的默認共享類型,而不指定請求中的共享類型。在配置文件中指定的默認共享類型必須根據driver_handles_share_servers所使用的驅動程序模式進行必要的額外規格(如driver_handles_share_servers)設置。在討論共享節點的設置和配置的章節中對此進行了進一步說明。
在[DEFAULT]和[keystone_authtoken]部分中,配置身份服務訪問:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = manila
password = MANILA_PASS
替換MANILA_PASS爲您manila 在身份識別服務中爲用戶選擇的密碼。
在該[DEFAULT]部分中,將該my_ip選項配置爲使用控制器節點的管理接口IP地址:
[DEFAULT]
...
my_ip = 10.0.0.11
在該[oslo_concurrency]部分中,配置鎖定路徑:
[oslo_concurrency]
...
lock_path = /var/lock/manila
4、填充共享文件系統數據庫:
# su -s /bin/sh -c "manila-manage db sync" manila
啓動共享文件系統服務並將其配置爲在系統引導時啓動:
# systemctl enable openstack-manila-api.service openstack-manila-scheduler.service
# systemctl start openstack-manila-api.service openstack-manila-scheduler.service
本節介紹如何爲共享文件系統服務安裝和配置共享節點。爲簡單起見,此配置引用一個存儲節點與通用驅動程序管理共享服務器。通用後端使用計算、網絡和塊服務來管理共享服務器以供應共享。
注意:manila共享流程能夠以兩種模式運行,不論是否共享服務器。一些驅動可能支持這兩種模式; 而有些可能只支持這兩種模式之一。請參閱「 配置參考」 以肯定您選擇的驅動程序是否支持所需的驅動程序模式。本教程介紹如何使用該模式的示例驅動程序設置每一個驅動程序模式。
請注意,安裝和配置因分佈而異。
1、安裝軟件包:
# yum install openstack-manila-share python2-PyMySQL
2、編輯/etc/manila/manila.conf文件並完成如下操做:
在該[database]部分中,配置數據庫訪問:
[database]
...
connection = mysql://manila:MANILA_DBPASS@controller/manila
替換MANILA_DBPASS爲您爲共享文件系統數據庫選擇的密碼。
3、完成其他的配置manila.conf。
在該[DEFAULT]部分中,配置RabbitMQ 消息隊列訪問:
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
替換RABBIT_PASS爲您爲該openstack賬戶選擇的密碼 RabbitMQ。
在該[DEFAULT]部分中,設置如下配置值:
[DEFAULT]
...
default_share_type = default_share_type
rootwrap_config = /etc/manila/rootwrap.conf
重要:該default_share_type選項指定建立共享時使用的默認共享類型,而不指定請求中的共享類型。在配置文件中指定的默認共享類型必須根據driver_handles_share_servers所使用的驅動程序模式進行必要的額外規格(如driver_handles_share_servers)設置。這在後面的步驟中解釋。
在[DEFAULT]和[keystone_authtoken]部分中,配置身份服務訪問:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = manila
password = MANILA_PASS
替換MANILA_PASS爲您manila 在身份識別服務中爲用戶選擇的密碼。
在該[DEFAULT]部分中,配置my_ip選項:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
替換MANAGEMENT_INTERFACE_IP_ADDRESS爲共享節點上管理網絡接口的IP地址,典型值爲10.0.0.41,用於如下所示示例體系結構中的第一個節點:
在該[oslo_concurrency]部分中,配置鎖定路徑:
[oslo_concurrency]
...
lock_path = /var/lib/manila/tmp
1.1.1.1.3.1.1. 兩個驅動模式
共享節點能夠支持兩種模式,有和沒有共享服務器的處理。該模式取決於驅動程序的支持。
選項1
部署服務時不須要驅動程序支持共享服務器管理。在這種模式下,服務不會作任何與網絡有關的事情。管理員必須確保實例與基於NAS協議的服務器之間的網絡鏈接。
本教程演示如何設置在共享節點上建立LVM卷的LVM驅動程序,並在共享節點上本地安裝的NFS服務器的幫助下將其導出。所以,它須要LVM和NFS軟件包以及manila-shareLVM卷組的附加磁盤。
這種驅動模式能夠被稱爲driver_handles_share_servers = False 模式,或者簡單地稱爲DHSS=False模式。
選項2
部署服務與驅動程序支持共享服務器管理。在這種模式下,該服務與建立和管理共享服務器的後端驅動程序一塊兒運行。本教程演示如何設置Generic驅動程序。該驅動程序須要計算服務(nova),圖像服務(glance)和網絡服務(neutron)來建立和管理共享服務器; 和塊存儲服務(cinder)來建立共享。
用於建立共享服務器的信息是在共享網絡的幫助下配置的。
這種驅動模式能夠被稱爲driver_handles_share_servers = True模式,或者簡單地稱爲DHSS=True模式。
警告:在DHSS=True驅動程序模式下運行通用驅動程序時,共享服務應與網絡服務在同一節點上運行。可是,DHSS=False因爲某些Linux發行版中的錯誤,這樣的服務可能沒法有效運行以驅動程序模式運行的LVM驅動程序。有關更多信息,請參閱「 配置參考指南」中的LVM驅動程序部分 。
選擇如下選項之一來配置共享驅動程序:
1.1.1.1.3.1.2. 共享文件系統選項1:沒有驅動程序支持共享服務器管理
爲簡單起見,此配置引用塊存儲服務的相同存儲節點配置。可是,LVM驅動程序須要單獨的空本地塊存儲設備,以免與塊存儲服務發生衝突。說明使用/dev/sdc,可是您能夠替換您的特定節點的不一樣值。
前提條件
注意:在存儲節點上執行這些步驟。
1、安裝支持的實用程序包:
安裝LVM和NFS服務器軟件包:
# yum install lvm2 nfs-utils nfs4-acl-tools portmap
啓動LVM元數據服務並將其配置爲在系統引導時啓動:
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service
2、建立LVM物理卷/dev/sdc:
# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
3、建立LVM卷組manila-volumes:
# vgcreate manila-volumes /dev/sdc
Volume group "manila-volumes" successfully created
共享文件系統服務在此卷組中建立邏輯卷。
4、只有實例才能訪問共享文件系統服務卷。可是,底層操做系統管理與卷關聯的設備。默認狀況下,LVM卷掃描工具會掃描/dev包含卷的塊存儲設備的 目錄。若是項目在其捲上使用LVM,則掃描工具將檢測這些卷並嘗試緩存這些卷,這可能會致使底層操做系統和項目卷的各類問題。您必須從新配置LVM以僅掃描包含cinder-volume和manila-volumes卷組的設備。編輯/etc/lvm/lvm.conf文件並完成如下操做:
在該devices部分中,添加一個接受/dev/sdb和/dev/sdc設備的過濾器, 並拒絕全部其餘設備:
devices {
...
filter = [ "a/sdb/", "a/sdc", "r/.*/"]
警告:若是您的存儲節點在操做系統磁盤上使用LVM,則還必須將關聯的設備添加到過濾器。例如,若是/dev/sda設備包含操做系統:
filter = [ "a/sda/", "a/sdb/", "a/sdc", "r/.*/"]
一樣,若是計算節點在操做系統磁盤上使用LVM,則還必須修改/etc/lvm/lvm.conf這些節點上的文件中的篩選器, 使其只包含操做系統磁盤。例如,若是/dev/sda 設備包含操做系統:
filter = [ "a/sda/", "r/.*/"]
配置組件
編輯/etc/manila/manila.conf文件並完成如下操做:
在該[DEFAULT]部分中,啓用LVM驅動程序和NFS協議:
[DEFAULT]
...
enabled_share_backends = lvm
enabled_share_protocols = NFS
注意
後端名稱是任意的。例如,本指南使用驅動程序的名稱。
在本[lvm]節中,配置LVM驅動程序:
[lvm]
share_backend_name = LVM
share_driver = manila.share.drivers.lvm.LVMShareDriver
driver_handles_share_servers = False
lvm_share_volume_group = manila-volumes
lvm_share_export_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
替換MANAGEMENT_INTERFACE_IP_ADDRESS爲存儲節點上管理網絡接口的IP地址,典型值爲10.0.0.41(對於如下所示示例體系結構中的第一個節點):
爲簡單起見,此配置引用與用於塊存儲服務的存儲節點相同的存儲節點。
注意:本指南介紹如何將共享文件系統服務配置爲在generic驅動程序啓用共享服務器模式(DHSS)的狀況下使用驅動程序。該驅動程序須要計算服務(nova),圖像服務(glance)和網絡服務(neutron)來建立和管理共享服務器; 和塊存儲服務(cinder)來建立共享。用於建立共享服務器的信息被配置爲共享網絡。啓用DHSS的通用驅動程序還要求租戶的專用網絡(計算實例正在運行的位置)鏈接到公用路由器。
前提條件
在繼續以前,請驗證計算,網絡和數據塊存儲服務的操做。此選項要求實施網絡選項2,並要求在存儲節點上安裝一些網絡服務組件。
安裝網絡服務組件:
# yum install openstack-neutron openstack-neutron-linuxbridge ebtables
配置組件
編輯/etc/manila/manila.conf文件並完成如下操做:
在該[DEFAULT]部分中,啓用通用驅動程序和NFS協議:
[DEFAULT]
...
enabled_share_backends = generic
enabled_share_protocols = NFS
注意:後端名稱是任意的。例如,本指南使用驅動程序的名稱。
在[neutron],[nova]和[cinder]段,啓用這些服務的身份驗證:
[neutron]
...
url = http://controller:9696
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
[nova]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
[cinder]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = cinder
password = CINDER_PASS
在該[generic]部分中,配置通用驅動程序:
[generic]
share_backend_name = GENERIC
share_driver = manila.share.drivers.generic.GenericShareDriver
driver_handles_share_servers = True
service_instance_flavor_id = 100
service_image_name = manila-service-image
service_instance_user = manila
service_instance_password = manila
interface_driver = manila.network.linux.interface.BridgeInterfaceDriver
注意:您也可使用SSH密鑰代替服務實例憑證的密碼認證。
重要:service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password是參照所使用的驅動程序來建立共享服務器服務鏡像。項目中generic 提供了與驅動程序一塊兒使用的示例服務鏡像manila-image-elements。在安裝後步驟中介紹了其建立過程(請參閱: 建立和使用共享文件系統)。
完成安裝
準備manila分享做爲開始/中止服務。啓動共享文件系統服務(包括其依賴關係),並將其配置爲在系統引導時啓動:
# systemctl enable openstack-manila-share.service target.service
# systemctl start openstack-manila-share.service target.service
驗證共享文件系統服務的操做。
注意:在控制器節點上執行這些命令。
一、生效admin憑據來訪問僅管理員CLI命令:
$ . admin-openrc.sh
二、列出服務組件以驗證每一個進程的成功啓動:
$ manila service-list
根據在安裝共享節點時選擇的選項(帶有共享服務器管理的選項或者不帶); 建立和使用共享文件系統的步驟將有所不一樣。當共享文件系統服務處理共享服務器的建立和管理時,您須要指定 帶有share network請求建立共享。兩種模式在各自的共享類型定義中都會有所不一樣。在自動處理共享服務器的狀況下使用驅動程序模式時,須要根據您的配置中指定的服務鏡像。如下說明列舉了兩種驅動程序模式的步驟。以遵循適合您的安裝的內容。
建立共享類型
在使用LVM驅動程序建立共享以前,禁用DHSS(driver_handles_share_servers)。
一、獲取管理員憑據以訪問僅限管理員的CLI命令:
$ . admin-openrc
二、建立一個禁用DHSS的默認共享類型。默認共享類型將容許您使用此驅動程序建立共享,而無需在共享建立期間明確指定共享類型。
$ manila type-create default_share_type False
設置此默認共享鍵入manila.conf下的[DEFAULT] 部分,而後從新啓動manila-api繼續以前的服務。除非您這樣作,不然默認分享類型將無效。
注意:建立和配置默認的共享類型是可選的。若是您但願使用具備各類共享類型的共享文件系統服務,其中每一個共享建立請求均可以指定類型,請參閱此處的共享類型使用文檔<http://docs.openstack.org/admin-guide /shared-file-systems-share-types.html>_。
建立一個共享
一、生效demo環境做爲非管理員,執行如下步驟:
$ . demo-openrc
二、建立一個NFS共享。因爲默認的共享類型已被建立和配置,所以不須要在請求中指定。
$ manila create NFS 1 --name share1
三、過了一段時間,股份狀態應該從creating 變爲available:
$ manila list
四、肯定共享的導出IP地址:
$ manila show share1
容許訪問共享
在嘗試經過網絡安裝以前配置對新共享的訪問。計算實例(其IP地址由如下INSTANCE_IP引用)必須具備與共享網絡中指定的網絡的網絡鏈接。
$ manila access-allow share1 ip INSTANCE_IP
將共享掛載到計算實例上?
一、登陸到您的計算實例,並建立一個文件夾放置的地方:
$ mkdir ~/test_folder
二、使用共享的導出位置在計算實例中掛載NFS共享:
# mount -vt nfs 10.0.0.41:/var/lib/manila/mnt/share-8e13a98f-c310-41df-ac90-fc8bce4910b8 ~/test_folder
在可以建立共享以前,具備通用驅動程序和啓用DHSS(driver_handles_share_servers)模式的馬尼拉須要至少定義用於建立共享服務器的鏡像,網絡和共享網絡。對於後端配置,共享服務器是NFS共享服務的實例。
注意:此配置會自動爲每一個共享建立一個cinder卷。根據共享網絡的定義,將cinder卷鏈接到共享服務器。
1、獲取管理員憑據以訪問僅限管理員的CLI命令:
$ . admin-openrc.sh
2、建立啓用DHSS的默認共享類型。默認共享類型將容許您使用此驅動程序建立共享,而無需在共享建立期間明確指定共享類型。
$ manila type-create default_share_type True
設置此默認共享manila.conf下的[DEFAULT] 部分,而後從新啓動manila-api服務。除非您這樣作,不然默認分享類型將不會生效。
注意:建立和配置默認的共享類型是可選的。若是您但願使用具備各類共享類型的共享文件系統服務,其中每一個共享建立請求均可以指定類型,請參閱此處的共享類型使用文檔<http://docs.openstack.org/admin-guide /shared-file-systems-share-types.html>_。
3、在Image服務中建立一個馬尼拉共享服務器鏡像。您能夠跳過這一步並使用任何現有的鏡像。可是,爲了裝載共享,服務鏡像必須包含適合操做系統的NFS軟件包。不管你選擇什麼鏡像成爲服務鏡像,必定要在 manila.conf設置service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password。
注意:manila.conf在manila-share服務運行時所作的任何更改都須要從新啓動服務才能生效。
注意:做爲service_instance_password在配置中指定純文本的替代方法, 可使用選項指定密鑰對,path_to_public_key和 path_to_private_key在共享節點和共享服務器之間配置和容許無密碼SSH訪問。
$ glance image-create \
--copy-from http://tarballs.openstack.org/manila-image-elements/images/manila-service-image-master.qcow2 \
--name "manila-service-image" \
--disk-format qcow2 \
--container-format bare \
--visibility public --progress
4、列出可用網絡以獲取專用網絡的ID和子網:
$ neutron net-list
獲取demo非管理員環境變量,執行如下步驟:
$ . demo-openrc.sh
$ manila share-network-create --name demo-share-network1 \
--neutron-net-id PRIVATE_NETWORK_ID \
--neutron-subnet-id PRIVATE_NETWORK_SUBNET_ID
建立一個共享
1、使用共享網絡建立一個NFS共享。因爲默認的共享類型已被建立和配置,所以不須要在請求中指定。
$ manila create NFS 1 --name demo-share1 --share-network demo-share-network1
2、過了一段時間,股份狀態應該從如下creating 變爲available:
$ manila list
3、肯定共享的導出IP地址:
$ manila show demo-share1
容許訪問共享
在嘗試經過網絡安裝以前配置對新共享的訪問。計算實例(其IP地址由如下INSTANCE_IP引用)必須具備與共享網絡中指定的網絡的網絡鏈接。
$ manila access-allow demo-share1 ip INSTANCE_IP
將共享掛載到計算實例上
1、登陸到您的計算實例,並建立一個文件夾放置的地方:
$ mkdir ~/test_folder
2、使用共享的導出位置在計算實例中掛載NFS共享:
$ mount -vt nfs 10.254.0.6:/shares/share-0bfd69a1-27f0-4ef5-af17-7cd50bce6550 ~/test_folder