を作成する手順を示します。3 面ミラーまたは 4 面ミラーを作成する場合も、手順は同じです。
「Solaris ボリュームマネージャコンポーネントを作成するための前提条件」 と 「RAID-1 ボリュームの作成と保守」を確認します。
ストライプまたは連結を 2 つ作成します。これらのコンポーネントがサブミラーになります。
「RAID-0 (ストライプ方式) ボリュームを作成するには」または「RAID-0 (連結方式) ボリュームを作成するには」を参照してください。
次のどちらかの方法でミラーを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームを作成 (Create Volume)」の順に選択し、画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使って 1 面ミラーを作成します。
# metainit volume-name -m submirror-name |
作成するボリュームの名前を指定します。
ミラーを作成することを指定します。
ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。
詳細については、次の例と metainit(1M) のマニュアルページを参照してください。
次のどちらかの方法で 2 つめのサブミラーを追加します。
Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、変更するミラーを選択します。「アクション (Action)」、「プロパティ (Properties)」、「サブミラー (Submirrors)」の順に選択します。画面の指示に従って、サブミラーを追加します。詳細は、オンラインヘルプを参照してください。
次の形式の metattach コマンドを実行します。
# metattach volume-name submirror-name |
サブミラーを追加する RAID-1 ボリュームの名前を指定します。
次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。
詳細は、次の例と metattach(1M) のマニュアルページを参照してください。
# 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 つのサブミラー (d51 と d52) を作成します。metainit -m コマンドは、RAID-0 ボリューム d51 から 1 面ミラーを作成します。metattach コマンドは、 d52 を接続して 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 つのサブミラー (d51 と d52) を作成します。metainit -m コマンドは、2 つのサブミラーからミラーを作成します。metattach コマンドではなく、metainit コマンドを使ってミラーを作成した場合は、再同期操作が行われません。この場合、Solaris ボリュームマネージャはミラーの両側が同一であるとみなし、両方を区別なく使用するため、データが破壊されるおそれがあります。
新たに作成したミラーにファイルシステムを作成する方法については、『Solaris のシステム管理 (デバイスとファイルシステム)』の第 18 章「UFS、TMPFS、LOFS ファイルシステムの作成 (手順)」を参照してください。データベースなど、アプリケーションによってはファイルシステムを使用しません。これらのアプリケーションでは、代わりに raw デバイスを使用します。アプリケーションは独自の方法で raw デバイスにアクセスできなければなりません。
この手順では、既存のファイルシステムをミラー化します。このファイルシステムがマウント解除できる場合は、システムをリブートしなくても、ここに示すすべての手順を完了することができます。/usr や /swap のようなマウント解除できないファイルシステムの場合、手順を完了するには、システムをリブートする必要があります。
スライス上に構築された既存のファイルシステムから RAID-1 ボリュームを作成する場合は、そのスライスだけを一次 RAID-0 ボリューム (サブミラー) に含めるようにします。システムにとって重要なファイルシステムをミラー化する場合は、すべてのサブミラーが単一のスライスだけで構成されている必要があります。
ルート (/) ファイルシステムのミラー化に関連する手順については、「SPARC: ルート (/) ファイルシステムから RAID-1 ボリュームを作成するには」および 「x86: DCA を使ってルート (/) ファイルシステムから RAID-1 ボリュームを作成するには」を参照してください。
この手順の例では、既存スライスは c1t0d0s0 です。2 番目のスライス c1t1d0s0 はミラーの 2 番目として使用します。サブミラーは d1 と d2、ミラーは d0 です。
まず metainit コマンドで 1 面ミラーを作成してから、metattach コマンドで追加のサブミラーを接続します。metattach コマンドを使用しないと、再同期は実行されません。この場合、Solaris ボリュームマネージャはミラーの両側が同一であるとみなし、両方を区別なく使用するため、データが破壊されるおそれがあります。
「Solaris ボリュームマネージャコンポーネントを作成するための前提条件」 と 「RAID-1 ボリュームの作成と保守」を確認します。
ミラー化する既存ファイルシステムが格納されているスライスを特定します。この例では、スライス c1t0d0s0 を使用します。
次のどちらかの方法を使って、前の手順で特定したスライスに新しい RAID-0 ボリュームを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit -f volume-name number-of-stripes components-per-stripe component-name |
コマンド処理を強制的に続けます。スライスにマウントされたファイルシステムが含まれている場合は、このオプションを使用する必要があります。
作成するボリュームの名前を指定します。ボリュームの命名方式については、「ボリューム名」を参照してください。
作成するストライプの数を指定します。
各ストライプに与えるコンポーネントの数を指定します。
使用するコンポーネントの名前を指定します。この例では、ルートスライス c0t0d0s0 を使用します。
未使用のスライス (この例では c1t1d0s0) に 2 番目の RAID-0 ボリューム (連結) を作成します。これは、後で 2 番目のサブミラーとして使用します。2 番目のサブミラーのサイズは、最初のサブミラー以上でなければなりません。この手順では、次のどちらかの方法を使用します。
Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームを作成 (Create Volume)」の順に選択し、画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name number-of-stripes components-per-stripe component-name |
オプションの説明については、手順 2 を参照してください。
次のどちらかの方法で 1 面ミラーを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name -m submirror-name |
作成するボリュームの名前を指定します。
ミラーを作成することを指定します。
ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。この例では、ルートスライスが含まれる RAID-0 ボリュームです。
詳細は、metainit(1M) のマニュアルページを参照してください。
既存のファイルシステムからミラーを作成する場合は、データが破壊されないように、次の 2 つの手順に忠実に従ってください。
ファイルシステムのマウント手順が (ブロックデバイスではなく) ミラーを参照するように、/etc/vfstab ファイルを編集します。/etc/vfstab ファイルについての詳細は、『Solaris のシステム管理 (デバイスとファイルシステム)』の「ファイルシステムのマウント」を参照してください。
たとえば、/etc/vfstab ファイルにファイルシステム用の次のエントリが指定されているとします。
/dev/dsk/slice /dev/rdsk/slice /var ufs 2 yes - |
次のようにエントリを変更します。
/dev/md/dsk/mirror-name /dev/md/rdsk/mirror-name /var ufs 2 yes - |
次のどちらかの方法で、新たにミラー化したファイルシステムをマウントし直します。
マウント解除可能なファイルシステムをミラー化している場合は、ファイルシステムをマウント解除してから再びマウントします。
# umount /filesystem # mount /filesystem |
マウント解除できないファイルシステムをミラー化している場合は、システムをリブートします。
# reboot |
次の形式の metattach コマンドを使って、2 番目のサブミラーを追加します。
# metattach volume-name submirror-name |
サブミラーを追加する RAID-1 ボリュームの名前を指定します。
次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。
詳細は、metattach(1M) のマニュアルページを参照してください。
# 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 ファイルを編集します。/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 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 |
この例では、 /usr ファイルシステムが含まれるスライスを使用して、2 面ミラーを作成します。まず、-f オプションを使用して、最初の連結 d12 を強制的に作成します。これには、/dev/dsk/c0t3d0s6 にマウントされているファイルシステム /usr が含まれています。次に 2 番目の連結 d22 を /dev/dsk/c1t0d0s6 から作成します。このスライスは d12 と同じかそれ以上のサイズにする必要があります。そして、metainit コマンドに -m オプションを付けて実行し、/usr ファイルシステムを含む連結から1 面ミラー d2 を作成します。次に、/usr のエントリがミラーを参照するように /etc/vfstab ファイルを編集します。
/etc/vfstab ファイルには、/usr ファイルシステムに対応する次のエントリが指定されています。
/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 yes - |
次のようにエントリを変更します。
/dev/md/dsk/d2 /dev/md/rdsk/d2 /usr ufs 1 yes - |
リブートが終わると、2 番目のサブミラー d22 がミラーに接続され、ミラーの再同期が実行されます。
# 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 のエントリがある場合は、このエントリがミラーを参照するようにファイルを編集する必要があります。
/etc/vfstab ファイルには、swap 領域に対応する次のエントリが指定されています。
/dev/dsk/c0t0d0s1 - - swap - no - |
次のようにエントリを変更します。
/dev/md/dsk/d1 - - swap - no - |
リブートが終わると、2 番目のサブミラー d21 がミラーに接続され、ミラーの再同期が実行されます。
swap 領域をミラー化した場合、クラッシュダンプを保存するには、dumpadm コマンドを使ってダンプデバイスをボリュームとして構成する必要があります。たとえば、swap デバイスの名前が /dev/md/dsk/d2 であれば、dumpadm コマンドを使ってこのデバイスをダンプデバイスとして設定します。
SPARC プラットフォームでルート (/) ファイルシステムをミラー化する手順は、マウント解除できないルート以外のファイルシステムをミラー化する手順と同様です。異なるところは、/etc/vfstab ファイルを手動で編集するのではなく、metaroot コマンドを実行する点です。さらに、ルート (/) ファイルシステムをミラー化するには、代替ブートデバイスへのパスを記録する必要があります。サブミラーに障害が発生した場合、この代替ブートデバイスがシステムをリブートします。
この手順の例では、既存スライスは c1t0d0s0 です。2 番目のスライス c1t1d0s0 はミラーの 2 番目として使用します。サブミラーは d1 と d2、ミラーは d0 です。
まず metainit コマンドで 1 面ミラーを作成してから、metattach コマンドで追加のサブミラーを接続します。metattach コマンドを使用しないと、再同期は実行されません。この場合、Solaris ボリュームマネージャはミラーの両側が同一であるとみなし、両方を区別なく使用するため、データが破壊されるおそれがあります。
「Solaris ボリュームマネージャコンポーネントを作成するための前提条件」 と 「RAID-1 ボリュームの作成と保守」を確認します。
ミラー化する既存のルート (/) ファイルシステムが含まれているスライスを特定します。この例では、スライス c1t0d0s0 を使用します。
次のどちらかの方法を使って、前の手順で特定したスライスに新しい RAID-0 ボリュームを作成します。RAID-0 ボリュームに含めることができるのは、単一のスライスだけです。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit -f volume-name number-of-stripes components-per-stripe component-name |
コマンド処理を強制的に続けます。スライスにマウントされたファイルシステムが含まれている場合は、このオプションを使用する必要があります。
作成するボリュームの名前を指定します。ボリュームの命名方式については、「ボリューム名」を参照してください。
作成するストライプの数を指定します。
各ストライプに与えるコンポーネントの数を指定します。
使用するコンポーネントの名前を指定します。この例では、ルートスライス c0t0d0s0 を使用します。
未使用のスライス (この例では c1t1d0s0) に 2 番目の RAID-0 ボリュームを作成します。このボリュームは 2 番目のサブミラーとして使用します。2 番目のサブミラーのサイズは、最初のサブミラー以上でなければなりません。この手順では、次のどちらかの方法を使用します。
Solaris 管理コンソール内の「拡張ストレージ」から「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームを作成 (Create Volume)」の順に選択し、画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name number-of-stripes components-per-stripe component-name |
オプションの説明については、ステップ 2 を参照してください。
次のどちらかの方法で 1 面ミラーを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name -m submirror-name |
作成するボリュームの名前を指定します。
ミラーを作成することを指定します。
ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。この例では、ルートスライスが含まれる RAID-0 ボリュームです。
新たにミラー化したファイルシステムをマウントし直します。metaroot volume-name コマンドを実行します。volume-name のところには、作成したミラーの名前を入れます。さらに、システムをリブートします。
# metaroot volume-name # reboot |
詳細は、metaroot(1M) のマニュアルページを参照してください。
次の形式の metattach コマンドを使って、2 番目のサブミラーを接続します。
# metattach volume-name submirror-name |
サブミラーを追加する RAID-1 ボリュームの名前を指定します。
次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。
詳細は、metattach(1M) のマニュアルページを参照してください。
代替ブートパスを記録します。
代替ルートデバイスへのパスを調べます。2 番目のサブミラーとしてルート (/) ファイルシステムのミラーに接続するスライスで、ls -l コマンドを使用します。
# ls -l /dev/dsk/c1t1d0s0 lrwxrwxrwx 1 root root 55 Mar 5 12:54 /dev/rdsk/c1t1d0s0 -> \ ../../devices/sbus@1,f8000000/esp@1,200000/sd@3,0:a |
ここで、/devices ディレクトリに続く次の文字列を記録しておきます。 /sbus@1,f8000000/esp@1,200000/sd@3,0:a.
システムが利用できない場合に備えて、システム上以外の場所にこの情報を書き留めておくべきです。代替ブートデバイスからブートする方法についての詳細は、「ブート障害からの回復」を参照してください。
この文字列を編集して、メジャー名 (この場合は sd) を disk に変更し、「/sbus@1,f8000000/esp@1,200000/disk@3,0:a」のようにします。システムが IDE バスを使用している場合、オリジナルのフルパスは次のようになります。
$ ls -l /dev/dsk/c1t1d0s0 lrwxrwxrwx 1 root root 38 Mar 13 15:03 /dev/dsk/c0t0d0s0 -> \ ../../devices/pci@1f,0/ide@d/dad@0,0:a |
メジャー名 dad を disk に変更すると、「/pci@1f,0/ide@d/disk@0,0:a」のようになります。
OpenBootTM PROM nvalias コマンドを使って、二次ルート (/) ファイルシステムミラー用の「バックアップルート」デバイス別名を定義します。たとえば、次のように指定します。
ok nvalias backup_root /sbus@1,f8000000/esp@1,200000/disk@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 |
# 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/rdsk/c1t3d0s0 -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a # init 0 . . . ok nvalias backup_root /pci@1f,0/pci@1,1/ide@3/disk@0,0:a ok setenv boot-device disk backup_root net ok nvstore |
この例では、-f オプションによって、最初の RAID-0 ボリュームとして d1 を作成します。これには、/dev/dsk/c0t0d0s0 にマウントされているルート (/) ファイルシステムが含まれています。次に 2 番目の連結 d2 を /dev/dsk/c0t1d0s0 から作成します。このスライスは d1 と同じかそれより大きいサイズにする必要があります。そして、metainit コマンドに -m オプションを付けて実行し、ルート (/) を含む連結から1 面ミラー d0 を作成します。
次に metaroot コマンドを使って /etc/vfstab ファイルと /etc/system ファイルを編集し、システムがボリューム上のルート (/) ファイルシステムからブートされるように指定します。リブートを行う前に lockfs -fa コマンドを実行することが推奨されます。詳細は、lockfs(1M) のマニュアルページを参照してください。
システムをリブートする前に、2 番目のサブミラーを接続しないでください。metaroot コマンドを実行した後、2 番目のサブミラーを接続する前に、システムをリブートする必要があります。
リブートが終わると、サブミラー d2 がミラーに接続され、ミラーの再同期が実行されます連結とミラーが設定され、サブミラー d2 が接続されたことを示すメッセージが表示されます。
最後に、ルート raw デバイスに対して ls-l コマンドを実行して、代替ルートデバイスへのパスを表示します。このパスは、このデバイスからシステムをブートしなければならない状況が発生したときに必要になります。
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 番目として使用します。サブミラーは d1 と d2、ミラーは d0 です。
手順を実行する前に、「Solaris ボリュームマネージャコンポーネントを作成するための前提条件」と「RAID-1 ボリュームの作成と保守」を確認してください。
ミラーの 2 番目のディスクからシステムがブートできるように、BIOS ブートデバイスの順番を構成できることを確認します。
カーネルが起動される前は、システムは、x86 ベースシステム上のファームウェアインタフェースである、読み取り専用メモリー (ROM) の Basic Input/Output System (BIOS) によって制御されます。この BIOS は、SPARC ベースシステムのブート PROM に似ています。BIOS に対して、以降の作業を行います。
起動関数を実行します。
システムをブートする正しいデバイスを検出します。
前述のデバイスからマスターブートレコードをロードし、システムが自動的にブートするようにします。
通常は、BIOS を構成して、ブートレコードを探すデバイスの順番を選択できます。さらに、最近のほとんどの BIOS 実装では、二次サブミラーへのフェイルオーバーが自動的に行われるようにデバイスを構成できます。システムの BIOS にこの機能がなく、一次サブミラーで障害が発生した場合は、システムのブート中に BIOS にアクセスし、二次ルートスライスからブートするようにシステムを再構成する必要があります。BIOS の設定を構成する方法については、BIOS のユーザーガイドを参照してください。
ルートミラーを設定する前に、システム上の BIOS で、複数のディスクからブートできることを確認します。デバイスドライバによっては、システムの 1 つのディスクしか認識しないように構成されているものもあります。
ルートのミラー化をサポートするように 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 パーティションの外にあるデータを保護するには、別の方法を使用する必要があります。
マスターブートプログラムを使って、二次サブミラーをブート可能にします。
マスターブートプログラムを指定します。
# 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: |
メニューから 5 番を選択して、Return キーを押します。
二次ディスクをブート可能にします。
# /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0 |
installgrub の詳細は、installgrub(1M) のマニュアルページを参照してください。
ミラー化する既存のルート (/) ファイルシステムが含まれているスライスを特定します。
この例では、スライス c1t0d0s0 を使用します。
前の手順で指定したスライス上で新しい RAID-0 ボリュームを作成します。
RAID-0 ボリュームに含めることができるのは、単一のスライスだけです。この手順では、次のどちらかの方法を使用します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit -f volume-name number-of-stripes components-per-stripe component-name |
コマンド処理を強制的に続けます。スライスにマウントされたファイルシステムが含まれている場合は、このオプションを使用する必要があります。
作成するボリュームの名前を指定します。ボリュームの命名方式については、「ボリューム名」を参照してください。
作成するストライプの数を指定します。
各ストライプに与えるコンポーネントの数を指定します。
使用するコンポーネントの名前を指定します。この例では、ルートスライス c0t0d0s0 を使用します。
未使用のスライス上で、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 を参照してください。
次のどちらかの方法で 1 面ミラーを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name -m submirror-name |
作成するボリュームの名前を指定します。
ミラーを作成することを指定します。
ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。この例では、ルートスライスが含まれる RAID-0 ボリュームです。
新しくミラー化されたファイルシステムを再マウントし、システムをリブートします。
# metaroot volume-name # reboot |
詳細は、metaroot(1M) のマニュアルページを参照してください。
# metattach volume-name submirror-name |
サブミラーを追加する RAID-1 ボリュームの名前を指定します。
次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。
詳細は、metattach(1M) のマニュアルページを参照してください。
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 による保守を実行して、一次ディスクと二次ディスクを同期化し、再度一次ディスクを有効なブートアーカイブにします。
ミラーの 2 番目のディスクからシステムがブートできるように、BIOS ブートデバイスの順番を構成できることを確認します。
カーネルが起動される前は、システムは、x86 ベースシステム上のファームウェアインタフェースである、読み取り専用メモリー (ROM) の Basic Input/Output System (BIOS) によって制御されます。この BIOS は、SPARC ベースシステムのブート PROM に似ています。ほかの起動機能に加えて、BIOS は正しいブートデバイスを見つけ、そのデバイスからマスターブートレコードを読み込んで、システムがブートできるようにします。通常は、BIOS を構成して、ブートレコードを探すデバイスの順番を選択できます。さらに、最近のほとんどの BIOS 実装では、二次サブミラーへのフェイルオーバーが自動的に行われるようにデバイスを構成できます。使用中のシステムにこの機能がない場合で、一次サブミラーに障害が発生したときは、システムのブート中に BIOS にアクセスして、二次ルートスライスからブートするよう構成し直す必要があります。BIOS の設定を構成する方法については、BIOS のユーザーガイドを参照してください。
システム上の DCA を使って、複数のディスクからブート可能であることを確認できます。デバイスドライバによっては、システムの 1 つのディスクしか認識しないように構成されているものもあります。
ルートのミラー化をサポートするように 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 パーティションの外にあるデータを保護するには、別の方法を使用する必要があります。
マスターブートプログラムを使って、二次サブミラーをブート可能にします。
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: |
メニューから 5 番を選択して、Return キーを押します。
二次サブミラーをブート可能にするため、二次サブミラーにブートブロックをインストールします。
この 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 |
ミラー化する既存のルート (/) ファイルシステムが含まれているスライスを特定します。この例では、スライス c1t0d0s0 を使用します。
次のどちらかの方法を使って、前の手順で特定したスライスに新しい RAID-0 ボリュームを作成します。RAID-0 ボリュームに含めることができるのは、単一のスライスだけです。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit -f volume-name number-of-stripes components-per-stripe component-name |
コマンド処理を強制的に続けます。スライスにマウントされたファイルシステムが含まれている場合は、このオプションを使用する必要があります。
作成するボリュームの名前を指定します。ボリュームの命名方式については、「ボリューム名」を参照してください。
作成するストライプの数を指定します。
各ストライプに与えるコンポーネントの数を指定します。
使用するコンポーネントの名前を指定します。この例では、ルートスライス c0t0d0s0 を使用します。
未使用のスライス (この例では 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 を参照してください。
次のどちらかの方法で 1 面ミラーを作成します。
Solaris 管理コンソール内の「拡張ストレージ」から、「ボリューム (Volumes)」ノードを開き、「アクション (Action)」、「ボリュームの作成 (Create Volume)」の順に選択します。画面の指示に従います。詳細は、オンラインヘルプを参照してください。
次の形式の metainit コマンドを使用します。
# metainit volume-name -m submirror-name |
作成するボリュームの名前を指定します。
ミラーを作成することを指定します。
ミラーの最初のサブミラーとして使用するコンポーネントの名前を指定します。この例では、ルートスライスが含まれる RAID-0 ボリュームです。
新たにミラー化したファイルシステムをマウントし直します。metaroot volume-name コマンドを実行します。volume-name のところには、作成したミラーの名前を入れます。さらに、システムをリブートします。
# metaroot volume-name # reboot |
詳細は、metaroot(1M) のマニュアルページを参照してください。
次の形式の metattach コマンドを使って、2 番目のサブミラーを接続します。
# metattach volume-name submirror-name |
サブミラーを追加する RAID-1 ボリュームの名前を指定します。
次にミラーに追加するサブミラーとなるコンポーネントの名前を指定します。
詳細は、metattach(1M) のマニュアルページを参照してください。
代替ブートパスを記録します。
一次サブミラーに障害が発生した場合に二次サブミラーからブートするように、システムを構成する必要があります。二次サブミラーを持つディスクからシステムがブートできるようにするには、そのディスクを代替ブートデバイスとして認識するようにシステムを構成します。
代替ブートデバイスへのパスを調べます。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 |
ここで、/devices ディレクトリに続く文字列 /eisa/eha@1000,0/cmdk@1,0:a を記録しておきます。これがデバイスツリーパスです。
システムが利用できない場合に備えて、システム上以外の場所にもこの情報を書き留めておくべきです。これによって、DCA を使ってシステムをブートする必要がある場合に、デバイスツリーパス情報の入力が簡単になります。
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) のマニュアルページを参照してください。
# 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 |
ルート (/) ファイルシステムをミラー化すると、エラーメッセージがコンソールに表示され、/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 |
このようなエラーメッセージは無視してかまいません。