可以将任何 ZFS、Solaris Volume Manager 或 Veritas 卷管理器 (Veritas Volume Manager, VxVM) 卷作为虚拟磁盘从服务域导出到来宾域。卷可以作为具有单个分片的磁盘导出(如果使用 ldm add-vdsdev 命令指定了 slice 选项)或作为完整磁盘导出。
以下示例介绍如何将卷作为具有单个分片的磁盘导出。
来宾域中的虚拟磁盘(例如,/dev/dsk/c0d2s0)直接映射到相关联的卷(例如,/dev/md/dsk/d0),来宾域的虚拟磁盘上存储的数据直接存储到相关联的卷中,而没有额外的元数据。因此,存储在来宾域的虚拟磁盘上的数据也可以通过相关联的卷从服务域直接访问。
示例
如果将 Solaris Volume Manager 卷 d0 从 primary 域导出到 domain1,则 domain1 的配置需要一些额外的步骤。
primary# metainit d0 3 1 c2t70d0s6 1 c2t80d0s6 1 c2t90d0s6 primary# ldm add-vdsdev options=slice /dev/md/dsk/d0 vol3@primary-vds0 primary# ldm add-vdisk vdisk3 vol3@primary-vds0 domain1
例如,绑定并启动 domain1 之后,导出的卷会显示为 /dev/dsk/c0d2s0,并且您可以使用它。
domain1# newfs /dev/rdsk/c0d2s0 domain1# mount /dev/dsk/c0d2s0 /mnt domain1# echo test-domain1 > /mnt/file
停止并解除绑定 domain1 后,可通过 Solaris Volume Manager 卷 d0 从主域直接访问 domain1 的虚拟磁盘上存储的数据。
primary# mount /dev/md/dsk/d0 /mnt primary# cat /mnt/file test-domain1
当 RAID 或镜像 Solaris Volume Manager 卷由另一个域用作虚拟磁盘时,则在导出它时不得设置独占 (excl) 选项。否则,如果 Solaris Volume Manager 卷的某个组件出现故障,就无法启动使用 metareplace 命令或热备份恢复 Solaris Volume Manager 卷的过程。metastat 命令将卷视为正在进行重新同步,但并未进行重新同步。
例如,/dev/md/dsk/d0 是使用 excl 选项作为虚拟磁盘导出到另一个域的 RAID Solaris Volume Manager 卷,并且 d0 配置有一些热备份设备。如果 d0 的组件出现故障,则 Solaris Volume Manager 会将出现故障的组件替换为热备份,并重新同步 Solaris Volume Manager 卷。但是,重新同步并不会启动。卷会被报告为正在进行重新同步,但并没有进行重新同步。
primary# metastat d0 d0: RAID State: Resyncing Hot spare pool: hsp000 Interlace: 32 blocks Size: 20097600 blocks (9.6 GB) Original device: Size: 20100992 blocks (9.6 GB) Device Start Block Dbase State Reloc c2t2d0s1 330 No Okay Yes c4t12d0s1 330 No Okay Yes /dev/dsk/c10t600C0FF0000000000015153295A4B100d0s1 330 No Resyncing Yes
这种情况下,必须停止并解除绑定将 Solaris Volume Manager 卷用作虚拟磁盘的域,才能完成重新同步。然后,可使用 metasync 命令重新同步 Solaris Volume Manager 卷。
# metasync d0
如果在系统上安装了 VxVM,并在要作为虚拟磁盘导出的物理磁盘或分区上启用了 Veritas 动态多路径 (Dynamic Multipathing, DMP),则在导出该磁盘或分区时不能设置(非默认)excl 选项。否则,在绑定使用此类磁盘的域时,则会在 /var/adm/messages 中收到错误。
vd_setup_vd(): ldi_open_by_name(/dev/dsk/c4t12d0s2) = errno 16 vds_add_vd(): Failed to add vdisk ID 0
您可以通过查看 vxdisk list 输出中的多路径信息,检查是否已启用 Veritas DMP。例如:
# vxdisk list Disk_3 Device: Disk_3 devicetag: Disk_3 type: auto info: format=none flags: online ready private autoconfig invalid pubpaths: block=/dev/vx/dmp/Disk_3s2 char=/dev/vx/rdmp/Disk_3s2 guid: - udid: SEAGATE%5FST336753LSUN36G%5FDISKS%5F3032333948303144304E0000 site: - Multipathing information: numpaths: 1 c4t12d0s2 state=enabled
或者,如果您针对要在设置了 excl 选项的情况下作为虚拟磁盘导出的磁盘或分片启用了 Veritas DMP,则可以使用 vxdmpadm 命令禁用 DMP。例如:
# vxdmpadm -f disable path=/dev/dsk/c4t12d0s2