ここでは、オペレーティングシステムの動作中にディスクドライブを交換できるようにシステムを設定する方法を説明します。
障害の発生したディスクドライブを交換する方法は、使用しているアプリケーションによって異なります。使用しているアプリケーションに関わらず行う必要がある作業は以下のとおりです。
障害が発生しているか、障害が発生したディスクドライブを特定する
ディスクドライブを取り外す
交換用のドライブを追加する
システム環境を再構成する
どのような場合でも、ディスクやアプリケーションを停止してから、ディスクをマウント解除し、現在のドライブを取り外して、交換用ドライブを取り付け、ドライブが認識されるように Solaris 環境を設定する必要があります。さらに、新しいディスクドライブを使用することができるようにアプリケーションを設定する必要があります。
交換用ディスクドライブは、できるだけ事前に用意しておいてください。各交換用ディスクドライブに対しては、障害の発生した元のディスクと同じ方法でフォーマット、ラベル指定、パーティション分割を行います。ディスクのフォーマット、パーティションの作成、アプリケーションへのディスクの追加の方法については、アプリケーションのマニュアルを参照してください。
ディスクエラーの発生は、さまざまな方法によって報告されます。一般的には、障害が発生しているか、障害が発生したディスクに関するメッセージはシステムコンソールで確認します。この情報は、/usr/adm/messages ファイルにも記録されます。一般的にこれらのエラーメッセージは、ディスクの物理デバイス名 (/devices/pci@1f,4000/scsi@3/sd@b,0 など) と UNIX のデバイスインスタンス名 (sd11 など) によって、障害の発生したディスクドライブを示します。場合によっては、論理デバイス名 (c0t11d0 など) が使用されることもあります。また、ドライブのスロット番号 (0 〜 5) を報告したり、ディスクドライブに対応する LED を点灯させたりするアプリケーションもあります (図 2–2 を参照)。
ディスクのホットプラグ作業を行うには、障害の発生したディスクのスロット番号 (0 〜 5) と、ディスクの論理デバイス名 (c0t11d0 など) を特定する必要があります。ドライブスロット番号が特定されている場合は、論理デバイス名を調べることができます。また、その逆も可能です。また、物理デバイス名 (/devices/pci@1f,4000/scsi@3/sd@b,0 など) からドライブスロット番号と論理デバイス名の両方を調べることもできます。
ある形式のディスク識別名から別の形式の識別名を求める方法については、第 3 章「論理デバイス名と物理デバイス名の対応」を参照してください。ドライブスロット番号と論理デバイス名を特定したら、次の手順に進むことができます。
それぞれのアプリケーションについてディスクの交換作業を行ってください。
ここでは、UNIX ファイルシステムによって使用されているディスクを構成解除する手順を説明します。
以下で説明する作業は、有資格のシステム管理者が行ってください。動作中のディスクドライブに対して誤ったホットプラグ作業を行うと、データが失われることがあります。
su と入力し、スーパーユーザーのパスワードを入力します。
取り外すデバイスを使用している処理またはアプリケーションを特定します。
これを行うには、mount、showmount -a、ps -ef コマンドを使用します。詳細は、mount(1M)、showmount(1M)、ps(1) のマニュアルページを参照してください。
たとえば、コントローラ番号が 0 で、ターゲット ID が 11 の場合は、以下のように入力します。
# mount | grep c0t11 /export/home1 on /dev/dsk/c0t11d0s2 setuid/read/write on # showmount -a | grep /export/home1 cinnamon:/export/home1/archive austin:/export/home1 swlab1:/export/home1/doc # ps -f | grep c0t11 root 1225 450 4 13:09:58 pts/2 0:00 grep c0t11
この例では、障害の発生したディスクのファイルシステム /export/home1 が、3 つのシステム (cinnamon、austin、swlab1) によって遠隔マウントされています。動作中のプロセスは grep だけで、これは終了しています。
構成解除するファイルシステムに対するすべての処理やアプリケーションプロセスを停止します。
システムのバックアップを取ります。
# mount | grep cwtx
たとえば、構成解除するデバイスが c0t11d0 の場合は、以下のように入力します。
# mount | grep c0t11 /export/home (/dev/dsk/c0t11d0s7 ): 98892 blocks 142713 files /export/home1 (/dev/dsk/c0t11d0s5 ): 153424 blocks 112107 files
ディスクのパーティションテーブルを特定して、保存します。
交換用ディスクの種類が障害の発生したディスクと同じ場合は、format コマンドを使用して、ディスクのパーティションテーブルを保存することができます。format で save コマンドを使用して、パーティションテーブルを /etc/format.dat ファイルにコピーしてください。これによって、現在のディスクと同じ配置になるように交換用ディスクを設定することができます。
詳細は、format(1M) のマニュアルページを参照してください。
ディスク上にあるすべてのファイルシステムをマウント解除します。
# umount ファイルシステム
ファイルシステムは、手順 5 で返された各行の先頭の列の値です。
# umount /export/home # umount /export/home1
マウント解除するファイルシステムが存在するディスクで障害が発生しているか、障害が発生した場合、umount 処理が完了せずに、その処理中に大量のエラーメッセージがシステムコンソールに表示され、/var ディレクトリ内に記録される場合があります。umount 処理が正常に完了しない場合は、システムの再起動が必要となる場合があります。
ssaadm replace_device コマンドを使用して、デバイスをオフラインにします。
# ssaadm replace_device 論理デバイス名 ssaadm: warning: can't quiesce "/dev/rdsk/c0t11d0s2": I/O error Bus is ready for the replacement of device Replace device and reconfigure bus as needed Press RETURN when ready to continue
論理デバイス名には、取り外すドライブの完全な論理デバイス名 (この例では /dev/rdsk/c0t11d0s2) を指定します。ディスク全体を表すスライス 2 を指定する必要があります。このコマンドには、論理デバイス名の代わりに物理デバイス名を指定することもできます。
Sun Enterprise 250 の SCSI バスは休止を必要としないため、警告メッセージは無視してください。
障害の発生したディスクドライブを取り外して、交換用ドライブを挿入します。
ディスクドライブの取り外しと交換の方法については、『Sun Enterprise 250 サーバーユーザーマニュアル』を参照してください。
Return を押して、ホットプラグ作業を完了します。
ssaadm コマンドによって、交換用ドライブがオンラインになります。
デバイスのパーティションテーブルが、再度作成するファイルシステムの条件を満たしているか確認します。
デバイスのラベルは、prtvtoc コマンドを使用して調べることができます。ラベルを変更する場合は、format コマンドを使用します。詳細は、prtvtoc(1M) および format(1M) のマニュアルページを参照してください。以下に例を示します。
# prtvtoc /dev/rdsk/cwtxdysz
交換用ディスクの種類が障害の発生したディスクと同じで、format ユーティリティを使用してディスクパーティションテーブルを保存した場合は、format ユーティリティの partition セクションを使用して、交換用ディスクのパーティションテーブルを設定することができます。partition セクションの select と label コマンドを参照してください。
交換用ディスクと元のディスクの種類が異なる場合は、元のディスクのパーティションの大きさに関する情報を使用して、交換用ディスクにパーティションテーブルを設定することができます。詳細は、prtvtoc(1M) と format(1M) のマニュアルページを参照してください。
これで、ディスクのパーティションテーブルと、UFS ファイルシステムを作成するディスクスライスを定義したことになります。
UFS ファイルシステムで使用するディスクスライスを選択し、スライスのファイルシステムを調べて、ファイルシステムを作成します。
# fsck /dev/rdsk/cwtxdysz # newfs /dev/rdsk/cwtxdysz
mount コマンドを使用して新しいファイルシステムをマウントします。
# mount マウント先
マウント先は、障害の発生したディスクがマウントされていたディレクトリです。
これで、新しいディスクを使用し、バックアップからデータを復元することができます。
ここでは、Solstice DiskSuite によって使用されているディスクを構成解除する手順を説明します。詳細は、Solstice DiskSuite のマニュアルを参照してください。
以下で説明する作業は、有資格のシステム管理者が行ってください。動作中のディスクドライブに対して誤ったホットプラグ作業を行うと、データが失われることがあります。
システムのパックアップを取ります。
su と入力し、スーパーユーザーのパスワードを入力します。
交換するディスクのパーティションテーブルを保存することができる場合は、そのパーティションテーブルを保存します。
ディスクラベルを読み取ることができる場合は、この時点でディスクパーティション情報を保存します。
メタデバイスまたはファイルシステムを設定したら、ただちにすべてのディスクパーティション情報を保存してください。この情報は、デバイス障害から回復する際に使用します。
prtvtoc コマンドを使用してパーティション情報を保存します。
# prtvtoc /dev/rdsk/cwtxdys0 > パーティションテーブルの保存先ファイル
# prtvtoc /dev/rdsk/c0t11d0s0 > /etc/c0t11d0s0.vtoc
取り外すデバイスを使用しているメタデバイスまたはアプリケーションを特定します。以下に例を示します。
# metadb | grep c0t11d0 # metastat | grep c0t11d0 # mount | grep c0t11d0
ディスクを交換した後でメタデバイスを再設定するために、これらのコマンドの出力を保存します。
複製データベースを削除します。
ディスクに複製データベースがある場合は、その複製データベースを削除する必要があります。削除する前に、複製データベースのサイズと各スライスにある複製データベースの数を記録してください。
# metadb -d cwtxdysz
# metadb -d c0t11d0s0
サブミラーを切り離します。
ディスクのスライスがサブミラーによって使用されている場合は、そのサブミラーを切り離す必要があります。以下に例を示します。
# metadetach d20 d21
ホットスペアを削除します。
ディスクのスライスがホットスペアプールによって使用されている場合は、そのホットスペアを削除する必要があります。削除する前に、スライスを含むホットスペアプールを記録してください。以下に例を示します。
# metahs -d all c0t11d0s1
ディスクに対する他のすべてのメタデバイス処理を終了します。
切り離すことができないメタデバイス (ミラーにはないストライプなど) によって使用されている他のディスクスライスについては、metastat の出力を調べてください。メタデバイスにファイルシステムが存在する場合は、メタデバイスをマウント解除する必要があります。ファイルシステムが存在しない場合は、オフラインにしてください。
詳細は、prtvtoc(1M) のマニュアルページを参照してください。
ディスク上にあるすべてのファイルシステムをマウント解除します。
マウント解除するファイルシステムが存在するディスクで障害が発生しているか、障害が発生した場合、umount 処理が完了せずに、その処理中に大量のエラーメッセージがシステムコンソールに表示され、/var ディレクトリ内に記録される場合があります。umount 処理が正常に完了しない場合は、システムの再起動が必要となる場合があります。
# umount ファイルシステム
ファイルシステムは、手順 4 で返された各行の先頭の列の値です。以下に例を示します。
# umount /export/home # umount /export/home1
ssaadm replace_device コマンドを使用して、デバイスをオフラインにします。
# ssaadm replace_device 論理デバイス名 ssaadm: warning: can't quiesce "/dev/rdsk/c0t11d0s2": I/O error Bus is ready for the replacement of device Replace device and reconfigure bus as needed Press RETURN when ready to continue
論理デバイス名には、取り外すドライブの完全な論理デバイス名 (この例では /dev/rdsk/c0t11d0s2) を指定します。ディスク全体を表すスライス 2 を指定する必要があります。このコマンドには、論理デバイス名の代わりに物理デバイス名を指定することもできます。
Sun Enterprise 250 の SCSI バスは休止を必要としないため、警告メッセージは無視してください。
障害の発生したディスクドライブを取り外して、交換用ドライブを挿入します。
ディスクドライブの取り外しと交換の方法については、『Sun Enterprise 250 サーバーユーザーマニュアル』を参照してください。
Return を押して、ホットプラグ作業を完了します。
ssaadm コマンドによって、交換ドライブがオンラインになります。
ディスクパーティション情報を復元します。
ファイルにディスクパーティション情報を保存した場合は、fmthard を使用して復元することができます。以下に例を示します。
# fmthard -s /etc/c0t11d0s0.vtoc /dev/rdsk/c0t11d0s0
ディスクパーティションを保存していない場合は、format(1M) または fmthar(1M) コマンドを使用して、ディスクにパーティションを再度作成します。
すべての複製データベースを元に戻します。以下に例を示します。
# metadb -a -l 2000 -c 2 c0t11d0s0
# metattach d20 d21
新しいディスクのスライスを含む各ホットスペアプールについて、ホットスペアを再度作成します。
# metahs -a hsp001 c0t11d0s1
新しいディスクのスライスを使用して、壊れたメタデバイスを修復します。
交換する対象ディスクが原因でメタデバイスが保守状態になっている場合は、スライスを再度有効にすることによって、メタデバイスを修復することができます。
# metareplace -e ミラーまたは_RAID5_のメタデバイス cwtxdysz
すべてのファイルシステムを再度マウントし、オフラインにすることができなかったメタデバイスを使用していたすべてのアプリケーションを再起動します。
# mount ファイルシステム
詳細は、Solstice DiskSuite のマニュアルを参照してください。