在 nova-volume Juju charm 中创建卷组

在 nova-volume Juju charm 中创建卷组

在部署 nova-volume Juju charm 之前是否需要设置卷组?我尝试在以本地 (lxc) 模式运行的 Ubuntu VM 上本地安装 Openstack,并收到错误,提示物理卷不存在或未找到环回。查看钩子,我看不到它是否尝试创建环回卷组。

juju 调试日志中的环回错误消息显示如下:

2012-05-24 11:30:53,876 unit:nova-volume/4: hook.output INFO: Processing triggers for initramfs-tools ...
2012-05-24 11:30:56,306 unit:nova-volume/4: hook.output ERROR: losetup: Could not find any loop device. Maybe this kernel does not know
       about the loop device? (If so, recompile or `modprobe loop'.)
2012-05-24 11:30:56,307 unit:nova-volume/4: hook.output ERROR: 
2012-05-24 11:30:56,311 unit:nova-volume/4: hook.output ERROR: failed to setup loop device for /var/lib/nova-volumes/my-vol.img
2012-05-24 11:30:56,524 unit:nova-volume/4: unit.hook.api INFO: ERROR: failed to get device for /var/lib/nova-volumes/my-vol.img|2G
2012-05-24 11:30:56,526 unit:nova-volume/4: hook.output INFO: {}
2012-05-24 11:30:56,547 unit:nova-volume/4: hook.output DEBUG: hook install exited, exit code Traceback (most recent call last):
Failure: juju.errors.CharmInvocationError: Error processing '/var/lib/juju/units/nova-volume-4/charm/hooks/install': exit code 1.
.
2012-05-24 11:30:56,548 unit:nova-volume/4: hook.executor DEBUG: Hook error: /var/lib/juju/units/nova-volume-4/charm/hooks/install Error processing '/var/lib/juju/units/nova-volume-4/charm/hooks/install': exit code 1.
2012-05-24 11:30:56,552 unit:nova-volume/4: statemachine DEBUG: unitworkflowstate:  executing error transition error_install, Error processing '/var/lib/juju/units/nova-volume-4/charm/hooks/install': exit code 1.
2012-05-24 11:30:56,577 unit:nova-volume/4: statemachine DEBUG: unitworkflowstate: transition error_install (None -> install_error) {}
2012-05-24 11:30:56,587 unit:nova-volume/4: statemachine DEBUG: unitworkflowstate: transition complete error_install (state install_error) {}
2012-05-24 11:30:56,605 unit:nova-volume/4: juju.agents.unit DEBUG: Configuration Changed
2012-05-24 11:30:56,606 unit:nova-volume/4: juju.agents.unit DEBUG: Configuration updated on service in a non-started state
2012-05-24 11:30:56,611 unit:nova-volume/4: juju.agents.unit INFO: No upgrade flag set.

答案1

在 LXC 中实现这一点有点棘手。首先,您需要确保主机支持环回和 LVM,并已加载适当的模块。然后,需要完成一些手动步骤:

首先,授予容器对 losetup 和 LVM 所需的各种设备节点的访问权限,特别是 /dev/loop[0-9]、/dev/loop-control 和 /dev/mapper/control。

在 /usr/share/pyshared/juju/lib/lxc/data/lxc.conf 中,添加以下内容:

lxc.cgroup.devices.allow = c 10:236 rwm
lxc.cgroup.devices.allow = c 10:237 rwm
lxc.cgroup.devices.allow = b 7:* rwm

然后,您还需要在容器内以某种方式手动创建循环控制设备节点。如果您已经部署了一个单元,并且 Juju 有一个环境模板,您可以在该模板的 /dev 目录中执行此操作,例如:

sudo mknod /var/lib/lxc/adam-sample-0-template/rootfs/dev/loop-control c 10 237

当 LVM 安装时,将创建 /dev/mapper/controller 设备节点。

或者,您可以修改 nova-volume charm,使其在安装钩子期间自动为您执行此操作。不幸的是,我不知道 Juju 或 LXC 如何预先授权新容器的 /dev 目录,并使用 charm 所需的设备进行填充。在这些功能实现之前,nova-volume charm(可能还​​有 nova-compute)可能需要像这样的棘手解决方法,以确保它们在 LXC 容器中正常工作。

相关内容