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

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

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

    カーネルが起動される前は、システムは、x86 ベースシステム上のファームウェアインタフェースである、読み取り専用メモリー (ROM) の Basic Input/Output System (BIOS) によって制御されます。この BIOS は、SPARC ベースシステムのブート PROM に似ています。BIOS に対して、以降の作業を行います。

    • 起動関数を実行します。

    • システムをブートする正しいデバイスを検出します。

    • 前述のデバイスからマスターブートレコードをロードし、システムが自動的にブートするようにします。

    通常は、BIOS を構成して、ブートレコードを探すデバイスの順番を選択できます。さらに、最近のほとんどの BIOS 実装では、二次サブミラーへのフェイルオーバーが自動的に行われるようにデバイスを構成できます。システムの BIOS にこの機能がなく、一次サブミラーで障害が発生した場合は、システムのブート中に BIOS にアクセスし、二次ルートスライスからブートするようにシステムを再構成する必要があります。BIOS の設定を構成する方法については、BIOS のユーザーガイドを参照してください。

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

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

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

    Solaris 10 1/06 リリース以降に導入された GRUB ベースのインストールプログラムでは、x86 ブートパーティションは自動的には作成されません。しかし、システムに x86 がすでに存在する場合、インストールプログラムはデフォルトでそのパーティションを保存します。

    システムに別途 x86 ブートパーティションがあるかどうかは、/etc/vfstab ファイルを確認すればわかります。このファイルに次のようなエントリが含まれている場合、x86 ブートパーティションは存在しています。


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

    Solaris ボリュームマネージャを使ってルート (/) ファイルシステムをミラー化する場合、このファイルシステムで単一の Solaris fdisk パーティションを使用する必要があります。したがって、システム内にすでに x86 ブートパーティションが存在する場合は、fdisk コマンドでこのパーティションを削除してから、Solaris ソフトウェアを再インストールしてください。再インストール時には、ブートパーティションは作成されません。


    注 –

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


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

    1. マスターブートプログラムを指定します。


      # 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. 二次ディスクをブート可能にします。


    # /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0
    

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

  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. 未使用のスライス上で、2 番目のサブミラーとして機能する 2 番目の RAID-0 ボリューム (この例では c1t1d0s0) を作成します。


    注 –

    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
    # reboot
    

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

  10. 2 番目のサブミラーを接続します。


    # metattach volume-name submirror-name
    
    volume-name

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

    submirror-name

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

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

  11. menu.lst ファイルに代替ブートパスを定義します。

    二次サブミラーを持つディスクからシステムがブートできるようにするには、そのディスクを代替ブートデバイスとして認識するようにシステムを構成します。現在の c1t1d0s0 の例では、代替パスは、二次ディスクの最初の fdisk パーティションの、最初のスライス上にあります。したがって、menu.lst を次のように編集します。


    title alternate boot
     root (hd1,0,a)
     kernel /boot/multiboot
     module /boot/x86.miniroot-safe

    注 –

    menu.lst のエントリを適切に編集するには、GRUB のディスク命名規則について熟知している必要があります。詳細は、『Solaris のシステム管理 (基本編)』の第 11 章「GRUB ベースのブート (手順)」を参照してください。


    menu.lst ファイルの編集後、システムは二次ディスクで処理を継続するようになります。一次ディスクで障害が発生した場合、システムが二次ディスクからブートするように、ディスク番号が変更されます。


    注意 – 注意 –

    場合によっては、BIOS の自動ディスク番号再割り当て機能が、使用できなくなった一次ディスクからの回復に影響を及ぼすことがあります。ディスク番号再割り当て機能により、システムが強制的に二次ディスクからブートするようになると、一次ディスクのブートアーカイブは無効になります。同じ一次ディスクがあとで使用可能になって、システムをブートした場合、デフォルトの一次ディスクからシステムがブートするように、ディスク番号が再度切り替わります。しかし、この段階では、一次ディスクのブートアーカイブは無効なままです。したがって、システムはまったくブートしない可能性があります。このような場合は、GRUB メニューから正しいエントリを選択して、システムが有効なブートアーカイブからブートするようにします。システムの起動プロセスが完了したら、通常どおり metadevice による保守を実行して、一次ディスクと二次ディスクを同期化し、再度一次ディスクを有効なブートアーカイブにします。