文件或卷(例如,来自 ZFS 或 Solaris Volume Manager)既可以作为完整磁盘导出,也可以作为具有单个分片的磁盘导出,具体取决于是否设置了 slice 选项。
如果未设置 slice 选项,文件或卷会作为完整磁盘导出。在这种情况下,虚拟磁盘驱动程序(vds 和 vdc)从虚拟磁盘转发 I/O 并管理虚拟磁盘的分区。文件或卷最终会变成一个磁盘映像,其中含有虚拟磁盘所有分片中的数据以及用于管理分区和磁盘结构的元数据。
将空白文件或卷作为完整磁盘导出时,它将在来宾域中显示为未格式化的磁盘(即,无分区的磁盘)。然后,您需要在来宾域中运行 format 命令,以便定义可用的分区并写入有效的磁盘标签。如果虚拟磁盘未格式化,对该磁盘进行的所有 I/O 操作都将失败。
service# mkfile 100m /ldoms/domain/test/fdisk0
该文件的大小定义虚拟磁盘的大小。此示例会创建一个 100 MB 的空白文件,以获取 100 MB 的虚拟磁盘。
primary# ldm add-vdsdev /ldoms/domain/test/fdisk0 fdisk0@primary-vds0
在此示例中,未设置 slice 选项,所以,该文件将作为完整磁盘导出。
例如,将磁盘 (fdisk) 指定给来宾域 ldg1。
primary# ldm add-vdisk fdisk fdisk0@primary-vds0 ldg1
完整磁盘是一个具有八个分片的常规磁盘。
以下示例介绍如何列出磁盘 c0d5,并检验该磁盘是否可供访问且是否为完整磁盘。
ldg1# ls -1 /dev/dsk/c0d5s* /dev/dsk/c0d5s0 /dev/dsk/c0d5s1 /dev/dsk/c0d5s2 /dev/dsk/c0d5s3 /dev/dsk/c0d5s4 /dev/dsk/c0d5s5 /dev/dsk/c0d5s6 /dev/dsk/c0d5s7
以下示例说明如何创建要用作完整磁盘的 ZFS 卷 zdisk0。
service# zfs create -V 100m ldoms/domain/test/zdisk0
卷的大小定义虚拟磁盘的大小。此示例创建了一个 100 MB 的卷,以获取 100 MB 的虚拟磁盘。
primary# ldm add-vdsdev /dev/zvol/dsk/ldoms/domain/test/zdisk0 \ zdisk0@primary-vds0
在此示例中,未设置 slice 选项,因此,该文件将作为完整磁盘导出。
以下示例说明如何将卷 zdisk0 分配给来宾域 ldg1:
primary# ldm add-vdisk zdisk0 zdisk0@primary-vds0 ldg1
完整磁盘是一个具有八个分片的常规磁盘。
以下示例说明如何列出磁盘 c0d9,并检验该磁盘是否可供访问且是否为完整磁盘:
ldg1# ls -1 /dev/dsk/c0d9s* /dev/dsk/c0d9s0 /dev/dsk/c0d9s1 /dev/dsk/c0d9s2 /dev/dsk/c0d9s3 /dev/dsk/c0d9s4 /dev/dsk/c0d9s5 /dev/dsk/c0d9s6 /dev/dsk/c0d9s7
如果已设置 slice 选项,则文件或卷会作为具有单个分片的磁盘导出。在这种情况下,虚拟磁盘仅具有一个分区 (s0),该分区直接映射到文件或卷后端。文件或卷仅包含写入到虚拟磁盘的数据,而不包含额外数据(如分区信息或磁盘结构)。
将文件或卷作为具有单个分片的磁盘导出时,系统会模拟一个假磁盘分区,这使得文件或卷看起来像磁盘分片。因为对磁盘分区进行了模拟,所以,您无需为该磁盘创建分区。
以下示例介绍如何创建要用作具有单个分片的磁盘的 ZFS 卷 zdisk0。
service# zfs create -V 100m ldoms/domain/test/zdisk0
卷的大小定义虚拟磁盘的大小。此示例会创建一个 100 MB 的卷,以获取 100 MB 的虚拟磁盘。
primary# ldm add-vdsdev options=slice /dev/zvol/dsk/ldoms/domain/test/zdisk0 \ zdisk0@primary-vds0
下面介绍如何将卷 zdisk0 指定给来宾域 ldg1。
primary# ldm add-vdisk zdisk0 zdisk0@primary-vds0 ldg1
ldg1# ls -1 /dev/dsk/c0d9s* /dev/dsk/c0d9s0 /dev/dsk/c0d9s1 /dev/dsk/c0d9s2 /dev/dsk/c0d9s3 /dev/dsk/c0d9s4 /dev/dsk/c0d9s5 /dev/dsk/c0d9s6 /dev/dsk/c0d9s7
如果已配置为将卷作为虚拟磁盘导出,则卷将作为完整磁盘导出,而不是作为单分片磁盘导出。要保留旧行为并将卷作为具有单个分片的磁盘导出,您需要执行以下操作之一:
在 Oracle VM Server for SPARC 3.4 软件中使用 ldm set-vdsdev 命令,并针对要作为具有单个分片的磁盘导出的所有卷设置 slice 选项。请参见 ldm(1M) 手册页。
将以下行添加到服务域上的 /etc/system 文件中。
set vds:vd_volume_force_slice = 1
有关正确创建或更新 /etc/system 属性值的信息,请参见更新 /etc/system 文件中的属性值。
|
本节包括将文件和磁盘分片作为虚拟磁盘导出的准则。
如果使用回送文件 (lofi) 驱动程序将文件作为虚拟磁盘导出,则会添加一个额外的驱动程序层,并影响虚拟磁盘的性能。您可以改为直接将文件作为完整磁盘或具有单个分片的磁盘导出。请参见文件和卷导出。
要将分片直接或间接(例如,通过 Solaris Volume Manager 卷)作为虚拟磁盘导出,应通过使用 prtvtoc 命令确保该分片不是始于物理磁盘的第一个块(块 0)。
如果直接或间接导出了始于物理磁盘的第一个块的磁盘分片,可能会覆盖物理磁盘的分区表,并导致该磁盘的所有分区不可访问。