我正在尝试在 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 挂载