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

Procedurex86: DCA を使ってルート (/) ファイルシステムから RAID-1 ボリュームを作成するには

  1. ミラーの 2 番目のディスクからシステムがブートできるように、BIOS ブートデバイスの順番を構成できることを確認します。

    カーネルが起動される前は、システムは、x86 ベースシステム上のファームウェアインタフェースである、読み取り専用メモリー (ROM) の Basic Input/Output System (BIOS) によって制御されます。この BIOS は、SPARC ベースシステムのブート PROM に似ています。ほかの起動機能に加えて、BIOS は正しいブートデバイスを見つけ、そのデバイスからマスターブートレコードを読み込んで、システムがブートできるようにします。通常は、BIOS を構成して、ブートレコードを探すデバイスの順番を選択できます。さらに、最近のほとんどの BIOS 実装では、二次サブミラーへのフェイルオーバーが自動的に行われるようにデバイスを構成できます。使用中のシステムにこの機能がない場合で、一次サブミラーに障害が発生したときは、システムのブート中に BIOS にアクセスして、二次ルートスライスからブートするよう構成し直す必要があります。BIOS の設定を構成する方法については、BIOS のユーザーガイドを参照してください。

    システム上の DCA を使って、複数のディスクからブート可能であることを確認できます。デバイスドライバによっては、システムの 1 つのディスクしか認識しないように構成されているものもあります。

  2. ルートのミラー化をサポートするように fdisk パーティションが構成されていることを確認します。

    x86 ベースシステムのもう一つの特長は、fdisk パーティションを使用することです。Solaris OS インストールプログラムのブートディスクパーティションのデフォルトのレイアウトでは、Solaris fdisk パーティションとは別に、「x86 ブートパーティション」という、10M バイトくらいの小さな fdisk パーティションが作成されます。

    x86 ブートパーティションは、ルート (/) ファイルシステムをミラー化するときに問題になります。x86 ブートパーティションは、Solaris fdisk パーティションの外にあります。このため、x86 ブートパーティションは Solaris ボリュームマネージャでミラー化できません。さらに、x86 ブートパーティションのコピーは 1 つしかないため、シングルポイント障害にもなります。

    Solaris OS に独立した x86 ブートパーティションがあるかどうかは、次のように識別できます。x86 ブートパーティションは、/etc/vfstab ファイル内に、次のようなエントリでマウントされます。


    /dev/dsk/c2t1d0p0:boot  -       /boot   pcfs    -       no      -

    別の x86 ブートパーティションが存在しない場合、このエントリは /etc/vfstab ファイルに存在しません。

    ルート (/) ファイルシステムをミラー化するためには、fdisk パーティションをカスタマイズして、x86 ブートパーティションを削除し、単一の Solaris fdisk パーティションを使用するようにします。Solaris ボリュームマネージャのルートミラー化を使用する予定がある場合、システムのインストール時に、独立した x86 ブートパーティションを作成しないでください。すでにシステムがインストールされ、別の x86 ブートパーティションが作成されている場合、fdisk コマンドを使って、その fdisk パーティションを削除して、システムをインストールし直します。インストール中に別の x86 ブートパーティションを作成しないようにするには、インストールプロセス中にディスクパーティションをカスタマイズします。


    注 –

    Solaris ボリュームマネージャでミラー化できるのは、Solaris fdisk パーティション内のスライスだけです。複数の fdisk パーティションが存在する場合、Solaris fdisk パーティションの外にあるデータを保護するには、別の方法を使用する必要があります。


  3. マスターブートプログラムを使って、二次サブミラーをブート可能にします。

    1. fdisk コマンドを使って、マスターブートプログラムを指定します。


      # fdisk -b /usr/lib/fs/ufs/mboot /dev/rdsk/c1t1d0p0
      

      次の画面が表示されます。


                   Total disk size is 31035 cylinders
                   Cylinder size is 1146 (512 byte) blocks
      
                                                     Cylinders
            Partition   Status    Type          Start   End   Length    %
            =========   ======    ============  =====   ===   ======   ===
                1        Active   Solaris           1  31034    31034    100
      
      
      SELECT ONE OF THE FOLLOWING:
         1. Create a partition
         2. Specify the active partition
         3. Delete a partition
         4. Change between Solaris and Solaris2 Partition IDs
         5. Exit (update disk configuration and exit)
         6. Cancel (exit without updating disk configuration)
      Enter Selection: 
    2. メニューから 5 番を選択して、Return キーを押します。

  4. 二次サブミラーをブート可能にするため、二次サブミラーにブートブロックをインストールします。

    この fdisk パーティションから Solaris OS をブートするには、二次サブミラーがあるディスクにスライス 8 が必要です。このスライスには、パーティションブートレコード (pboot)、当該ディスクの Solaris VTOC、およびブートブロックが含まれます。この情報はディスクに固有であり、Solaris ボリュームマネージャではミラー化されません。しかし、一次ディスクに障害が発生した場合に二次ディスクからブートできるようにするには、両方のディスクがブート可能であることを保証する必要があります。installboot コマンドを使って、2 番目のディスクを Solaris ブート可能ディスクと設定します。詳細は、installboot(1M) のマニュアルページを参照してください。

    このディスクのスライス 2 をデバイスとして指定する必要があります。さらに、このスライス 2 はディスク全体から構成されている必要があります。


    # installboot /usr/platform/i86pc/lib/fs/ufs/pboot \
    /usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c1t1d0s2
    
  5. ミラー化する既存のルート (/) ファイルシステムが含まれているスライスを特定します。この例では、スライス c1t0d0s0 を使用します。

  6. 次のどちらかの方法を使って、前の手順で特定したスライスに新しい RAID-0 ボリュームを作成します。RAID-0 ボリュームに含めることができるのは、単一のスライスだけです。

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

    • 次の形式の metainit コマンドを使用します。


      # metainit -f volume-name number-of-stripes components-per-stripe component-name
      
      -f

      コマンド処理を強制的に続けます。スライスにマウントされたファイルシステムが含まれている場合は、このオプションを使用する必要があります。

      volume-name

      作成するボリュームの名前を指定します。ボリュームの命名方式については、「ボリューム名」を参照してください。

      number-of-stripes

      作成するストライプの数を指定します。

      components-per-stripe

      各ストライプに与えるコンポーネントの数を指定します。

      component-names

      使用するコンポーネントの名前を指定します。この例では、ルートスライス c0t0d0s0 を使用します。

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


    注 –

    2 番目のサブミラーとして使用するスライスは「root」というスライスタグを持っており、かつ、ルートスライスはスライス 0 である必要があります。スライスを構成する方法については、format(1M) のマニュアルページを参照してください。


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

    • 次の形式の metainit コマンドを使用します。


      # metainit volume-name number-of-stripes components-per-stripes component-names
      

      注 –

      オプションの説明については、手順 6 を参照してください。


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

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

    • 次の形式の metainit コマンドを使用します。


      # metainit volume-name -m submirror-name
      
      volume-name

      作成するボリュームの名前を指定します。

      -m

      ミラーを作成することを指定します。

      submirror-name

      ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。この例では、ルートスライスが含まれる RAID-0 ボリュームです。

  9. 新たにミラー化したファイルシステムをマウントし直します。metaroot volume-name コマンドを実行します。volume-name のところには、作成したミラーの名前を入れます。さらに、システムをリブートします。


    # metaroot volume-name
    # reboot
    

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

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


    # metattach volume-name submirror-name
    
    volume-name

    サブミラーを追加する RAID-1 ボリュームの名前を指定します。

    submirror-name

    次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。

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

  11. 代替ブートパスを記録します。

    一次サブミラーに障害が発生した場合に二次サブミラーからブートするように、システムを構成する必要があります。二次サブミラーを持つディスクからシステムがブートできるようにするには、そのディスクを代替ブートデバイスとして認識するようにシステムを構成します。

    1. 代替ブートデバイスへのパスを調べます。2 番目のサブミラーとしてルート (/) ファイルシステムのミラーに接続するスライスで、ls -l コマンドを使用します。


      # ls -l /dev/dsk/c1t1d0s0
      lrwxrwxrwx 1  root root  55 Mar 5 12:54  /dev/rdsk/c1t1d0s0 -> ../.
      ./devices/eisa/eha@1000,0/cmdk@1,0:a
    2. ここで、/devices ディレクトリに続く文字列 /eisa/eha@1000,0/cmdk@1,0:a を記録しておきます。これがデバイスツリーパスです。


      注 –

      システムが利用できない場合に備えて、システム上以外の場所にもこの情報を書き留めておくべきです。これによって、DCA を使ってシステムをブートする必要がある場合に、デバイスツリーパス情報の入力が簡単になります。


    3. eeprom コマンドを使って、代替ブートパスを定義します。たとえば、次のように指定します。


      # eeprom altbootpath=/eisa/eha@1000,0/cmdk@1,0:a
      

      一次サブミラーに障害が発生した場合、システムは二次サブミラーからブートしようとします。自動的に二次ディスクにフェイルオーバーするように BIOS を構成できる場合、このブートプロセスは自動的に行われます。そうでない場合、BIOS に入って、二次ディスクからブートするように構成する必要があります。ブートを開始したあと、システムはまず、bootpath デバイスからブートしようとします。ルートミラーの一次ブートディスクは動作していないため、システムは次に、altbootpath デバイスからブートしようとします。BIOS の設定を構成する方法については、BIOS のユーザーガイドを参照してください。

      システムが自動的にブートしない場合、DCA を使って、二次サブミラーを選択できます。システムによっては、ブートプロセス中に DCA に入ることも選択できます。この方法が使用できない場合、x86 ブートフロッピーディスクからブートしてから、DCA を使って、二次サブミラーを選択する必要があります。オペレーティングシステムがブートしたあと、eeprom bootpath の値を、代替ブートパスとして設定した値 (altbootpath の値) に変更します。こうすれば、システムが自動的にブートします。

      eeprom コマンドを使用する方法についての詳細は、eeprom(1M) のマニュアルページを参照してください。


例 11–7 x86: DCA を使ってルート (/) ファイルシステムからミラーを作成する


# metainit -f d1 1 1 c0t0d0s0
d1: Concat/Stripe is setup
# metainit d2 1 1 c0t1d0s0
d2: Concat/Stripe is setup
# metainit d0 -m d1
d0: Mirror is setup
# metaroot d0
# lockfs -fa
# reboot
...
# metattach d0 d2
d0: Submirror d2 is attached
# ls -l /dev/dsk/c0t1d0s0
lrwxrwxrwx   1 root     root          88 Feb  8 15:51 /dev/dsk/c1t3d0s0 ->
../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw
# eeprom altbootpath=/pci@1f,0/pci@1,1/ide@3/dad@0,0:a,raw
# fdisk -b /usr/lib/fs/ufs/mboot /dev/dsk/c0t1d0p0
             Total disk size is 31035 cylinders
             Cylinder size is 1146 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1        Active   Solaris           1  31034    31034    100


SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Exit (update disk configuration and exit)
   6. Cancel (exit without updating disk configuration)
Enter Selection: 5
# installboot /usr/platform/i86pc/lib/fs/ufs/pboot \
/usr/platform/i86pc/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s2