AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 696419
Accepted
Deltik
Deltik
Asked: 2015-06-04 10:34:03 +0800 CST2015-06-04 10:34:03 +0800 CST 2015-06-04 10:34:03 +0800 CST

从 xend 切换回 libxl 而不重新启动

  • 772

我做了一些愚蠢的事情:我启用xend并libxl使用xend.

现在,libxl即使我摆脱了所有xend实例并停止了,也不会启动任何实例xend:

root@xen1 [~]# virsh start xen-pv-yolo
error: Failed to start domain xen-pv-yolo
error: internal error: libxenlight failed to create new domain 'xen-pv-yolo'

从日志文件/var/log/libvirt/libxl/xen-pv-yolo.log:

libxl: debug: libxl_create.c:1342:do_domain_create: ao 0x7fea1c0075c0: create: how=(nil) callback=(nil) poller=0x7fea1c001400
libxl: error: libxl_create.c:600:libxl__domain_make: cannot change hotplug execution option once set, please shutdown all guests before changing it
libxl: error: libxl_create.c:743:initiate_domain_create: cannot make domain: -3
libxl: debug: libxl_event.c:1591:libxl__ao_complete: ao 0x7fea1c0075c0: complete, rc=-3
libxl: debug: libxl_create.c:1356:do_domain_create: ao 0x7fea1c0075c0: inprogress: poller=0x7fea1c001400, flags=ic
libxl: debug: libxl_event.c:1563:libxl__ao__destroy: ao 0x7fea1c0075c0: destroy

我有一些现有的libxl实例正在运行,如果为了重新确立 的主导地位而关闭它们会带来不便libxl。

启用和禁用后如何libxl重新启动实例xend?

众所周知,重新启动可以解决此问题,但我更愿意避免重新启动。

linux
  • 1 1 个回答
  • 976 Views

1 个回答

  • Voted
  1. Best Answer
    Deltik
    2015-06-05T04:52:39+08:002015-06-05T04:52:39+08:00

    解决方案

    运行此命令:

    xenstore-write libxl/disable_udev 1
    

    而已。

    解释

    这个问题很难解决,因为没有关于“热插拔执行选项”如何在幕后工作的文档。

    如果您进入 Xen 源代码到发生错误的行号,您会看到:

        if (libxl_defbool_val(info->run_hotplug_scripts) != hotplug_setting &&
            (nb_vm - 1)) {
            LOG(ERROR, "cannot change hotplug execution option once set, "
                        "please shutdown all guests before changing it");
            rc = ERROR_FAIL;
            goto out;
        }
    

    (取自~/xen-4.4.1/tools/libxl/libxl_create.c)

    我将省去 C 语言调试,但是一旦您追溯所有变量以查看它们的加载位置,您会发现自己位于可以设置/etc/xen/xl.conf选项的位置。run_hotplug_scripts它默认为1. 如果将此设置为 0,则虚拟机创建将在xl命令上重新开始工作(而不是通过libvirt)。

    不幸的是,libvirt加载libxl使用不同的run_hotplug_scripts设置源。为了确定这一点,我附加了一个stracetolibvirtd并尝试启动一个虚拟机。

    答案都在这里:

    [pid  1194] 06:53:39 write(47, "libxl/disable_udev\0", 19) = 19
    [pid  1194] 06:53:39 read(47, "\20\0\0\0\0\0\0\0\2\0\0\0\7\0\0\0", 16) = 16
    [pid  1194] 06:53:39 read(47, "ENOENT\0", 7) = 7
    [pid  1194] 06:53:39 rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0x7f80c9a89710}, NULL, 8) = 0
    [pid  1194] 06:53:39 write(43, "libxl: error: libxl_create.c:600:libxl__domain_make: cannot change hotplug execution option once set, please shutdown all guests before changing it\n", 148) = 148
    

    最后一行显示有关“热插拔执行选项”的错误。

    文件描述符47用于与xenstored数据库交互。

    libxl/disable_udev第一行是对数据库中数据对象的请求。

    libxl/disable_udevforlibvirt相当于run_hotplug_scriptsin的反义词libxl。

    第二行是显示该对象不存在的读取。

    默认情况下,libvirt将假定不存在或未设置为1(true) 表示“是的,请运行热插拔脚本”。这就是问题。

    要解决此问题,只需创建对象并将其值设置为1. 此命令执行此操作:

    xenstore-write libxl/disable_udev 1
    

    读取对象以确认它已存储在数据库中:

    root@xen1 [~]# xenstore-read libxl/disable_udev
    1
    

    前

    root@xen1 [~]# virsh start xen-pv-yolo
    error: Failed to start domain xen-pv-yolo
    error: internal error: libxenlight failed to create new domain 'xen-pv-yolo'
    

    后

    root@xen1 [~]# virsh start xen-pv-yolo
    Domain xen-pv-yolo started
    

    此修复程序的好处是您不必担心重新启动后它会消失。只要重启后xend不与冲突发生冲突libxl,就不需要再次运行此修复程序。

    • 3

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve