Назад | Перейти на главную страницу

Не удается запустить XML-контейнер Linux, неверное монтирование cgroup

Использование последней версии Ubuntu 13.04; я установил lxc и другие инструменты

Вот мое определение XML:

<domain type='lxc'>
  <name>vm1</name>
  <memory>500000</memory>
  <os>
    <type>exe</type>
    <init>/bin/bash</init>
  </os>
  <vcpu>1</vcpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/lib/libvirt/libvirt_lxc</emulator>
    <interface type='network'>
      <source network='default'/>
    </interface>
    <console type='pty' />
  </devices>
</domain>

Я определяю это:

virsh --connect lxc:/// define application-test.xml

Но когда я пытаюсь начать:

root@lxc:~# virsh --connect lxc:/// start vm1
error: Failed to start domain vm1
error: internal error guest failed to start: PATH=/bin:/sbin TERM=linux container=lxc-libvirt container_uuid=1302678e-0447-79b7-6cc1-db4be64fdaf5 LIBVIRT_LXC_UUID=1302678e-0447-79b7-6cc1-db4be64fdaf5 LIBVIRT_LXC_NAME=vm1 /bin/bash
2013-05-16 14:33:49.930+0000: 1: info : libvirt version: 1.0.2
2013-05-16 14:33:49.930+0000: 1: error : lxcContainerMountCGroups:1893 : Failed to mount cgroup on '/sys/fs/cgroup': No such file or directory
2013-05-16 14:33:49.932+0000: 1866: info : libvirt version: 1.0.2
2013-05-16 14:33:49.932+0000: 1866: error : virLXCControllerRun:1462 : Unable to send container continue message: Broken pipe
2013-05-16 14:33:49.938+0000: 1866: error : virCommandWait:2287 : internal error Child process (ip link del veth1) unexpected exit status 1: Cannot find device "veth1"

И смонтировать:

root@lxc:~# mount
/dev/xvda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
cgroup on /sys/fs/cgroup type cgroup (rw)

Как видно, он установлен; но все еще не могу запустить его.

Выдергивая мои волосы; любая идея ?

Я думаю, это больше связано с неправильной настройкой rootfs. Где в вашем XML-файле вы смонтировали rootfs? Я думаю, что ошибка возникает из-за того, что сам файл "/ bin / bash" не виден / не смонтирован. Ниже я привел ссылку на образец файла DOM.XML одного из моих контейнеров, который должен проиллюстрировать монтирование rootfs.

Имя файла: originalcopy.xml

 <domain type="lxc">
  <name>originalcopy</name>
  <vcpu placement="static">1</vcpu>
  <cputune>
    <shares>1024</shares>
    <period>10005000</period>
  </cputune>
  <memtune>
    <hard_limit unit="M">1024</hard_limit>
    <soft_limit unit="M">128</soft_limit>
    <min_guarantee unit="M">64</min_guarantee>
  </memtune>
  <blkiotune>
    <weight>800</weight>
  </blkiotune>
  <memory unit="KiB">102400</memory>
  <os>
    <type>exe</type>
    <init>/bin/lxc_defaultinit.sh</init>
  </os>
  <clock offset="utc"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/libexec/libvirt_lxc</emulator>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/"/>
      <target dir="/"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/sbin"/>
      <target dir="/sbin"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/opt"/>
      <target dir="/opt"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/selinux"/>
      <target dir="/selinux"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/bin"/>
      <target dir="/bin"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/lib"/>
      <target dir="/lib"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/tmp"/>
      <target dir="/tmp"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/mnt"/>
      <target dir="/mnt"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/etc"/>
      <target dir="/etc"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/usr"/>
      <target dir="/usr"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/home"/>
      <target dir="/home"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/var"/>
      <target dir="/var"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/root"/>
      <target dir="/root"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/dev"/>
      <target dir="/dev"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/sys"/>
      <target dir="/sys"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/media"/>
      <target dir="/media"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/srv"/>
      <target dir="/srv"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/boot"/>
      <target dir="/boot"/>
    </filesystem>
    <filesystem accessmode="passthrough" type="mount">
      <source dir="/containers/originalcopy/lib64"/>
      <target dir="/lib64"/>
    </filesystem>
    <interface type="bridge">
      <source bridge="br0"/>
    </interface>
    <console type="pty" port="0"/>
  </devices>
</domain>

Итак, как вы можете видеть, я смонтировал каталоги файловой системы, связанные с контейнером, в теге файловой системы. Вам нужно сделать то же самое с вашей rootfs (корневой файловой системой). просто замените исходный каталог, чтобы он указывал на ваш конкретный путь на вашем компьютере. ИМО, это должно решить проблему. Если у вас возникнут трудности с созданием rootfs, дайте мне знать.