Solaris ボリュームマネージャの管理

第 10 章 RAID 1 (ミラー) ボリューム (作業)

この章では、 Solaris ボリュームマネージャの RAID 1 ボリュームに関連する作業について説明します。RAID 1 ボリュームの概念については、第 9 章「RAID 1 (ミラー) ボリューム (概要)」を参照してください。

RAID 1 ボリューム (作業マップ)

次の表に、Solaris ボリュームマネージャの RAID 1 ボリュームを管理するのに必要な作業を示します。

作業 

説明 

参照先 

 未使用のスライスからミラーを作成するSolaris ボリュームマネージャの GUI か metainit コマンドを使って、未使用のスライスからミラーを作成します。未使用のスライスから RAID 1 ボリュームを作成するには
 既存のファイルシステムからミラーを作成するSolaris ボリュームマネージャの GUI か metainit コマンドを使って、既存のファイルシステムからミラーを作成します。

ファイルシステムから RAID 1 ボリュームを作成するには

 ミラー化されたルートの代替起動デバイスへのパスを指定する 代替起動デバイスへのパスを起動手順の中で指定します。代替起動デバイスへのパスを記録するには

サブミラーを接続する 

Solaris ボリュームマネージャの GUI か metattach コマンドを使ってサブミラーを接続します。

サブミラーを接続するには

サブミラーを切り離す 

Solaris ボリュームマネージャの GUI か metattach コマンドを使ってサブミラーを切り離します。

サブミラーを切り離すには

サブミラーをオンラインまたはオフラインにする 

Solaris ボリュームマネージャの GUI か metaonline コマンドを使ってサブミラーをオンラインにします。Solaris ボリュームマネージャの GUI か metaoffline コマンドを使ってサブミラーをオフラインにします。

サブミラーをオフラインまたはオンラインにするには

サブミラー内のコンポーネントを有効にする 

Solaris ボリュームマネージャの GUI か metareplace コマンドを使って、サブミラー内のスライスを有効にします。

サブミラー内のスライスを有効にするには

ミラーの状態をチェックする 

Solaris ボリュームマネージャの GUI か metastat コマンドを使って、RAID 1 ボリュームの状態をチェックします。

ミラーとサブミラーの状態をチェックするには

ミラーオプションを変更する 

Solaris ボリュームマネージャの GUI か metaparam コマンドを使って、特定の RAID 1 ボリュームのオプションを変更します。

RAID 1 ボリュームオプションを変更するには

ミラーを拡張する 

Solaris ボリュームマネージャの GUI か metattach コマンドを使ってミラーの容量を拡張します。

RAID 1 ボリュームを拡張するには

サブミラー内のスライスを置き換える 

Solaris ボリュームマネージャの GUI か metareplace コマンドを使って、サブミラー内のスライスを置き換えます。

サブミラー内のスライスを交換するには

サブミラーを置き換える 

Solaris ボリュームマネージャの GUI か metattach コマンドを使ってサブミラーを置き換えます。

サブミラーを交換するには

ミラーを削除する (ミラー化を解除する) 

Solaris ボリュームマネージャの GUI、あるいは、metadetach または metaclear コマンドを使って、ファイルシステムのミラー化を解除します。

ファイルシステムのミラー化を解除するには

マウント解除できないファイルシステムのミラーを削除する (ミラー化を解除する) 

Solaris ボリュームマネージャの GUI、あるいは、 metadetach または metaclear コマンドを使って、マウント解除できないファイルシステムのミラーを削除 (ミラー化を解除) します。

マウント解除できないファイルシステムのミラー化を解除するには

ミラーを使ってバックアップを実行する 

Solaris ボリュームマネージャの GUI、あるいは、metaonlinemetaoffline コマンドを使って、ミラーのバックアップを行います。

RAID 1 ボリュームを使ってオンラインバックアップをとるには

RAID 1 ボリュームの作成

未使用のスライスから RAID 1 ボリュームを作成するには

  1. Solaris ボリュームマネージャ要素を作成するための前提条件RAID 1 ボリュームを作成するための背景情報を確認します。

  2. サブミラーとして使用する 2 つのストライプまたは連結を作成します。

    詳細は、RAID 0 (ストライプ方式) ボリュームを作成するにはRAID 0 (連結方式) ボリュームを作成するにはを参照してください。

  3. 次のどちらかの方法でミラーを作成します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、「アクション (Action) 」、「ボリュームを作成 (Create Volume) 」の順に選択し、画面の指示に従ってミラーを作成します。詳細は、オンラインヘルプを参照してください。

    • 次の形式の metainit コマンドを使って 1 面ミラーを作成します。

      metainit {volume-name } [-m ] { submirror-name...}
      • volume-name は作成するボリュームの名前です。

      • -m はミラーを作成することを意味します。

      • submirror-name には、ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。

      詳細は、次の例と metainit(1M) のマニュアルページを参照してください。

  4. 次のどちらかの方法で 2 番目のサブミラーを接続します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、変更するミラーを選択します。「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirrors) 」タブを開き、画面の指示に従って「サブミラーを割り当て (Attach Submirror) 」を開きます。詳細は、オンラインヘルプを参照してください。

    • 次の形式の metattach コマンドを実行します。

      metattach {mirror-name } {new-submirror-name ...}
      • volume-name は、変更する RAID 1 ボリュームの名前です。

      • submirror-name には、ミラーの次のサブミラーとして使用するコンポーネントの名前を指定します。

      詳細は、次の例と metattach(1M) のマニュアルページを参照してください。

例 — 2 面ミラーを作成する


# metainit d51 1 1 c0t0d0s2
d51: Concat/Stripe is setup
# metainit d52 1 1 c1t0d0s2
d52: Concat/Stripe is setup
# metainit d50 -m d51
d50: Mirror is setup
# metattach d50 d52
d50: Submirror d52 is attached

この例では、2 面ミラー d50 を作成します。 metainit コマンドは、 RAID 0 ボリュームである、2 つのサブミラー (d51d52) を作成します。 metainit -m コマンドは、RAID 0 ボリューム d51 から 1 面ミラーを作成します。metattach コマンドは、 d52 を接続して 2 面ミラーを作成し、同期を取り直します。 (接続されたサブミラー上のデータは、再同期の際に他のサブミラーによって上書きされます。) 最後にミラーが作成されたことを示すメッセージが表示されます。

例 — 2 面ミラーを作成する (再同期なし)


# metainit d51 1 1 c0t0d0s2
d51: Concat/Stripe is setup
# metainit d52 1 1 c1t0d0s2
d52: Concat/Stripe is setup
# metainit d50 -m d51 d52
metainit: d50: WARNING: This form of metainit is not recommended.
The submirrors may not have the same data.
Please see ERRORS in metainit(1M) for additional information.
d50: Mirror is setup

この例でも、2 面ミラー d50 を作成します。 metainit コマンドは、 RAID 0 ボリュームである、2 つのサブミラー (d51d52) を作成します。metainit -m コマンドは、2 つのサブミラーから RAID 0 ボリューム d51 を作成します。ただし、再同期は実行されません。このミラーの情報はすべて無効であるとみなされるため、ミラーを使用する前に、newfs などを実行することによって情報が再生成されます。

次の作業

新たに作成したミラーにファイルシステムを作成する場合は、『Solaris のシステム管理 (基本編)』の「ファイルシステムの作成 (手順)」を参照してください。データベースなど、raw ボリュームを使用するアプリケーションは、独自の方法でこのボリュームを認識できなければなりません。

ファイルシステムから RAID 1 ボリュームを作成するには

この手順では、既存のファイルシステムをミラー化します。このファイルシステムがマウント解除できる場合は、システムを再起動しなくても、ここに示すすべての手順を完了することができます。ルート (/) など、マウント解除できないファイルシステムの場合は、手順の中でシステムの再起動が必要になります。


注 -

ルート (/) をミラー化するときは、一次サブミラーに障害が発生し、システムを再起動しなければならない場合に備えて、二次ルートスライスの名前を記録しておく必要があります。この情報は、システム上に記録するのではなく、書き留めておきます。システムは常に使用可能であるとは限りません。代替起動デバイスの記録と代替起動デバイスからの起動については、第 24 章「Solaris ボリュームマネージャの障害追跡」を参照してください。

IA システムでルートをミラー化する場合は、RAID 0 や RAID 1 デバイスを作成する前に、起動情報を代替起動ディスクに記録する必要があります。 詳細は、『Solaris のシステム管理 (基本編)』の「SPARC: システムのブート (手順)」を参照してください。


この手順では、既存のデバイスを c1t0d0s0 とします。2 番目のデバイス c1t1d0s0 はミラーの 2 番目として使用します。サブミラーは d1d2、ミラーは d0 です。

  1. Solaris ボリュームマネージャ要素を作成するための前提条件RAID 1 ボリュームを作成するための背景情報を確認します。

  2. ミラー化するファイルシステムが含まれているスライスを特定します (この例では c1t0d0s0)。

  3. 次のどちらかの方法を使って、前の手順で特定したスライスに新しい RAID 0 ボリュームを作成します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、「アクション (Action) 」、「ボリュームを作成 (Create Volume) 」の順に選択し、画面の指示に従って RAID 0 ボリュームを作成します。詳細は、オンラインヘルプを参照してください。

    • metainit raid-0-volume-name -f 1 1 ctds-of-slice コマンドを実行します。


      # metainit d1 -f 1 1 c1t0d0s0
      
  4. 未使用のスライス (この例では c1t1d0s0) に 2 番目の RAID 0 ボリューム (連結) を作成します。これは、後で 2 番目のサブミラーとして使用します。2 番目のサブミラーのサイズは、最初のサブミラー以上でなければなりません。この手順では、次のどちらかの方法を使用します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、「アクション (Action) 」、「ボリュームを作成 (Create Volume) 」の順に選択し、画面の指示に従ってミラーを作成します。詳細は、オンラインヘルプを参照してください。

    • metainit second-raid-0-volume-name 1 1 ctds-of-slice コマンドを実行します。


      # metainit d2 1 1 c1t1d0s0
      
  5. 次のどちらかの方法で 1 面ミラーを作成します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、「アクション (Action) 」、「ボリュームを作成 (Create Volume) 」の順に選択し、画面の指示に従ってミラーを作成します。詳細は、オンラインヘルプを参照してください。

    • metainit mirror-name - m raid-0-volume-name コマンドを実行します。


      # metainit d0 -m d1
      

    詳細は、metainit(1M) のマニュアルページを参照してください。


    注 -

    既存のファイルシステムからミラーを作成する場合は、データが破壊されないように、次の 2 つの手順に忠実に従ってください。


    ルート (/) 以外のファイルシステムをミラー化する場合は、そのファイルシステムのマウント手順がミラー (ブロックデバイスではなく) を参照するように /etc/vfstab ファイルを編集する必要があります。

    /etc/vfstab ファイルの詳細は、『Solaris のシステム管理 (基本編)』の「ファイルシステムのマウント」を参照してください。

  6. 次のいずれかの方法で、新たにミラー化したファイルシステムをマウントし直します。

    • ルート (/) ファイルシステムをミラー化している場合は、metaroot d0 コマンドを実行します (d0 には、先ほど作成したミラーの名前を指定する)。次にシステムを再起動します。

      詳細は、metaroot(1M) のマニュアルページを参照してください。

    • マウント解除可能なファイルシステムをミラー化している場合は、ファイルシステムをマウント解除してから再びマウントします。

    • マウント解除できない、ルート (/) 以外のファイルシステムをミラー化している場合は、システムを再起動します。

  7. metattach コマンドを使って 2 番目のサブミラーを接続します。


    # metattach d0 d2
    

    詳細は、metattach(1M) のマニュアルページを参照してください。

  8. ルートファイルシステムをミラー化してい場合は、代替起動パスを書き留めておきます。

    詳細は、代替起動デバイスへのパスを記録するにはを参照してください。


注意 - 注意 -

まず metainit コマンドで 1 面ミラーを作成してから、metattach コマンドで追加のサブミラーを接続します。metattach コマンドを使用しないと、再同期は実行されません。この場合、Solaris ボリュームマネージャはミラーの両側が同一であるとみなし、両方を区別なく使用するため、データが破壊されるおそれがあります。


例 — 2 面ミラーを作成する (マウント解除できるファイルシステム)


# metainit -f d1 1 1 c1t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c1t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# umount /master
(ファイルシステムがミラーを参照するように /etc/vfstab ファイルを編集する)
# mount /master
# metattach d0 d2
d0: Submirror d2 is attached

まず、-f オプションを使って最初の連結 d1 を強制的に作成します。これには、/dev/dsk/c1t0d0s0 にマウントされたファイルシステム /master が含まれています。次に 2 番目の連結 d2/dev/dsk/c1t1d0s0 から作成します。(このスライスのサイズは d1 以上でなければなりません。) そして、metainit コマンドに -m オプションを付けて実行し、d1 から 1 面ミラー d0 を作成します。

次に、このファイルシステムのエントリがミラーを参照するように /etc/vfstab ファイルを編集します。たとえば、次の行を見てください。


/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 /var ufs 2 yes -

上記の行を次のように変更します。


/dev/md/dsk/d0 /dev/md/rdsk/d0 /var ufs 2 yes -

最後に、ファイルシステムをマウントし直し、サブミラー d2 をミラーに接続して、ミラーの同期を取り直します。RAID 0 と RAID 1 ボリュームが設定され、サブミラー d2 が接続されたことを示すメッセージが表示されます。

例 — ルート (/) からミラーを作成する


# metainit -f d1 1 1 c0t0d0s0
d11: Concat/Stripe is setup
# metainit d2 1 1 c0t1d0s0
d12: Concat/Stripe is setup
# metainit d0 -m d1
d10: Mirror is setup
# metaroot d0
# lockfs -fa
# reboot
...
# metattach d0 d2
d10: Submirror d12 is attached
# ls -l /dev/rdsk/c0t1d0s0
lrwxrwxrwx   1 root     root          88 Feb  8 15:51 /dev/rdsk/c1t3d0s0 ->
../../devices/iommu@f,e0000000/vme@f,df010000/SUNW,pn@4d,1080000/ipi3sc@0,0/i
d@3,0:a,raw

注 -

システムを再起動する前に、2 番目のサブミラーを接続しないでください。metaroot コマンドを実行した後、2 番目のサブミラーを接続する前に、システムを再起動する必要があります。


まず、-f オプションを使って最初の RAID 0 ボリューム d1 を強制的に作成します。これには、/dev/dsk/c0t0d0s0 にマウントされているファイルシステム、ルート (/) が含まれています。次に 2 番目の連結 d2/dev/dsk/c0t1d0s0 から作成します。(このスライスのサイズは d1 以上でなければなりません)。そして、metainit コマンドに -m オプションを付けて実行し、ルート (/) を含む連結から 1 面ミラー d0 を作成します。

次に metaroot コマンドを使って /etc/vfstab ファイルと /etc/system ファイルを編集し、システムがボリューム上のルート (/) ファイルシステムから起動されるように指定します (再起動を行う前に lockfs -fa コマンドを実行するようにします)。 再起動が終わると、サブミラー d2 をミラーに接続し、ミラーの再同期を実行します(連結とミラーが設定され、サブミラー d2 が接続されたことを示すメッセージが表示されます)。 最後に、ルート raw デバイスに対して ls -l コマンドを実行して、代替ルートデバイスへのパスを表示します。このパスは、このデバイスからシステムを起動しなければならない状況が発生したときに必要になります。

例 — 2 面ミラーを作成する (マウント解除できないファイルシステム —/usr)


# metainit -f d12 1 1 c0t3d0s6
d12: Concat/Stripe is setup
# metainit d22 1 1 c1t0d0s6
d22: Concat/Stripe is setup
# metainit d2 -m d12
d2: Mirror is setup
(/usr がミラーを参照するように /etc/vfstab ファイルを編集する)
# reboot
...
# metattach d2 d22
d2: Submirror d22 is attached

まず、-f オプションを指定して最初の連結 d12 を強制的に作成します。これには、/dev/dsk/c0t3d0s6 にマウントされているファイルシステム /usr が含まれています。次に 2 番目の連結 d22/dev/dsk/c1t0d0s6 から作成します。(このスライスのサイズは d12 以上でなければなりません。) metainit コマンドに -m オプションを付けて実行し、/usr を含む連結から 1 面ミラー d2 を作成します。次に、/usr のエントリがミラーを参照するように /etc/vfstab ファイルを編集します。たとえば、次の行を見てください。


/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 yes -

上記の行を次のように変更します。


/dev/md/dsk/d2 /dev/md/rdsk/d2 /usr ufs 1 yes -

再起動が終わると、2 番目のサブミラー d22 がミラーに接続され、ミラーの再同期が実行されます。(連結とミラーが設定され、サブミラー d22 が接続されたことを示すメッセージが表示されます。)

例 — swap からミラーを作成する


# metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
# metainit d21 1 1 c1t0d0s1
d21: Concat/Stripe is setup
# metainit d1 -m d11
d1: Mirror is setup
(swap がミラーを参照するように /etc/vfstab ファイルを編集する)
# reboot
...
# metattach d1 d21
d1: Submirror d21 is attached

まず、-f オプションを指定して最初の連結 d11 を強制的に作成します。これには、/dev/dsk/c0t0d0s1 にマウントされているファイルシステム swap が含まれています。次に 2 番目の連結 d21/dev/dsk/c1t0d0s1 から作成します。(このスライスのサイズは d11 以上でなければなりません) 。metainit コマンドに -m オプションを付けて実行し、swap を含む連結から 1 面ミラー d1 を作成します。次に、/etc/vfstab ファイルにswap のエントリがある場合は、このエントリがミラーを参照するようにファイルを編集する必要があります。たとえば、次の行を見てください。


/dev/dsk/c0t0d0s1 - - swap - no -

上記の行を次のように変更します。


/dev/md/dsk/d1 - - swap - no -

再起動が終わると、2 番目のサブミラー d21 がミラーに接続され、ミラーの再同期が実行されます。(連結とミラーが設定され、サブミラー d21 が接続されたことを示すメッセージが表示されます。)

swap をミラー化した場合、クラッシュダンプを保存するためには、dumpadm コマンドを使ってダンプデバイスをボリュームとして構成する必要があります。たとえば、swap デバイスの名前が /dev/md/dsk/d2 であれば、dumpadm コマンドを使ってこのデバイスをダンプデバイスとして設定します。

ルート (/) のミラー化に関する特殊な考慮事項

ルート (/) をミラー化する作業は、マウント解除できない他のファイルシステムをミラー化する場合の作業と同じです。ただし、ルートのミラー化では、/etc/vfstab ファイルを手動で編集する代わりに、metaroot コマンドを実行する必要があります。詳細は、ファイルシステムから RAID 1 ボリュームを作成するにはを参照してください。次の各項では、ルート (/) ファイルシステムのミラー化に関する特殊な考慮事項と問題点について説明します。

起動時の警告

ルート (/) ファイルシステムをミラー化すると、エラーメッセージがコンソールに表示され、(/etc/syslog.conf での定義に従って) システムログに記録されます。 これらのメッセージは問題を意味するものではありません。現在使用していないデバイスタイプすべてに対して表示されます。使用していないモジュールは強制的にロードできないからです。次のようなエラーメッセージが表示されます。


Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_trans failed
Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_raid failed
Jul 13 10:17:42 ifr genunix: [ID 370176 kern.warning] WARNING: forceload of 
    misc/md_hotspares failed
このような警告メッセージは無視してかまいません。

代替起動デバイスへのパスを記録するには

ルート (/) をミラー化する場合は、一次デバイスに障害が発生したときのために代替起動デバイスへのパスが必要になります。代替起動デバイスを検出および記録する方法は、システムのアーキテクチャによって異なります。詳細は、SPARC: 例 — 代替起動デバイスへのパスを記録するまたは IA: 例 — 代替起動デバイスへのパスを記録するを参照してください。

SPARC: 例 — 代替起動デバイスへのパスを記録する

この例では、代替ルートデバイスへのパスを調べます。そのためには、ルート (/) ミラーに 2 番目のサブミラーとして接続されているスライスに対して ls -l コマンドを実行する必要があります。


# ls -l /dev/rdsk/c1t3d0s0
lrwxrwxrwx 1  root root  55 Mar 5 12:54  /dev/rdsk/c1t3d0s0 -> \ 
../../devices/sbus@1,f8000000/esp@1,200000/sd@3,0:a

ここで、/devices ディレクトリに続く次の文字列を記録しておきます。 /sbus@1,f8000000/esp@1,200000/sd@3,0:a

OpenBoot TM Prom 付きのシステムで使用するユーザーは、OpenBoot の nvalias コマンドを使って、二次ルート (/) ミラー用の「バックアップルート」デバイス別名を定義できます。たとえば、次のように指定します。


ok  nvalias backup_root /sbus@1,f8000000/esp@1,200000/sd@3,0:a

次に、boot-device 別名が一次サブミラーと二次サブミラーの両方を参照するようにこの別名を再定義し、構成を保存します。サブミラーは、指定された順に使用されます。


ok printenv boot-device
boot-device =         disk net
ok setenv boot-device disk backup-root net
boot-device =         disk backup-root net
ok nvstore

一次ルートディスクに障害が発生すると、システムは 2 番目のサブミラーから自動的に起動されます。自動起動ではなく、手動で起動する場合は、次のように入力します。


ok  boot backup_root

IA: 例 — 代替起動デバイスへのパスを記録する

この例では、代替起動デバイスへのパスを調べます。そのためには、ルート (/) ミラーに 2 番目のサブミラーとして接続されているスライスに対して ls -l コマンドを実行する必要があります。


# ls -l /dev/rdsk/c1t0d0s0
lrwxrwxrwx 1  root root  55 Mar 5 12:54  /dev/rdsk/c1t0d0s0 -> ../.
./devices/eisa/eha@1000,0/cmdk@1,0:a

ここで、/devices ディレクトリに続く次の文字列を記録しておきます。 /eisa/eha@1000,0/cmdk@1,0:a

代替起動デバイスからの起動

ミラー化されたルート (/) の一次サブミラーに障害が発生した場合は、他のサブミラーからシステムを起動する必要があります。 ミラーの 2 番目のサブミラーから自動的に起動するように構成することもできますし、2 番目のサブミラーから手動で起動するように構成することも可能です。

詳細は、『Solaris のシステム管理 (基本編)』の「SPARC: システムのブート (手順)」を参照してください。

サブミラーに関する作業

サブミラーを接続するには

  1. サブミラーとして使用するコンポーネント (連結またはストライプ) を特定します。

    サブミラーのサイズは、ミラー内の既存のサブミラーと同じかそれ以上でなければなりません。サブミラーとして使用するボリュームをまだ作成していない場合は、RAID 0 (ストライプ方式) ボリュームの作成または RAID 0 (連結方式) ボリュームを参照してください。

  2. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  3. 次のどちらかの方法でサブミラーを接続します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってサブミラーを接続します。詳細は、オンラインヘルプを参照してください。

    • metattach mirror submirror コマンドを実行します。


      # metattach mirror submirror
      

    詳細は、metattach(1M) のマニュアルページを参照してください。


注 -

can't attach labeled submirror to an unlabeled mirror」というエラーメッセージが表示された場合、ミラーに RAID 0 ボリュームを接続できなかったことを意味します。ラベル付きボリューム (サブミラー) は、最初のコンポーネントがシリンダ 0 から始まります。ラベルなしのボリュームは、最初のコンポーネントがシリンダ 1 から始まります。ラベル付きサブミラーのラベルを壊す恐れがあるので、ラベル付きサブミラーをラベルなしのミラーに接続することを Solaris ボリュームマネージャは認めません。


例 — サブミラーを接続する


# metastat d30
d30: mirror
    Submirror 0: d60
      State: Okay   
...
# metattach d30 d70
d30: submirror d70 is attached
# metastat d30
d30: mirror
    Submirror 0: d60
      State: Okay        
    Submirror 1: d70
      State: Resyncing
    Resync in progress: 41 % done
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 2006130 blocks
...

この例では、サブミラー d70 を 1 面ミラー d30 に接続して 2 面ミラーを作成します。ミラー d30 は、最初、サブミラー d60 から構成されています。サブミラー d70 は RAID 0 ボリュームです。まず、サブミラーを接続する前に、metastat コマンドでミラーが「正常 (Okay) 」状態であることを確認します。metattach コマンドを実行すると、新しいサブミラーと既存のミラーの同期がとられます。ミラーに新しいサブミラーが接続されると、そのことを示すメッセージが表示されます。サブミラーとミラーの同期がとられていることを確認するために、 metastat コマンドを実行します。

サブミラーを切り離すには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でサブミラーを切り離します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってサブミラーを切り離します。詳細は、オンラインヘルプを参照してください。

    • metadetach コマンドを使ってミラーからサブミラーを切り離します。


      # metadetach mirror submirror
      

      詳細は、metadetach(1M) のマニュアルページを参照してください。

例 — サブミラーを切断する


# metastat
d5: mirror
    Submirror 0: d50
...
# metadetach d5 d50
d5: submirror d50 is detached

この例では、metadetach コマンドを使って、ミラー d5 からサブミラー d50 を切り離します。d50 のスライスは他の場所で再使用されます。サブミラーが切り離されると、そのことを示すメッセージが表示されます。

サブミラーをオフラインまたはオンラインにするには

metaonline コマンドを実行できるのは、そのサブミラーが metaoffline コマンドによってオフラインにされている場合に限られます。metaonline コマンドを実行すると、サブミラーとミラーの再同期が自動的に開始します。


注 -

metaoffline コマンドの機能は、metadetach コマンドの機能に似ています。ただし、metaoffline コマンドでは、サブミラーとミラーの論理的な関連付けは切り離されません。


  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でサブミラーをオンラインまたはオフラインにします。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってサブミラーをオンラインまたはオフラインにします。詳細は、オンラインヘルプを参照してください。

    • metaoffline コマンドでサブミラーをオフラインにします。


      # metaoffline mirror submirror
      

      詳細は、metaoffline(1M) のマニュアルページを参照してください。

    • metaonline コマンドでサブミラーをオンラインにします。


      # metaonline mirror submirror
      

      詳細は、metaonline(1M) のマニュアルページを参照してください。

例 — サブミラーをオフラインにする


# metaoffline d10 d11
d10: submirror d11 is offlined

この例では、サブミラー d11 をミラー d10 からオフラインにします。 読み取りは他のサブミラーから行われます。最初の書き込みが行われると、ミラーは同期していない状態になります。この不整合の状態は、オフラインにしたサブミラーをオンラインに戻すと訂正されます。

例 — サブミラーをオンラインにする


# metaonline d10 d11
d10: submirror d11 is onlined

この例では、サブミラー d11 をミラー d10 でオンラインに戻します。

サブミラー内のスライスを有効にするには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でサブミラー内のスライスを有効にします。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってスライスを有効にします。詳細は、オンラインヘルプを参照してください。

    • metareplace コマンドを使って、サブミラー内のエラーが発生したスライスを有効にします。


      # metareplace -e mirror failed-slice 
      

      metareplace コマンドを実行すると、修復または交換されたスライスとミラーの他の部分との再同期が自動的に開始されます。

      詳細は、metareplace(1M) のマニュアルページを参照してください。

例 — サブミラー内のスライスを有効にする


# metareplace -e d11 c1t4d0s7
d11: device c1t4d0s7 is enabled

この例の場合、ミラー d11 には、ソフトエラーが発生したスライス c1t4d0s7 を使用するサブミラーがあります。-e オプションを付けた metareplace コマンドを実行して、エラーの発生したスライスを有効にします。


注 -

物理ディスクに障害が発生した場合は、そのディスクをシステム上で利用可能な他のディスク (およびスライス) と交換できます (サブミラー内のスライスを交換するにはを参照)。あるいは、ディスクを修復または交換し、フォーマットした上で、この例のように、 - e オプションを指定した metareplace コマンドを使用することもできます。


RAID 1 ボリュームの保守

Solaris ボリュームマネージャでは RAID 1 ボリュームやサブミラーの状態が表示されるため、システム管理者は、どのような保守が必要であるか判断できます。次の表に、ミラーの状態を示します。

表 10-1 サブミラーの状態

状態 

意味 

正常 (Okay) 

サブミラーにはエラーがなく正常に動作しています。 

再同期中 (Resyncing) 

サブミラーで再同期処理が実行されている。エラーが発生したが、すでに訂正され、オンラインに戻されたか、あるいは、新しいサブミラーが接続されたところです。 

保守が必要 (Needs Maintenace) 

サブミラー内のスライスに入出力エラーまたはオープンエラーが発生しました。スライスに対するすべての読み取りと書き込みはすでに停止されています。 

また、metastat コマンドを実行すると、サブミラー内のスライスごとに、「デバイス (Device) 」(ストライプに属するスライスのデバイス名) や、「開始ブロック (Start Block) 」(スライスが始まるブロック)、「Dbase」(スライスに状態データベースの複製が含まれているかどうか)、「状態」(スライスの状態)、「ホットスペア (Hot Spare) 」(障害が発生したスライスのホットスペアとして使用されるスライス) が表示されます。

ミラーのエラーに対処する場合は、おそらく、スライスの状態がもっとも重要な情報となります。サブミラーの状態は、「正常 (Okay) 」や「保守が必要 (Needs Maintenance) 」などの一般的な状態情報を提供するだけです。サブミラーの状態が「保守が必要 (Needs Maintenance) 」の場合は、スライスの状態を参照する必要があります。スライスの状態が「保守 (Maintenance) 」の場合と「最後にエラー (Last Erred) 」の場合では、障害から回復するための処置が異なります。スライスの状態が「保守 (Maintenance) 」だけの場合は、どのような順序でスライスを修理してもかまいませんが、「保守 (Maintenance) 」と「最後にエラー (Last Erred) 」のスライスが混在している場合は、「保守 (Maintenance) 」のスライスを修復してから「最後にエラー (Last Erred) 」のスライスを修復する必要があります。詳細は、RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要を参照してください。

次の表に、サブミラーのスライスの状態と実行可能な処置を示します。

表 10-2 サブミラーのスライスの状態

状態 

意味 

処置 

正常 (Okay) 

コンポーネントにエラーはなく、正常に動作しています。 

必要ない 

再同期中 (Resyncing) 

コンポーネントで再同期処理が実行されています。エラーが発生したが、すでに訂正され、オンラインに戻されたか、あるいは、新しいサブミラーが接続されています。 

必要であれば、再同期処理が終了するまでサブミラーの状態を監視します。 

保守 (Maintenance) 

コンポーネントで 入出力エラーかオープンエラーが発生しました。このコンポーネントに対するすべての読み取りと書き込みはすでに停止されています。 

障害が発生したコンポーネントを有効にするか交換します。詳細は、サブミラー内のスライスを有効にするには、または サブミラー内のスライスを交換するにはを参照してください。metastat コマンドを実行すると、metareplace コマンドを使って行うべき処置を示す invoke 回復メッセージが表示されます。 metareplace -e コマンドを使用することもできます。

最後にエラー (Last Erred) 

コンポーネントで 入出力エラーかオープンエラーが発生しました。しかし、別のスライスに障害があるため、データは他のスライスには複製されません。したがって、入出力は引き続きこのスライスに対して行われます。この入出力がエラーになると、ミラー入出力は失敗します。 

まず、「保守 (Maintenance) 」状態のコンポーネントを有効にするか、交換します。詳細は、サブミラー内のスライスを有効にするには、または サブミラー内のスライスを交換するにはを参照してください。通常は、このエラーがあるとデータが失われるため、ミラーの修復後にミラーを検証する必要があります。ファイルシステムの場合は、fsck コマンドを実行してからデータをチェックします。アプリケーションやデータベースでは、独自の方法でデバイスを検証できなければなりません。

ミラーとサブミラーの状態をチェックするには

    次のどちらかの方法でミラーやサブミラーの状態をチェックします。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択します。 画面の指示に従って状態を表示します。詳細は、オンラインヘルプを参照してください。

    • ミラーに対して metastat コマンドを実行し、各サブミラーの状態、パス番号、読み取りオプション、書き込みオプション、およびミラーの合計ブロック数を表示します。たとえば、1 面ミラー d70 の状態をチェックするには、次のようにします。


      # metastat d70
      d70: Mirror
          Submirror 0: d71
            State: Okay         
          Pass: 1
          Read option: roundrobin (default)
          Write option: parallel (default)
          Size: 12593637 blocks
      
      d71: Submirror of d70
          State: Okay         
          Size: 12593637 blocks
          Stripe 0:
              Device              Start Block  Dbase State        Reloc  Hot Spare
              c1t3d0s3                   0     No    Okay         Yes    
          Stripe 1:
              Device              Start Block  Dbase State        Reloc  Hot Spare
              c1t3d0s4                   0     No    Okay         Yes    
          Stripe 2:
              Device              Start Block  Dbase State        Reloc  Hot Spare
              c1t3d0s5                   0     No    Okay         Yes    

      ミラーのパス番号や、読み取りオプション、書き込みオプションを変更する手順については、RAID 1 ボリュームオプションを変更するにはを参照してください。

      デバイス状態のチェックについては、metastat(1M) のマニュアルページを参照してください。

例 — RAID 1 ボリュームの状態をチェックする

metastat コマンドの出力例を以下に示します。


# metastat
d0: Mirror
    Submirror 0: d1
      State: Okay        
    Submirror 1: d2
      State: Okay        
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 5600 blocks
 
d1: Submirror of d0
    State: Okay        
    Size: 5600 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t2d0s7                   0     No    Okay        
 
...

metastat コマンドは、ミラーのサブミラーごとに、その状態、「invoke」行 (エラーがある場合)、割り当てられたホットスペア集合 (ホットスペアがある場合)、ブロック数、サブミラーの各スライスの情報を表示します。

RAID 1 ボリュームオプションを変更するには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 ボリュームオプションを変更するための背景情報を確認します。

  3. 次のどちらかの方法でミラーオプションを変更します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択します。 画面の指示に従ってオプションを変更します。詳細は、オンラインヘルプを参照してください。

    • metaparam コマンドを使ってミラーのオプションを表示および変更します。たとえば、読み取りポリシーについて、ミラーを「round robin」から、「first」に変更する場合は、次のコマンドを実行します。


      # metaparam -r first mirror  
      

      ミラーオプションの詳細は、RAID 1 ボリュームのオプション を参照してください。また、metaparam(1M) のマニュアルページも参照してください。

例 — RAID 1 ボリュームの読み取りポリシーを変更する


# metaparam -r geometric d30
# metaparam d30
d30: mirror current parameters are:
    Pass: 1
    Read option: geometric (-g)
    Write option: parallel (default)

この例の -r オプションは、ミラーの読み取りポリシーを geometric に変更します。

例 — RAID 1 ボリュームの書き込みポリシーを変更する


# metaparam -w serial d40
# metaparam d40
d40: mirror current parameters are:
    Pass: 1
    Read option: roundrobin (default)
    Write option: serial (-S)

この例の -w オプションは、ミラーの書き込みポリシーを serial に変更します。

例 — RAID 1 ボリュームのパス番号を変更する


# metaparam -p 5 d50
# metaparam d50
d50: mirror current parameters are:
    Pass: 5
    Read option: roundrobin (default)
    Write option: parallel (default)

-p オプションは、ミラーのパス番号を 5 に変更します。

RAID 1 ボリュームを拡張するには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でミラーを拡張します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってサブミラーを拡張します。詳細は、オンラインヘルプを参照してください。

    • metattach コマンドを使って各サブミラーにスライスを接続します。たとえば、サブミラーにコンポーネントを接続するには、次のコマンドを実行します。


      # metattach submirror component
      

      ミラー内のすべてのサブミラーを拡張する必要があります。詳細は、metattach(1M) のマニュアルページを参照してください。

例 — マウントしているファイルシステムを持つ 2 面ミラーを拡張する


# metastat
d8: Mirror
    Submirror 0: d9
      State: Okay        
    Submirror 1: d10
      State: Okay        
...
# metattach d9 c0t2d0s5
d9: component is attached
# metattach d10 c0t3d0s5
d10: component is attached

この例では、ミラー化したマウント済みのファイルシステムを拡張します。そのために、2 つのディスクドライブをミラーの 2 つのサブミラーに連結します。ミラー d8 は、2 つのサブミラー d9d10 から構成されています。

次の作業

UFS の場合は、ミラーボリュームに対して growfs(1M) コマンドを実行します。詳細は、ファイルシステムを拡張するにはを参照してください。

データベースなど、raw ボリュームを使用するアプリケーションは、独自の方法で領域を拡張できなければなりません。

RAID 1 ボリュームのコンポーネント障害に対する処置

サブミラー内のスライスを交換するには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でミラー内のスライスを交換します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってスライスを交換します。詳細は、オンラインヘルプを参照してください。

    • 次の形式の metareplace コマンドを使ってサブミラーのスライスを交換します。

      metareplace { mirror-name} { component-name...}
      • mirror-name は、作成するボリュームの名前です。

      • component-name には、置き換えられるコンポーネントの名前を指定します。

      詳細は、次の例と metainit(1M) のマニュアルページを参照してください。

例 — ミラー内の障害が発生したスライスを交換する

次の例では、障害が発生したスライスを交換します。ただし、システムは、ホットスペア集合を使って障害が発生したディスクを自動的に交換するようには構成されていないものとします。ホットスペア集合については、第 15 章「ホットスペア集合 (概要)」を参照してください。


# metastat d6
d6: Mirror
    Submirror 0: d16
      State: Okay        
    Submirror 1: d26
      State: Needs maintenance
...
d26: Submirror of d6
    State: Needs maintenance
    Invoke: metareplace d6 c0t2d0s2 <new device>
...
# metareplace d6 c0t2d0s2 c0t2d2s2
d6: device c0t2d0s2 is replaced with c0t2d2s2

metastat コマンドを使用して、ミラー d6 にサブミラー d26 があり、スライスの状態が「保守が必要 (Needs maintenance) 」であることを確認します。metareplace コマンドにより、metastat コマンドの出力中の「起動」行に従って、このスライスをシステム内の別のスライスで置き換えます。スライスが置き換えられ、サブミラーの再同期が開始されたことを示すメッセージが表示されます。

サブミラーを交換するには

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要RAID 1 ボリュームの背景情報を確認します。

  3. 次のどちらかの方法でサブミラーを交換します。

    • Solaris 管理コンソール内の「拡張ディスク」から「ボリューム (Volumes) 」ノードを開き、ミラーを選択し、「アクション (Action) 」、「プロパティ (Properties) 」の順に選択し、「サブミラー (Submirror) 」タブをクリックします。画面の指示に従ってサブミラーを交換します。詳細は、オンラインヘルプを参照してください。

    • metadetachmetaclear metatinit、および metattach コマンドを使って、サブミラー全体を交換します。

例 — ミラー内のサブミラーを交換する

次の例では、アクティブなミラー内のサブミラーを交換します。


注 -

新しいボリューム d22 の構成は、置き換えるコンポーネントによって異なります。この例のように、連結で連結を置き換える場合は問題ありませんが、連結でストライプを置き換えた場合には性能が低下するおそれがあり、最適な置き換えとはいえません。



# metastat d20
d20: Mirror
    Submirror 0: d21
      State: Okay        
    Submirror 1: d22
      State: Needs maintenance
...
# metadetach -f d20 d22
d20: submirror d22 is detached
# metaclear -f d22
d22: Concat/Stripe is cleared
# metainit d22 2 1 c1t0d0s2 1 c1t0d1s2
d22: Concat/Stripe is setup
# metattach d20 d22
d20: components are attached

metastat コマンドを使用して、2 面ミラー d20 にサブミラー d22 があり、その状態が「保守が必要 (Needs maintenance) 」であることを確認します。この例では、サブミラー全体を削除し、作成し直します。 metadetach コマンドに、-f オプションを指定してミラーから障害のあるサブミラーを強制的に切り離します。metaclear コマンドは、サブミラーを削除します。metainit コマンドは、新しいスライスからサブミラー d22 を再作成します。metattach コマンドは、再作成されたサブミラーを接続します。これによって、ミラーの再同期が自動的に開始されます。


注 -

ミラーが 1 面ミラーとなっている間は、データの冗長性が一時的に失われます。


RAID 1 ボリュームの削除 (ミラー化の解除)

ファイルシステムのミラー化を解除するには

この手順では、システムの動作中にマウント解除できるファイルシステムのミラー化を解除します。ルート (/)、 /var/usrswap など、システムの動作中にマウント解除できないファイルシステムのミラー化を解除する場合は、マウント解除できないファイルシステムのミラー化を解除するにはを参照してください。

  1. すべてのデータの最新のバックアップを取っているか確認します。また、この操作にはルート権限が必要です。

  2. RAID 1 ボリュームの背景情報を確認します。

  3. 少なくとも 1 つのサブミラーが「正常 (Okay) 」状態であることを確認します。


    # metastat
    
  4. ファイルシステムをマウント解除します。


    # umount /home
    
  5. サブミラーを切り離します。このサブミラーは、この後もこのファイルシステムのために使用されます。

    詳細は、metadetach(1M) のマニュアルページを参照してください。


    # metadetach d1 d10
    
  6. ミラーと残りのサブコンポーネントを削除します。

    詳細は、metaclear(1M) のマニュアルページを参照してください。


    # metaclear -r d1
    
  7. 必要であれば、手順 5 で切り離したコンポーネントを使用するように、/etc/vfstab ファイルを編集します。

  8. ファイルシステムを再びマウントします。

例 — /opt ファイルシステムのミラー化を解除する


# metastat d4
d4: Mirror
    Submirror 0: d2
      State: Okay        
    Submirror 1: d3
      State: Okay        
...
# umount /opt
# metadetach d4 d2
d4: submirror d2 is detached
# metaclear -r d4
d4: Mirror is cleared
d3: Concat/Stripe is cleared
(/opt のエントリが d4 の代わりにそのスライスまたはボリュームを指すように /etc/vfstab ファイルを編集する)
# mount /opt

この例の /opt ファイルシステムは 2 面ミラー d4 から構成されています。そのサブミラー d2d3 はそれぞれ、スライス /dev/dsk/c0t0d0s0 /dev/dsk/c1t0d0s0 から構成されています。metastat コマンドを使用して、少なくとも 1 つのサブミラーが「正常 (Okay) 」状態であることを確認します。「正常 (Okay) 」状態のサブミラーが存在しないミラーは、最初に修復しなければなりません。 次に、このファイルシステムのマウントを解除してから、サブミラー d2 を切り離します。metaclear -r コマンドは、このミラーと他のサブミラー d3 を削除します。

次に、/opt のエントリが、該当するスライスを参照するように /etc/vfstab ファイルを編集します。たとえば、d4 がミラーで、d2 がサブミラーであれば、次のように変更します。


/dev/md/dsk/d4  /dev/md/rdsk/d4  /opt ufs  2  yes -

上記の行を次のように変更します。


/dev/md/dsk/d2  /dev/md/rdsk/d2  /opt ufs  2  yes -

サブミラー名を使用することによって、ファイルシステムをボリュームにマウントしたままにできます。最後に、/opt ファイルシステムを再びマウントします。


注 -

/etc/vfstab ファイルで d4 の代わりに d2 を使用すれば、このミラーのミラー化を解除したことになります。d2 は 1 つのスライスから構成されているため、このデバイスでボリュームをサポートしたくなければ、ファイルシステムをスライス名 (/dev/dsk/c0t0d0s0) にマウントできます。


マウント解除できないファイルシステムのミラー化を解除するには

ルート (/)、 /usr/optswap など、システムが通常に動作している間はマウント解除できないファイルシステムのミラー化を解除するには、次の手順を実行します。

  1. metastat コマンドを実行して、少なくとも 1 つのサブミラーの状態が「正常 (Okay) 」であることを確認します。

  2. ルート (/)、/usr/opt、または swap を含むミラーに対して metadetach コマンドを実行して、このミラーを 1 面ミラーにします。

  3. /usr/opt swap の場合は、/etc/vfstab ファイルを編集して、このファイルシステムのエントリが Solaris ボリュームマネージャ以外のデバイス (スライス) を参照するようにします。

  4. ルート (/) だけの場合は、metaroot コマンドを実行します。

  5. システムを再起動します。

  6. metaclear コマンドを実行してミラーとサブミラーを削除します。

例 — ルート (/) のミラー化を解除する


# metadetach d0 d20
d0: submirror d20 is detached
# metaroot /dev/dsk/c0t3d0s0
# reboot
...
# metaclear -r d0
d0: Mirror is cleared
d10: Concat/Stripe is cleared
# metaclear d20
d20: Concat/Stripe is cleared

この例では、ルート (/) は d0 という名前の 2 面ミラーです。そのサブミラー d10 d20 はそれぞれ、スライス /dev/dsk/c0t3d0s0/dev/dsk/c1t3d0s0 から構成されています。metastat コマンドを使用して、少なくとも 1 つのサブミラーが「正常 (Okay) 」状態であることを確認します。(「正常 (Okay) 」状態のサブミラーが存在しないミラーは、最初に修復しなければなりません。) 次に、サブミラー d20 を切り離して、ミラー d0 を 1 面ミラーにします。metaroot コマンドには、システムの起動に使用する rootslice を指定します。このコマンドは、/etc/system/etc/vfstab ファイルを編集して、ルート (/) のミラー化を指定する情報を削除します。再起動後の metaclear -r コマンドは、ミラーともう 1 つのサブミラー d10 を削除します。 最後の metaclear コマンドは、サブミラー d20 を削除します。

例 — swap のミラー化を解除する


# metastat d1
d1: Mirror
    Submirror 0: d11
      State: Okay        
    Submirror 1: d21
      State: Okay        
...
# metadetach d1 d21
d1: submirror d21 is detached
(/etc/vfstab ファイルを編集して、swap のエントリをメタデバイスからスライス名に変更する)
# reboot
...
# metaclear -r d1
d1: Mirror is cleared
d11: Concat/Stripe is cleared
# metaclear d21
d21: Concat/stripe is cleared

この例では、swapd1 という名前の 2 面ミラーです。そのサブミラー d11d21 はそれぞれ、スライス /dev/dsk/c0t3d0s1 /dev/dsk/c1t3d0s1 から構成されています。metastat コマンドを使用して、少なくとも 1 つのサブミラーが「正常 (Okay) 」状態であることを確認します。(「正常 (Okay) 」状態のサブミラーが存在しないミラーは、最初に修復しなければなりません。) 次に、サブミラー d21 を切り離して、ミラー d1 を 1 面ミラーにします。次に、/etc/vfstab ファイルを編集して、swap のエントリが、サブミラー d21 のスライスを参照するようにします。たとえば、d1 がミラーで、d21 がスライス /dev/dsk/c0t3d0s1 を含むサブミラーであれば、次のように変更します。


/dev/md/dsk/d1 - - swap - no -

上記の行を次のように変更します。


/dev/dsk/c0t3d0s1 - - swap - no -

再起動後の metaclear -r コマンドは、ミラーともう 1 つのサブミラー d11 を削除します。 最後の metaclear コマンドは、サブミラー d21 を削除します。

ミラーを使ったデータのバックアップ

Solaris ボリュームマネージャは、バックアップを意図した製品ではありませんが、ミラーをマウント解除したり、ミラー全体をオフラインにすることなく、また、システムを停止したり、データへのユーザーアクセスを中断することなく、ミラー化されたデータをバックアップする手段を提供します。データをバックアップするには、まず、サブミラーの 1 つをオフラインにして (ミラーの機能は一時的に失われます)、そのバックアップをとります。バックアップが完了したら、そのサブミラーをオンラインに戻し、再同期を実行します。

RAID 1 ボリュームを使ってオンラインバックアップをとるには

この手順は、ルート (/) 以外のすべてのファイルシステムに使用できます。このタイプのバックアップは、活動中のファイルシステムの「スナップショット」を使用することに注意してください。ファイルシステムへの書き込みをロックしたときのファイルシステムの使用状況によっては、バックアップしたファイルやファイルの内容がディスク上の実際のファイルに対応しないことがあります。

この手順には次の制約があります。

この手順の概要は次のとおりです。


注 -

このような手順を定常的に使用する場合は、これをスクリプトにしておくと実行が容易になります。


  1. metastat コマンドを実行して、ミラーが「正常 (Okay) 」状態であることを確認します。

    ミラーが「保守 (Maintenance) 」状態の場合は、まずそれを修復する必要があります。

  2. ファイルシステムがルート (/) 以外の場合は、次のコマンドを実行して書き込みをロックします。


    # /usr/sbin/lockfs -w mount point 
    

    書き込みをロックする必要があるファイルシステムは UFS だけです。このボリュームがデータベース管理ソフトウェアなどのアプリケーション用に raw デバイスとして設定されている場合は、lockfs を実行する必要はありません。 (ただし、ベンダー提供の適切なユーティリティを実行してバッファをフラッシュしたり、アクセスをロックする必要がある場合もあります。)


    注意 - 注意 -

    ルート (/) の書き込みをロックするとシステムがハングしますので、絶対にロックしないでください。


  3. 1 つのサブミラーをオフラインにします。


    # metaoffline mirror submirror 
    

    ここで、

    mirror は、

    ミラーのボリューム名です。

    submirror は、

    オフラインにするサブミラー (ボリューム) のボリューム名です。

    読み取りは、他のサブミラーから引き続き行われます。最初の書き込みが行われた時点でミラーは同期していない状態になります。この不整合の状態は、手順 6 でサブミラーがオンラインに戻された時点で修復されます。

    オフラインにしたファイルシステムに対して fsck コマンドを実行する必要はありません。

  4. ファイルシステムのロックを解除し、書き込みを再開します。


    # /usr/sbin/lockfs -u mount-point 
    

    上の手順 2 で使用したベンダー提供のユーティリティを使って、必要なロック解除手順を実行しなければならない場合があります。

  5. オフラインにしたサブミラーのバックアップをとります。

    これには、ufsdump コマンド、または通常使用しているバックアップユーティリティを使用します。


    注 -

    適切なバックアップを確実に行うためには、raw ボリューム (/dev/md/rdsk/d4 など) を使用します。 「rdsk」では、2G バイトを超えるアクセスが可能です。


  6. サブミラーをオンラインに戻します。


    # metaonline mirror submirror
    

    サブミラーとミラーの再同期が自動的に開始されます。

例 — ミラーを使ってオンラインバックアップをとる

この例では、ミラー d1 はサブミラー d2d3 から構成されています。 サブミラー d3 をオフラインにして、このサブミラーのバックアップをとります。この間、サブミラー d2 はオンラインのままです。このミラーにあるファイルシステムは /home1 です。


# /usr/sbin/lockfs -w /home1
# metaoffline d1 d3
d1: submirror d3 is offlined
# /usr/sbin/lockfs -u /home1
(/dev/md/rdsk/d3 を使ってバックアップをとる)
# metaonline d1 d3
d1: submirror d3 is onlined