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

x86: ルート (/) ファイルシステムから RAID-1 ボリュームを作成する

Solaris 10 1/06 リリースから、x86 ベースシステムのブート処理とその構成に使用される Device Configuration Assistant (デバイス構成用補助、DCA) が GRand Unified Bootloader (GRUB) に置き換えられました。この機能とその拡張機能の概要については、『Solaris 10 の概要』「GRUB ベースのブート」を参照してください。

この節では、ルート (/) ファイルシステムから RAID-1 ボリュームを作成する手順について説明します。Solaris 10 1/06 以降のリリースの OS を実行している場合は、GRUB を使用する最初の手順に従ってください。それ以外の場合は、DCA を使用する 2 番目の手順に従ってください。

x86 ベースシステムでルート (/) ファイルシステムをミラー化するプロセスは、SPARC システムでルートをミラー化するプロセスとほぼ同じです。ただし、x86 ベースシステムでは、BIOS と fdisk パーティションという複雑な階層があります。

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


注 –

手順を実行する前に、「Solaris ボリュームマネージャコンポーネントを作成するための前提条件」「RAID-1 ボリュームの作成と保守」を確認してください。


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 による保守を実行して、一次ディスクと二次ディスクを同期化し、再度一次ディスクを有効なブートアーカイブにします。


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