ZFS、Solaris Volume Manager、または Veritas Volume Manager (VxVM) ボリュームは、サービスドメインからゲストドメインに仮想ディスクとしてエクスポートできます。ボリュームは、1 つのスライスディスク (slice オプションが ldm add-vdsdev コマンドで指定されている場合) またはフルディスクのいずれかとしてエクスポートできます。
次の例は、ボリュームを 1 つのスライスディスクとしてエクスポートする方法を示しています。
ゲストドメインの仮想ディスク (たとえば /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 が停止してバインドが解除されると、domain1 から仮想ディスクに格納されたデータは、Solaris Volume Manager ボリューム d0 を介して primary ドメインから直接アクセスできます。
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