在 Ubuntu 上使用 KVM 在 hostOS 和 VM 之间共享 Ocfs2 卷

在 Ubuntu 上使用 KVM 在 hostOS 和 VM 之间共享 Ocfs2 卷

我正在尝试在 Ubuntu Oneiric Server(3.0 内核)上设置 ocfs2。我正在从主机上的 VG 共享 LV。HostOS 是 Ubuntu Lucid(也是 3.0 内核)。

我可以在两个 KVM 之间共享卷上的 ocfs2 分区。但我无法在主机操作系统和虚拟机之间共享分区

我只能在 hostOS 上正确安装该分区,但是当我尝试在其中一个 KVM 上安装该分区时,我得到:

(o2hb-A72309E287,1395,1):o2hb_check_last_timestamp:576 ERROR: Another node is heartbeating on device (dm-4): expected(2:0xb88208e59655bc4f, 0x4f2d4275), ondisk(0:0x0, 0x0)
[22085.518632] ocfs2: Unmounting device (252,4) on (node 2)

在系统日志中。

卷在 VM xml 文件中定义为:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/datastore/test'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>

存储池定义为:

<pool type="logical">
   <name>datastore</name>
   <target>
     <path>/dev/datastore</path>
   </target> 
</pool>

我使用以下命令为此 LV 上的分区创建了设备节点:

kpartx -av /dev/datastore/test

它创建了 /dev/mapper/datastore-test1,然后我尝试挂载它。

在 KVM VM 和 hostOS 之间共享 ocfs2 卷是否根本就不可能,还是我做错了什么?

答案1

如果有人遇到同样的问题,我会回答我自己的问题:

我的 ocfs2 和 VM 配置都很好。问题是我直接在 /dev/vda(在 VM 中)中创建了一个 ocfs2 卷。

问题是,VM 看到带有 ocfs2 分区的物理分区,但 hostOS 看到带有 ocfs2 分区的 LVM 卷。

解决方案是在 VM 中从 /dev/vda 创建一个 pv,然后在其上创建一个 VG 和一个 LV。然后将 LV 格式化为 ocfs2。

这个嵌套的 VG 在 hostOS 中可见,并且可以挂载

因此 VG 布局如下:

 vg:datastore   
  --lv:test
    --vg:vmtest
      --lv:vmvolume

在 hostOS 和 VM 上,该卷都可以作为 /dev/vmtest/vmvolume 挂载

相关内容