【问题标题】:VDI resizing api does not work [duplicate]VDI调整大小api不起作用[重复]
【发布时间】:2013-01-13 10:11:40
【问题描述】:

我正在使用 Php 开发一个 Xen 管理 webapp。 VDI(虚拟磁盘映像)重命名 API 和调整 API 大小的用法非常相同。我还没有成功调整 VDI 的大小。你觉得我在这里做错了吗。

重命名功能:

function xenapi_set_vdi_name($session, $ref, $name)
{
    $conn = $session[0];
    $sess = new xmlrpcval($session[1]);
    $vdi = new xmlrpcval($ref);
    $name = new xmlrpcval($name);
    $msg = new xmlrpcmsg("VDI.set_name_label", array($sess, $vdi, $name));

    $res = $conn->send($msg);

    if ($res->faultcode())
        return false;
    $val = $res->value();
    $status = $val->structmem("Status");
    if ($status->scalarval() != "Success")
        return false;

    $value = $val->structmem("Value");
    return $value->scalarval();
}

重命名工作用法:

...
xenapi_set_vdi_name($session, $vdi, "NewNameToMyVDI");
...

调整大小功能:

function xenapi_set_vdi_virtual_size($session, $ref, $size)
{
    $conn = $session[0];
    $sess = new xmlrpcval($session[1]);
    $vdi = new xmlrpcval($ref);
    $size = new xmlrpcval($size);
    $msg = new xmlrpcmsg("VDI.set_virtual_size", array($sess, $vdi, $size));

    $res = $conn->send($msg);

    if ($res->faultcode())
        return false;
    $val = $res->value();
    $status = $val->structmem("Status");
    if ($status->scalarval() != "Success")
        return false;

    $value = $val->structmem("Value");
    return $value->scalarval();
}

无法调整大小使用:

...
$size = '27011707392';
settype($size, "integer");
xenapi_set_vdi_virtual_size($session, $vdi, $size);
...

新的大小值在物理服务器上与 XEN 命令一起使用:

xe vdi-resize uuid="91fe671c-93e1-4162-8128-96fedc3c215c" disk-size="27011707392"

【问题讨论】:

  • 你用的是32位系统吗? $size = '27011707392'; 转换为 int 将是 2147483647
  • Xen 服务器是 32 位系统。我的网络服务器的 VPS 是 64 位的。你告诉我一些我从未听说过的事情。转换的参数是什么。同时2147483647 也不起作用。
  • 我刚刚发现我的管理程序以 Intel 32 位运行,而网络服务器以 AMD 64 位运行。有关系吗?
  • 它可能适用于大整数,但如果它即使使用较小的值也不起作用,请尝试$val->structmem('ErrorDescription') 看看有什么问题
  • MESSAGE_PARAMETER_COUNT_MISMATCH 错误返回。

标签: php api sdk xen


【解决方案1】:

为了完整起见:此问题已重复(请参阅下面的链接)并报告为已成功解决,因此我将在此处粘贴该问题的答案。

问题: VDI resizing api does not work

回答: 快速浏览一下:http://xen.org/files/XenCloud/ocamldoc/apidoc.html?c=VDI

我认为您应该尝试使用“调整大小”或“在线调整大小”方法而不是“设置虚拟大小”。

使用“resize”方法报告成功。

【讨论】:

  • 我知道。我的 serverfault 问题与 stackoverflow 之一合并。所以...再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多