首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libvirt池无法查看或创建rbd克隆。

Libvirt池无法查看或创建rbd克隆。
EN

Server Fault用户
提问于 2019-04-25 14:58:23
回答 1查看 483关注 0票数 3

在尝试从我的OS快照中运行克隆磁盘时,我遇到了一个问题,即Libvirt无法看到从快照中克隆的现有图像。通过以下方式创建:

代码语言:javascript
复制
$ rbd -p vmdisks clone vmdisks/coreos_2023@base vmdisks/coreos00.disk

基本图像只有一个快照‘基’并且受到保护。克隆的磁盘很好地创建:

代码语言:javascript
复制
$ rbd -p vmdisks info coreos00.disk
rbd image 'coreos00.disk':
        size 8.49GiB in 2174 objects
        order 22 (4MiB objects)
        block_name_prefix: rbd_data.48a99c6b8b4567
        format: 2
        features: layering
        flags: 
        create_timestamp: Thu Apr 25 14:46:52 2019
        parent: vmdisks/coreos_2023@base
        overlap: 8.49GiB

我暂时将Libvirt配置为一个使用ceph用户的rbd池。但我看不见克隆的磁盘。只有家长:

代码语言:javascript
复制
virsh # vol-list --pool rbd_image_root
 Name                 Path                                    
------------------------------------------------------------------------------
 coreos_2023 vmdisks/coreos_2023     

如果我试图从virsh中创建克隆的映像,就会遇到以下问题:

代码语言:javascript
复制
virsh # vol-clone --pool rbd_image_root coreos_2023 coreos00.disk
error: Failed to clone vol from coreos_2023
error: failed to iterate RBD snapshot coreos_2023@base: Operation not permitted

请注意,这个池使用Ceph用户,这使得操作不允许有点奇怪。

这里是否缺少允许池使用克隆的配置选项?到目前为止,我还没有在文档中找到有关这方面的任何信息。而且libvirt的源代码看起来应该支持这两个特性。

版本:

代码语言:javascript
复制
Libvirt Machine: Ubuntu 18.04
Compiled against library: libvirt 4.0.0
Using library: libvirt 4.0.0
Using API: QEMU 4.0.0
Running hypervisor: QEMU 2.11.1

Ceph Machine: openSUSE Leap 42.3
Ceph 12.2.5

更新

当我创建这样一个卷时:

代码语言:javascript
复制
   coreos00.disk
   9116319744
   
       
       
           644
       
   
   
       vmdisks/coreos_2023

它似乎也不适用于后备存储,因为它在没有基础父级的情况下创建了一个空卷。但是,当我现在通过rbd删除卷并创建一个新的克隆时,它会出现在libvirt中,并且可以被机器使用。

代码语言:javascript
复制
$ rbd -p vmdisks rm coreos00.disk
$ rbd clone vmdisks/coreos_2023@basis vmdisks/coreos00.disk

遗憾的是,这并不是一个非常有效的方法来创建克隆,我会说。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-04-29 09:52:05

它最终是一个带有libvirt的bug。米哈尔·普里沃兹尼克提供的简单修复解决了这个问题。

代码语言:javascript
复制
diff --git i/src/storage/storage_backend_rbd.c w/src/storage/storage_backend_rbd.c
index f8c968e682..08f8123678 100644
--- i/src/storage/storage_backend_rbd.c
+++ w/src/storage/storage_backend_rbd.c
@@ -1038,7 +1038,7 @@ virStorageBackendRBDIterateCb(uint64_t offset ATTRIBUTE_UNUSED,
      * searching any further.
      */
     *(int*) arg = 1;
-    return -1;
+    return 0;
 }

 static int

<#>更新

应该包含在libvirt5.3.0中的官方补丁已经更新

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/964586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档