1. Oracle VM Server for SPARC 软件概述
A. Oracle VM Server for SPARC 物理机到虚拟机转换工具
B. Oracle VM Server for SPARC Configuration Assistant
D. 将 XML 接口与 Logical Domains Manager 结合使用
虚拟磁盘后端是存储虚拟磁盘数据的位置。后端可以是磁盘、磁盘分片、文件或卷(如 ZFS、Solaris 卷管理器或 VxVM)。后端在来宾域中既可以显示为完整磁盘,也可以显示为具有单个分片的磁盘,具体取决于在从服务域导出后端时是否设置了 slice 选项。默认情况下,虚拟磁盘后端以非独占方式导出为可读写的完整磁盘。
物理磁盘或磁盘 LUN 始终作为完整磁盘导出。在这种情况下,虚拟磁盘驱动程序(vds 和 vdc)从虚拟磁盘转发 I/O,并充当到物理磁盘或磁盘 LUN 的传递通道。
通过在不设置 slice 选项的情况下导出与该磁盘分片 2 (s2) 相对应的设备,可从服务域导出物理磁盘或磁盘 LUN。如果使用 slice 选项导出某个磁盘的分片 2,则将只导出该分片,而非整个磁盘。
例如,要将物理磁盘 c1t48d0 作为虚拟磁盘导出,则必须导出该磁盘的分片 2 (c1t48d0s2)。
primary# ldm add-vdsdev /dev/dsk/c1t48d0s2 c1t48d0@primary-vds0
例如,将磁盘 (pdisk) 指定给来宾域 ldg1。
primary# ldm add-vdisk pdisk c1t48d0@primary-vds0 ldg1
完整磁盘是一个具有八 (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 作为具有单个分片的磁盘导出;否则整个磁盘将作为完整磁盘导出。
例如,要将物理磁盘 c1t57d0 的分片 0 作为虚拟磁盘导出,必须按照如下方式导出与分片 (c1t57d0s0) 相对应的设备。
primary# ldm add-vdsdev /dev/dsk/c1t57d0s0 c1t57d0s0@primary-vds0
您无需指定 slice 选项,因为分片始终作为具有单个分片的磁盘导出。
例如,将磁盘 (pslice) 指定给来宾域 ldg1。
primary# ldm add-vdisk pslice c1t57d0s0@primary-vds0 ldg1
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) 可用。
# 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) 才能创建分区。
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
完整磁盘是一个具有 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 卷 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 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
注 - 设置此可调参数会将所有卷强制作为具有单个分片的磁盘导出,且无法将任何卷作为完整磁盘导出。
|
本节包括将文件和磁盘分片作为虚拟磁盘导出的准则。
可以使用回送文件 (lofi) 驱动程序将文件作为虚拟磁盘导出。但是,执行此操作会额外添加一个驱动程序层,从而影响虚拟磁盘的性能。您可以改为直接将文件作为完整磁盘或具有单个分片的磁盘导出。请参见文件和卷。
要将分片直接或间接(例如,通过 Solaris 卷管理器卷)作为虚拟磁盘导出,应通过使用 prtvtoc(1M) 命令确保该分片不是始于物理磁盘的第一个块(块 0)。
如果直接或间接导出了始于物理磁盘的第一个块的磁盘分片,可能会覆写物理磁盘的分区表,并导致该磁盘的所有分区不可访问。