【发布时间】: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错误返回。