Oracle® VM Server for SPARC 3.3 管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

文件和卷导出

文件或卷(例如,来自 ZFS 或 Solaris Volume Manager)既可以作为完整磁盘导出,也可以作为具有单个分片的磁盘导出,具体取决于是否设置了 slice 选项。

文件或卷作为完整磁盘导出

如果未设置 slice 选项,文件或卷会作为完整磁盘导出。在这种情况下,虚拟磁盘驱动程序(vdsvdc)从虚拟磁盘转发 I/O 并管理虚拟磁盘的分区。文件或卷最终会变成一个磁盘映像,其中含有虚拟磁盘所有分片中的数据以及用于管理分区和磁盘结构的元数据。

将空白文件或卷作为完整磁盘导出时,它将在来宾域中显示为未格式化的磁盘(即,无分区的磁盘)。然后,您需要在来宾域中运行 format 命令,以便定义可用的分区并写入有效的磁盘标签。如果虚拟磁盘未格式化,对该磁盘进行的所有 I/O 操作都将失败。


注 - 必须在来宾域中运行 format 命令来创建分区。

如何将文件作为完整磁盘导出

  1. 在服务域中,创建一个文件(例如,fdisk0),用作虚拟磁盘。
    service# mkfile 100m /ldoms/domain/test/fdisk0

    该文件的大小定义虚拟磁盘的大小。此示例会创建一个 100 MB 的空白文件,以获取 100 MB 的虚拟磁盘。

  2. 在控制域中,将该文件导出为虚拟磁盘。
    primary# ldm add-vdsdev /ldoms/domain/test/fdisk0 fdisk0@primary-vds0

    在此示例中,未设置 slice 选项,所以,该文件将作为完整磁盘导出。

  3. 在控制域中,将磁盘指定给来宾域。

    例如,将磁盘 (fdisk) 指定给来宾域 ldg1

    primary# ldm add-vdisk fdisk fdisk0@primary-vds0 ldg1
  4. 来宾域启动并运行 Oracle Solaris OS 之后,检验该磁盘是否可供访问且是否为完整磁盘。

    完整磁盘是一个具有八个分片的常规磁盘。

    以下示例介绍如何列出磁盘 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 卷作为完整磁盘导出

  1. 创建 ZFS 卷,用作完整磁盘。

    以下示例说明如何创建要用作完整磁盘的 ZFS 卷 zdisk0

    service# zfs create -V 100m ldoms/domain/test/zdisk0

    卷的大小定义虚拟磁盘的大小。此示例创建了一个 100 MB 的卷,以获取 100 MB 的虚拟磁盘。

  2. 在控制域中,将相应的设备导出到该 ZFS 卷。
    primary# ldm add-vdsdev /dev/zvol/dsk/ldoms/domain/test/zdisk0 \
    zdisk0@primary-vds0

    在此示例中,未设置 slice 选项,因此,该文件将作为完整磁盘导出。

  3. 在控制域中,将卷指定给来宾域。

    以下示例说明如何将卷 zdisk0 分配给来宾域 ldg1

    primary# ldm add-vdisk zdisk0 zdisk0@primary-vds0 ldg1
  4. 来宾域启动并运行 Oracle Solaris OS 之后,检验该磁盘是否可供访问且是否为完整磁盘。

    完整磁盘是一个具有八个分片的常规磁盘。

    以下示例说明如何列出磁盘 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 卷作为具有单个分片的磁盘导出

  1. 创建 ZFS 卷,用作具有单个分片的磁盘。

    以下示例介绍如何创建要用作具有单个分片的磁盘的 ZFS 卷 zdisk0

    service# zfs create -V 100m ldoms/domain/test/zdisk0

    卷的大小定义虚拟磁盘的大小。此示例会创建一个 100 MB 的卷,以获取 100 MB 的虚拟磁盘。

  2. 在控制域中,将相应的设备导出到该 ZFS 卷,并设置 slice 选项,以便将该卷作为具有单个分片的磁盘导出。
    primary# ldm add-vdsdev options=slice /dev/zvol/dsk/ldoms/domain/test/zdisk0 \
    zdisk0@primary-vds0
  3. 在控制域中,将卷指定给来宾域。

    下面介绍如何将卷 zdisk0 指定给来宾域 ldg1

    primary# ldm add-vdisk zdisk0 zdisk0@primary-vds0 ldg1
  4. 来宾域启动并运行 Oracle Solaris OS 之后,可列出磁盘(例如,c0d9),并且您可以查看该磁盘是否可供访问且是否为具有单个分片的磁盘 (s0)。
    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.3 软件中使用 ldm set-vdsdev 命令,并针对要作为具有单个分片的磁盘导出的所有卷设置 slice 选项。请参见 ldm(1M) 手册页。

  • 将以下行添加到服务域上的 /etc/system 文件中。

    set vds:vd_volume_force_slice = 1

    有关正确创建或更新 /etc/system 属性值的信息,请参见更新 /etc/system 文件中的属性值


    注 - 设置此可调参数会将所有卷强制作为具有单个分片的磁盘导出,且无法将任何卷作为完整磁盘导出。

不同类型的后端的导出方式汇总

后端
没有分片选项
设置了分片选项
磁盘(磁盘分片 2)
完整磁盘

导出整个磁盘。

单分片磁盘

仅导出分片 2

磁盘分片(不是分片 2)
单分片磁盘

分片始终作为具有单个分片的磁盘导出。

单分片磁盘
文件
完整磁盘
单分片磁盘
卷(包括 ZFS、Solaris Volume Manager 或 VxVM)
完整磁盘
单分片磁盘

将文件和磁盘分片作为虚拟磁盘导出的准则

本节包括将文件和磁盘分片作为虚拟磁盘导出的准则。

使用回送文件 (lofi) 驱动程序

如果使用回送文件 (lofi) 驱动程序将文件作为虚拟磁盘导出,则会添加一个额外的驱动程序层,并影响虚拟磁盘的性能。您可以改为直接将文件作为完整磁盘或具有单个分片的磁盘导出。请参见文件和卷导出

直接或间接导出磁盘分片

要将分片直接或间接(例如,通过 Solaris Volume Manager 卷)作为虚拟磁盘导出,应通过使用 prtvtoc 命令确保该分片不是始于物理磁盘的第一个块(块 0)。

如果直接或间接导出了始于物理磁盘的第一个块的磁盘分片,可能会覆盖物理磁盘的分区表,并导致该磁盘的所有分区不可访问。