跳转到: 导航, 搜索

Manila/docs/Manila Developer Setup Fedora19

< Manila‎ | docs

本文档描述了如何在虚拟机上安装支持 Manila 的 devstack。

推荐的虚拟机要求

  • 4G 内存
  • 20G 可用磁盘空间

这些说明在 Fedora 19 (f19) 虚拟机上进行了测试。但是,以下说明也适用于 Ubuntu 虚拟机,但 Ubuntu 用户可能不需要某些说明。因此,每当怀疑说明是 Fedora 特有的时,就会说明为 Fedora 特有。

安装 DevStack

以下是集成了 Manila 的 DevStack 仓库。除了安装其他 OpenStack 服务外,它还会从 https://github.com/stackforge/manila 拉取并安装 Manila,这是最新的 Manila 仓库。

$ git clone git@github.com:bswartz/devstack.git
$ cd devstack

注意:最近,Manila 仓库已经集成到 DevStack master 中,您也可以使用它。因此,以下某些说明可能不再适用。请期待指令的相应更改。

您可能需要进行以下更改。如果使用 F19,则需要进行 ./lib/manila 中的更改。否则,安装 OpenStack 服务的 stack.sh 脚本会将 manila 脚本安装到 /usr/bin 中,但稍后会尝试从 /usr/local/bin 中执行 manila 脚本。

diff --git a/lib/manila b/lib/manila
index abd0158..7f75ebc 100644
--- a/lib/manila
+++ b/lib/manila
@@ -48,7 +48,7 @@ MANILA_SERVICE_PROTOCOL=${MANILA_SERVICE_PROTOCOLS
 if [[ -d $MANILA_DIR/bin ]]; then
     MANILA_BIN_DIR=$MANILA_DIR/bin
 else
-    MANILA_BIN_DIR=/usr/local/bin
+    MANILA_BIN_DIR=/usr/bin
 fi
 
 SHARE_GROUP=${SHARE_GROUPtack-shares}
@@ -456,4 +456,4 @@ function stop_manila() {
 }


localrc 中的更改

  • 如果使用 F19,则需要将 Rabbit 服务的密码更改为 'guest'。 新安装的 rabbitmq 会创建一个用户 'guest',密码为 'guest'。而由于某种原因,DevStack 无法按用户期望的方式设置用户 'guest' 的密码。
  • 可以设置额外的变量来记录正在运行的 OpenStack 服务的屏幕。这尤其有用,因为默认屏幕的滚动缓冲区非常有限。
  • Manila-LVM 共享的 backing 文件大小可以从 8G 减少到 2G。


diff --git a/localrc b/localrc
index 05ea5cd..4474425 100644
--- a/localrc
+++ b/localrc
@@ -1,9 +1,15 @@
 DATABASE_PASSWORD=rengen
-RABBIT_PASSWORD=rengen
+RABBIT_PASSWORD=guest
 SERVICE_TOKEN=rengen
 SERVICE_PASSWORD=rengen
 ADMIN_PASSWORD=rengen

+# Enable Logging
+LOGFILE=/opt/stack/logs/stack.sh.log
+VERBOSE=True
+LOG_COLOR=True
+SCREEN_LOGDIR=/opt/stack/logs
+

@@ -66,7 +72,7 @@ MANILA_SERVICE_PORT_INT=18776
 
 VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-1048M}
 
-SHARE_BACKING_FILE_SIZE=${SHARE_BACKING_FILE_SIZE:-8400M}
+SHARE_BACKING_FILE_SIZE=${SHARE_BACKING_FILE_SIZE:-2048M}
 MANILA_SECURE_DELETE=$CINDER_SECURE_DELETE


运行 stack.sh

$ ./stack.sh

请注意,上述脚本会将 SELinux 设置为 Fedora 用户的 Permissive 模式。但是,此设置无法在重启后保留。要永久更改 SELinux 设置,您需要编辑 /etc/sysconfig/selinux 文件,使其如下所示

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive

检查 SELinux 的状态

$ getenforce

使用 Nova 启动 Guest 实例

确保每次开始(例如,在系统重启后)使用 OpenStack 运行 httpd、rabbitmq-server(或其他 AMQP)、mysqld(db)等服务。对于 F19,您可以通过以下方式执行此操作:

$ systemctl status rabbitmq-server

如果它们没有运行,您应该启动并运行它们

# systemctl restart rabbitmq-server

并且不要忘记检查 SELinux 是否设置为 Permissive 模式 :)

现在您需要设置 keystone 登录凭据,才能使用各个 OpenStack 服务的 CLI。这可以通过 sourcing openrc 文件来实现,分别使用用户名和租户名。并且 stack.sh 已经创建了用户(admin 和 demo)和租户(admin 和 demo),您可以使用它们。因此,您可以执行以下操作:

$ source openrc admin admin

如果您在运行 stack.sh 后重启了,请启动(如果已重启)并通过运行 rejoin-stack.sh 脚本与各个 OpenStack 服务进行交互。

$ ./rejoin-stack.sh

您需要 Nova guests 来测试 Manila 共享是否可访问。使用轻量级镜像(CirrOS)启动实例是合理的。Csaba Henk 整理了一个带有 nfs 内核支持、nfs-utils、rpcbind 和 strace 的轻量级镜像:Csaba Henkhttps://mega.co.nz/#!B91VUA6Z!eNB2BSW4p1o8lRqaPeaIek4g_J1LJL_SY2OymVnurlc

使用从上述链接下载的镜像创建 glance-image

$ glance image-create --name="Cirros 0.3.1" --disk-format=qcow2 \
 --container-format bare < cirros-git-disk.qcow2

列出 glance 镜像,并检查是否可用

$ glance image-list

添加 keypair 列表

$ nova keypair-add --pub_key ~/.ssh/id_rsa.pub mykey

设置网络规则以允许 ssh 和 ping 访问 guest VM

$ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
$ nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

启动 nova 实例。请使用 glance image-list 的 image-id

$ nova boot --flavor m1.tiny --image 00aa37a3-0bec-4140-bbf1-617fc3b3da63 \
  --key_name mykey --security_group default myvm0

检查 guest 实例的状态

$ nova list

通过 ssh 登录到 VM。guest VM 的 cirros 密码是 cubswin:)

$ ssh cirros@<the ip of the vm, usually a private IP, unless setup>

在 guest vm 内部。如果您需要成为 root

$ sudo -s
$ id

创建 Manila LVM NFS 共享

目前,Manila 不支持多租户(代码正在审查中),网络模型是简单的 FlatNetwork 模型。有关更多信息,请参见

检查 Manila 共享驱动程序及其辅助程序是否如下所示,否则设置它们

$ cat /etc/manila/manila.conf | grep share_driver
share_driver = manila.share.drivers.lvm.LVMShareDriver
$ cat /etc/manila/manila.conf | grep share_lvm_helpers
share_lvm_helpers = CIFS=manila.share.drivers.lvm.CIFSHelper,NFS=manila.share.drivers.lvm.NFSHelper

通过从默认的 stack-shares 卷组中雕刻 1G 逻辑卷来创建 1G LVM Manila NFS 共享

$ manila create --name myshare0 NFS 1

检查共享是否可用

$ manila list

允许正在运行的实例访问共享

$ manila allow-access <share-id> ip <instance-id>

您现在应该能够 ssh 到您的 guest VM,并检查 NFS 共享

$ showmount -e

如果一切顺利,您可以将 NFS 共享挂载到您的 guest 上。如果不是,最可能的原因是 Nova 设置的防火墙规则在与您对抗。解决此问题的肮脏方法是在您的 host VM 中停止并禁用防火墙守护程序,然后重新启动 Nova 服务。

# systemctl stop firewalld
# systemctl disable firewalld