跳过导航链接
退出打印视图
| Oracle VM Server for SPARC 2.0 管理指南

搜索范围:

- 本文档
- 整个文档库

### 虚拟磁盘后端

虚拟磁盘后端是存储虚拟磁盘数据的位置。后端可以是磁盘、磁盘分片、文件或卷（如 ZFS、Solaris 卷管理器或 VxVM）。后端在来宾域中既可以显示为完整磁盘，也可以显示为具有单个分片的磁盘，具体取决于在从服务域导出后端时是否设置了 `slice` 选项。默认情况下，虚拟磁盘后端以非独占方式导出为可读写的完整磁盘。

#### 物理磁盘或磁盘 LUN

物理磁盘或磁盘 LUN 始终作为完整磁盘导出。在这种情况下，虚拟磁盘驱动程序（`vds` 和 `vdc`）从虚拟磁盘转发 I/O，并充当到物理磁盘或磁盘 LUN 的传递通道。

通过在不设置 `slice` 选项的情况下导出与该磁盘分片 2 (`s2`) 相对应的设备，可从服务域导出物理磁盘或磁盘 LUN。如果使用 `slice` 选项导出某个磁盘的分片 2，则将只导出该分片，而非整个磁盘。

# 将物理磁盘作为虚拟磁盘导出

1. 将物理磁盘作为虚拟磁盘导出。

   例如，要将物理磁盘 `c1t48d0` 作为虚拟磁盘导出，则必须导出该磁盘的分片 2 (`c1t48d0s2`)。

       primary# ldm add-vdsdev /dev/dsk/c1t48d0s2 c1t48d0@primary-vds0

2. 将磁盘指定给来宾域。

   例如，将磁盘 (`pdisk`) 指定给来宾域 `ldg1`。

       primary# ldm add-vdisk pdisk c1t48d0@primary-vds0 ldg1

3. 来宾域启动并运行 Oracle Solaris OS 之后，检验该磁盘是否可供访问且是否为完整磁盘。

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

   例如，要检查的磁盘为 `c0d1`。

       ldg1# ls -1 /dev/dsk/c0d1s*
       /dev/dsk/c0d1s0
       /dev/dsk/c0d1s1
       /dev/dsk/c0d1s2
       /dev/dsk/c0d1s3
       /dev/dsk/c0d1s4
       /dev/dsk/c0d1s5
       /dev/dsk/c0d1s6
       /dev/dsk/c0d1s7

#### 物理磁盘分片

物理磁盘分片始终作为具有单个分片的磁盘导出。在这种情况下，虚拟磁盘驱动程序（`vds` 和 `vdc`）从虚拟磁盘转发 I/O，并充当到物理磁盘分片的传递通道。

通过导出相应的分片设备可从服务域导出物理磁盘分片。如果该设备与分片 2 不同，无论您是否指定了 `slice` 选项，该设备都将自动导出为具有单个分片的磁盘。如果该设备是磁盘的分片 2，则必须设置 `slice` 选项，才能仅将分片 2 作为具有单个分片的磁盘导出；否则整个磁盘将作为完整磁盘导出。

# 将物理磁盘分片作为虚拟磁盘导出

1. 将物理磁盘的某个分片作为虚拟磁盘导出。

   例如，要将物理磁盘 `c1t57d0` 的分片 0 作为虚拟磁盘导出，必须按照如下方式导出与分片 (`c1t57d0s0`) 相对应的设备。

       primary# ldm add-vdsdev /dev/dsk/c1t57d0s0 c1t57d0s0@primary-vds0

   您无需指定 `slice` 选项，因为分片始终作为具有单个分片的磁盘导出。

2. 将磁盘指定给来宾域。

   例如，将磁盘 (`pslice`) 指定给来宾域 `ldg1`。

       primary# ldm add-vdisk pslice c1t57d0s0@primary-vds0 ldg1

3. 来宾域启动并运行 Oracle Solaris OS 之后，可列出磁盘（例如，`c0d13`），并且您可以查看该磁盘是否可供访问。

       ldg1# ls -1 /dev/dsk/c0d13s*
       /dev/dsk/c0d13s0
       /dev/dsk/c0d13s1
       /dev/dsk/c0d13s2
       /dev/dsk/c0d13s3
       /dev/dsk/c0d13s4
       /dev/dsk/c0d13s5
       /dev/dsk/c0d13s6
       /dev/dsk/c0d13s7

   尽管有 8 个设备，但是，因为该磁盘是具有单个分片的磁盘，所以仅有第一个分片 (`s0`) 可用。

# 导出分片 2

- 要导出分片 2（例如，磁盘 `c1t57d0s2`），必须指定 `slice` 选项，否则，会导出整个磁盘。

      # ldm add-vdsdev options=slice /dev/dsk/c1t57d0s2 c1t57d0s2@primary-vds0

#### 文件和卷

文件或卷（例如，来自 ZFS 或 Solaris 卷管理器中）既可以作为完整磁盘导出，也可以作为具有单个分片的磁盘导出，具体取决于是否设置了 `slice` 选项。

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

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

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

注 - 在 Oracle Solaris 5/08 OS 发行版之前，将空白文件作为虚拟磁盘导出时，系统会写入默认磁盘标号并创建默认分区。但从 Oracle Solaris 5/08 OS 发行版开始，将不再有这种情况，您必须通过在来宾域中运行 `format`(1M) 才能创建分区。

# 将文件作为完整磁盘导出

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 之后，检验该磁盘是否可供访问且是否为完整磁盘。

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

   以下示例介绍如何列出磁盘 `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

##### 文件或卷作为具有单个分片的磁盘导出

如果已设置 `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 Solaris 10 5/08 OS 发行版之前，不存在 `slice` 选项，且卷会作为具有单个分片的磁盘导出。如果已存在将卷作为虚拟磁盘导出的配置，并且已将系统升级到 Oracle Solaris 10 5/08 OS，则卷现在将作为完整磁盘而非具有单个分片的磁盘导出。要保留旧行为并将卷作为具有单个分片的磁盘导出，您需要执行以下操作之一：

- 在 Oracle VM Server for SPARC 2.0 软件中使用 `ldm` `set-vdsdev` 命令，并针对要作为具有单个分片的磁盘导出的所有卷设置 `slice` 选项。有关此命令的更多信息，请参见 `ldm`(1M) 手册页。

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

      set vds:vd_volume_force_slice = 1

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

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

后端 | 没有分片选项 | 设置了分片选项
--- | --- | ---
磁盘（磁盘分片 2） | 完整磁盘1 | 具有单个分片的磁盘2
磁盘分片（不是分片 2） | 具有单个分片的磁盘3 | 具有单个分片的磁盘
文件 | 完整磁盘 | 具有单个分片的磁盘
卷（包括 ZFS、Solaris 卷管理器或 VxVM） | 完整磁盘 | 具有单个分片的磁盘

1导出整个磁盘。

2仅导出分片 2

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

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

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

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

可以使用回送文件 (`lofi`) 驱动程序将文件作为虚拟磁盘导出。但是，执行此操作会额外添加一个驱动程序层，从而影响虚拟磁盘的性能。您可以改为直接将文件作为完整磁盘或具有单个分片的磁盘导出。请参见文件和卷。

##### 直接或间接导出磁盘分片

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

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

版权所有 © 2007, 2010, Oracle 和/或其附属公司。 保留所有权利。 法律声明 |