PRIMECLUSTER Global Disk Services 説明書 4.2 (Linux版) |
目次
![]() ![]() |
付録F トラブルシューティング | > F.1 トラブルへの対処方法 |
ボリュームの状態が以下に該当する場合は、それぞれに記載されている対処を行ってください。
ボリュームの状態は次の方法で確認できます。
# sdxinfo -V -o Volume1 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Group1 * * 0 65535 65536 PRIVATE volume Volume1 Class1 Group1 off on 65536 17596415 17530880 INVALID |
この例では、最上位グループ Group1 に存在するボリューム Volume1 が、STATUSフィールドに示されているとおりINVALID状態になっています。
ミラーボリュームを構成するミラースライスのなかに、データが正当な状態(ACTIVEまたはSTOP)のミラースライスがなくなると、ミラーボリュームはINVALID状態になります。INVALID状態のボリュームは起動できません。
ミラーボリュームがINVALID状態となる原因として、次の2つが考えられます。
1) ボリュームが属しているグループ内に、DISABLE状態のディスクが存在しているかどうかを次の方法で確認してください。
(例A1)
# sdxinfo -G -o Volume1 OBJ NAME CLASS DISKS BLKS FREEBLKS SPARE ------ ------- ------- ------------------- -------- -------- ----- group Group1 Class1 Disk1:Disk2 17596416 0 0 # sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 mirror Class1 Group1 sda 17596416 node1:node2 ENABLE disk Disk2 mirror Class1 Group1 sdb 17596416 node1:node2 DISABLE |
この例では、最上位ミラーグループ Group1 にディスク Disk1, Disk2 が接続されていて、STATUSフィールドに示されているとおり、Disk2 がDISABLE状態となっています。
(例B1)
# sdxinfo -G -o Volume1 OBJ NAME CLASS DISKS BLKS FREEBLKS SPARE ------ ------- ------- ------------------- -------- -------- ----- group Group1 Class1 Group2:Group3 35127296 17530880 0 group Group2 Class1 Disk1:Disk2 35127296 * 0 group Group3 Class1 Disk3:Disk4 35127296 * 0 # sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------ disk Disk1 stripe Class1 Group2 sda 17596416 node1:node2 ENABLE disk Disk2 stripe Class1 Group2 sdb 17596416 node1:node2 DISABLE disk Disk3 stripe Class1 Group3 sdc 17682084 node1:node2 ENABLE disk Disk4 stripe Class1 Group3 sdd 17682084 node1:node2 ENABLE |
この例では、最上位ミラーグループ Group1 に下位ストライプグループGroup2, Group3 が接続されていて、Group2 に接続されているディスクDisk2 が、STATUSフィールドに示されているとおり DISABLE 状態となっています。
2) (原因a)に該当する場合は、まず、「ディスク状態に関する異常」の手順にしたがって、ディスクの状態を復旧させてください。
3) ミラーボリュームのデータを復元するために、最上位ミラーグループに接続されているディスクまたは下位グループの中から、復元元にするミラースライスが属しているディスクまたは下位グループを選び、sdxfixコマンドを実行します。
(例A3)
# sdxfix -V -c Class1 -d Disk1 -v Volume1 |
この例では、ディスク Disk1 に存在するスライスをもとに Volume1 を復旧します。
(例B3)
# sdxfix -V -c Class1 -g Group3 -v Volume1 |
この例では、下位ストライプグループ Group3 に存在するスライスをもとに Volume1 を復旧します。
4) ボリュームを起動してください。
# sdxvolume -N -c Class1 -v Volume1 -e nosync |
5) Volume1 にアクセスして内容を確認してください。必要に応じて、バックアップデータのリストアやfsckなどによる整合性回復処理を行ってください。
6) ボリュームの等価性コピーを実行してください。
# sdxcopy -B -c Class1 -v Volume1 |
ボリュームの状態は次の方法で確認できます。
# sdxinfo -V -o Volume1 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Disk1 * * 0 32767 32768 PRIVATE volume Volume1 Class1 Disk1 off on 32768 65535 32768 INVALID volume * Class1 Disk1 * * 65536 8421375 8355840 FREE |
この例では、シングルディスク Disk1 に存在するシングルボリューム Volume1 が、STATUSフィールドに示されているとおりINVALID状態になっています。
INVALID状態のボリュームは起動できません。
シングルボリュームがINVALID状態となる原因として、次の2つが考えられます。
1) シングルディスクがDISABLE状態かどうかを次の方法で確認します。
# sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 single Class1 * sda 8355840 node1:node2 DISABLE |
この例では、シングルディスク Disk1 が、STATUSフィールドに示されているとおり DISABLE状態になっています。
2) (原因a)に該当する場合は、まず、「ディスク状態に関する異常」の手順にしたがって、ディスクの状態を復旧させてください。
3) シングルボリュームのデータを復元するために、sdxfixコマンドを実行します。
# sdxfix -V -c Class1 -d Disk1 -v Volume1 |
4) ボリュームを起動します。
# sdxvolume -N -c Class1 -v Volume1 |
5) Volume1 にアクセスして内容を確認してください。必要に応じて、バックアップデータのリストアやfsckコマンドなどによる整合性回復処理を行ってください。
ボリュームの状態は次の方法で確認できます。
# sdxinfo -V -o Volume1 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Group1 * * 0 65535 65536 PRIVATE volume Volume1 Class1 Group1 off on 65536 17596415 17530880 INVALID |
この例では、最上位グループ Group1 に存在するボリューム Volume1 が、STATUSフィールドに示されているとおりINVALID状態になっています。
ボリュームに関連するディスクのなかに、DISABLE状態のディスクがあると、ボリュームを構成するスライスはNOUSE状態になり、ボリュームはINVALID状態になります。INVALID状態のボリュームは起動できません。
1) ボリュームに関連するディスクの状態は、次の方法で確認できます。
# sdxinfo -G -o Volume1 -e long OBJ NAME CLASS DISKS BLKS FREEBLKS SPARE MASTER TYPE WIDTH ------ ------- ------- ------------------- -------- -------- ----- ------ ------ ----- group Group1 Class1 Group2:Group3 70189056 65961984 * * stripe 32 group Group2 Class1 Disk1:Disk2 35127296 * * * concat * group Group3 Class1 Disk3:Disk4 35127296 * * * concat * # sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 concat Class1 Group2 sda 17596416 node1:node2 ENABLE disk Disk2 concat Class1 Group2 sdb 17596416 node1:node2 DISABLE disk Disk3 concat Class1 Group3 sdc 17682084 node1:node2 ENABLE disk Disk4 concat Class1 Group3 sdd 17682084 node1:node2 ENABLE |
この例では、最上位ストライプグループ Group1 に下位コンカチネーショングループ Group2, Group3 が接続されていて、Group2 に接続されているディスク Disk2 が、STATUSフィールドに示されているとおりDISABLE状態となっています。
2) 「ディスク状態に関する異常」の手順にしたがって、ディスクの状態を復旧させてください。
3) ボリュームのデータを復元するために、sdxfixコマンドを実行します。-gオプションでは、最上位グループのグループ名(この例では Group1 )を指定します。
# sdxfix -V -c Class1 -g Group1 -v Volume1 |
4) ボリュームを起動します。
# sdxvolume -N -c Class1 -v Volume1 |
5) Volume1 にアクセスして内容を確認してください。必要に応じて、バックアップデータのリストアやfsckコマンドなどによる整合性回復処理を行ってください。
プロキシボリュームからマスタボリュームへのコピー処理中にI/Oエラーが発生するなどしてコピー処理が失敗した場合に、コピー先のボリュームがINVALID状態になります。
1) ボリュームが属しているグループ内に、DISABLE状態のディスクが存在しているかどうかを次の方法で確認してください。
# sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 mirror Class1 Group1 sda 8421376 * ENABLE disk Disk2 mirror Class1 Group1 sdb 8421376 * DISABLE |
この例では、Disk2 がDISABLE状態となっています。
DISABLE状態のディスクが存在する場合は、「ディスク状態に関する異常」の「(1)ディスクがDISABLE状態である。」の(原因a)、(原因b)、(原因c)のうちのどれに該当するかを確認してください。(原因a)または(原因b)に該当する場合は、まず、手順にしたがってディスクの状態を復旧させてください。
2) 「スライス状態に関する異常」の「(1)ミラーボリュームを構成するミラースライスがINVALID状態である。」の手順にしたがって、ディスクのハードウェア異常の有無を確認し、異常がある場合は、故障または不良箇所を特定してください。
故障箇所がディスク以外の部品であった場合は、まず、手順にしたがって故障箇所を修復してください。
3) 以下の場合分けにしたがって復旧を行ってください。
原因がディスク故障以外の場合
プロキシボリュームをもとにデータを復元する場合
→ 手順a)にしたがって復旧を行います。
テープなどに退避されているバックアップデータをもとにデータを復元する場合
→ 手順b)にしたがって復旧を行います。
ディスク故障が原因の場合
マスタグループに属していない場合
グループに接続されているディスクのうちの一部が故障している場合
→ 手順c)にしたがって復旧を行います。
グループに接続されているすべてのディスクが故障している場合
→ 手順d)にしたがって復旧を行います。
マスタグループに属している場合
→ 手順e)にしたがって復旧を行います。
a) プロキシボリュームをもとにマスタボリュームのデータを復元する手順
a1) データの復元元とするプロキシボリュームが、マスタボリュームから分離されているかどうかを、sdxinfo -V -e longコマンドで表示されるPROXYフィールドで確認します。
a2) 復元元とするプロキシボリュームが分離されていない場合は、分離します。
# sdxproxy Part -c Class1 -p Volume2 |
a3) 復元元とするプロキシボリュームにアクセスしているアプリケーションがあれば、停止します。プロキシボリュームをファイルシステムとして使用している場合は、アンマウントします。
a4) 復元元とするプロキシボリュームが起動されている場合は、停止します。
# sdxvolume -F -c Class1 -v Volume2 |
a5) プロキシボリュームのデータをもとに、マスタボリュームのデータを復元します。
# sdxproxy RejoinRestore -c Class1 -p Volume2 |
b) バックアップデータをもとにデータを復元する手順
b1) ボリュームがINVALID状態の場合は、STOP状態に変更するため、データの復元元にするディスク(スライス)を決めて、sdxfixコマンドを実行します。
# sdxfix -V -c Class1 -d Disk1 -v Volume1 |
この例では、Disk1 に存在するスライスをもとに Volume1 を復旧します。
b2) 復元するボリュームが停止している場合は、起動します。
# sdxvolume -N -c Class1 -v Volume1 -e nosync |
b3) 復元するボリュームにアクセスして内容を確認してください。必要に応じて、バックアップデータのリストアやfsckなどによる整合性回復処理を行ってください。
b4) ミラーリング構成のボリュームの場合は、等価性コピーを実行します。
# sdxcopy -B -c Class1 -v Volume1 |
c) グループに接続されている一部のディスクを交換する手順
c1) INVALID状態のマスタボリュームに結合されているプロキシボリュームのデータをもとにマスタボリュームを復旧したい場合や、マスタボリュームを復旧した後もプロキシボリュームのデータを利用したい場合は、sdxproxy Partコマンドを使ってプロキシボリュームを分離します。
# sdxproxy Part -c Class1 -p Volume2 |
c2) グループにINVALID状態のボリュームが存在する場合は、sdxfix -Vコマンドを使ってSTOP状態に変更します。-dオプションでは、故障していないディスクを指定します。
# sdxfix -V -c Class1 -d Disk1 -v Volume1 |
c3) 手順にしたがってディスクを交換します。ディスク交換の手順については、「sdxswap - ディスクの交換」または「ディスク交換」を参照してください。
c4) マスタボリュームのデータを復元します。プロキシボリュームをもとに復元する場合は手順a)、テープなどのバックアップデータをもとに復元する場合は手順b)にしたがって復元を行います。
d) グループに接続されているすべてのディスクを交換する手順
d1) マスタボリューム、およびデータの復元元とするプロキシボリュームにアクセスしているアプリケーションがあれば、停止します。マスタボリューム、プロキシボリュームをファイルシステムとして使用している場合は、アンマウントします。
d2) d1)のマスタボリュームおよびプロキシボリュームを停止します。
# sdxvolume -F -c Class1 -v Volume1 # sdxvolume -F -c Class1 -v Volume2 |
d3) sdxproxy RejoinRestoreコマンドを使って、d1)のプロキシボリュームをもとにマスタボリュームのデータの復元を試みます。コマンドが正常終了してマスタボリュームがINVALID状態でなくなれば、復旧処理は完了しており、手順d4)以降を実施する必要はありません。
# sdxproxy RejoinRestore -c Class1 -p Volume2 |
d4) sdxproxy Swapコマンドを使って、d1)のマスタボリュームとプロキシボリュームのスライスを入れ換えます。
# sdxproxy Swap -c Class1 -p Volume2 |
d5) 手順d4)により、マスタボリュームはINVALID状態ではなくなり、プロキシボリュームがINVALID状態になります。「ボリューム状態に関する異常」の「(5)プロキシボリュームがINVALID状態である。」の手順にしたがって、INVALID状態のプロキシボリュームを復旧してください。
d6) sdxproxy Swapコマンドを使って、d4)で入れ換えたマスタボリュームとプロキシボリュームのスライスを再度入れ換えます。
# sdxproxy Swap -c Class1 -p Volume2 |
e) マスタグループに接続されているディスクを交換する手順
e1) マスタグループ、およびデータの復元元とするプロキシグループに存在するボリュームにアクセスしているアプリケーションがあれば、停止します。ボリュームをファイルシステムとして使用している場合は、アンマウントします。
e2) e1)のマスタグループおよびプロキシグループに存在するすべてのボリュームを停止します。
# sdxvolume -F -c Class1 -v Volume1 # sdxvolume -F -c Class1 -v Volume2 |
e3) sdxproxy RejoinRestoreコマンドを使って、e1)のプロキシグループをもとにマスタグループのデータの復元を試みます。コマンドが正常終了してすべてのマスタボリュームがINVALID状態でなくなれば、復旧処理は完了しており、手順e4)以降を実施する必要はありません。
# sdxproxy RejoinRestore -c Class1 -p Volume2 |
e4) sdxproxy Swapコマンドを使って、e1)のマスタグループとプロキシグループのスライスを入れ換えます。
# sdxproxy Swap -c Class1 -p Group2 |
e5) 手順e4)により、マスタボリュームはINVALID状態ではなくなり、プロキシボリュームがINVALID状態になります。「ボリューム状態に関する異常」の「(5)プロキシボリュームがINVALID状態である。」の手順にしたがって、INVALID状態のプロキシボリュームを復旧してください。
e6) sdxproxy Swapコマンドを使って、(e4)で入れ換えたマスタグループとプロキシグループのスライスを再度入れ換えます。
# sdxproxy Swap -c Class1 -p Group2 |
マスタボリュームからプロキシボリュームへのコピー処理中にI/Oエラーが発生するなどしてコピー処理が失敗した場合に、コピー先のプロキシボリュームがINVALID状態になります。
1) ボリュームが属しているグループ内に、DISABLE状態のディスクが存在しているかどうかを次の方法で確認してください。
# sdxinfo -D -o Volume1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 mirror Class1 Group1 sda 8421376 * ENABLE disk Disk2 mirror Class1 Group1 sdb 8421376 * DISABLE |
この例では、Disk2 がDISABLE状態となっています。
DISABLE状態のディスクが存在する場合は、「ディスク状態に関する異常」の「(1)ディスクがDISABLE状態である。」の(原因a)、(原因b)、(原因c)のうちのどれに該当するかを確認してください。(原因a)または(原因b)に該当する場合は、まず、手順にしたがってディスクの状態を復旧させてください。
2) 「スライス状態に関する異常」の「(1)ミラーボリュームを構成するミラースライスがINVALID状態である。」の手順にしたがって、ディスクのハードウェア異常の有無を確認し、異常がある場合は、故障または不良箇所を特定してください。故障箇所がディスク以外の部品であった場合は、まず、手順にしたがって故障箇所を修復してください。
3) 以下の場合分けにしたがって復旧を行ってください。
原因がディスク故障以外の場合
→ 手順a)にしたがって復旧を行います。
ディスク故障が原因の場合
プロキシグループに属していない場合
グループに接続されているディスクのうちの一部が故障している場合
→ 手順b)にしたがって復旧を行います。
グループに接続されているすべてのディスクが故障している場合
→ 手順c)にしたがって復旧を行います。
プロキシグループに属している場合
→ 手順d)にしたがって復旧を行います。
a) マスタボリュームをもとにプロキシボリュームのデータを復元する手順
a1) プロキシボリュームがマスタボリュームから分離されているかどうかを、sdxinfo -V -e longコマンドで表示されるPROXYフィールドで確認します。
a2) プロキシボリュームが分離されていない場合は、分離します。
# sdxproxy Part -c Class1 -p Volume2 |
a3) プロキシボリュームを、マスタボリュームに再度結合します。
# sdxproxy Rejoin -c Class1 -p Volume2 |
b) グループに接続されている一部のディスクを交換する手順
b1) sdxproxy Breakコマンドを使ってマスタボリュームとの関係を解除します。
# sdxproxy Break -c Class1 -p Volume2 |
b2) グループに存在するINVALID状態のボリュームを、sdxfix -Vコマンドを使ってSTOP状態に変更します。-dオプションでは、故障していないディスクを指定します。
# sdxfix -V -c Class1 -d Disk1 -v Volume2 |
b3) 手順にしたがってディスクを交換します。ディスク交換の手順については、「sdxswap - ディスクの交換」または「ディスク交換」を参照してください。
b4) マスタとプロキシを、sdxproxy Joinコマンドを使って再度関連づけます。
# sdxproxy Join -c Class1 -m Volume1 -p Volume2 |
c) グループに接続されているすべてのディスクを交換する手順
c1) sdxproxy Breakコマンドを使ってマスタとの関係を解除します。
# sdxproxy Break -c Class1 -p Volume2 |
c2) グループに存在するボリュームにアクセスしているアプリケーションがあれば、停止します。ボリュームをファイルシステムとして使用している場合は、アンマウントします。
c3) グループに存在するすべてのボリュームを停止します。
# sdxvolume -F -c Class1 -v Volume2 |
c4) グループのボリューム構成(ボリューム名、サイズなど)をsdxinfoコマンドで確認し、記録しておきます。
c5) グループに存在するすべてのボリュームを削除します。
# sdxvolume -R -c Class1 -v Volume2 |
c6) 手順にしたがってディスクを交換します。ディスク交換の手順については、「sdxswap - ディスクの交換」または「ディスク交換」を参照してください。
c7) c5)で削除したボリュームを再度作成します。
# sdxvolume -M -c Class1 -g Group1 -v Volume2 -s サイズ |
c8) c7)で作成したボリュームを停止します。
# sdxvolume -F -c Class1 -v Volume2 |
c9) 解除したマスタボリュームとプロキシボリュームを、sdxproxy Joinコマンドを使って再度関連づけます。
# sdxproxy Join -c Class1 -m Volume1 -p Volume2 |
d) プロキシグループに接続されているディスクを交換する手順
d1) sdxproxy Breakコマンドを使ってマスタとの関係を解除します。
# sdxproxy Break -c Class1 -p Group2 |
d2) グループに存在するボリュームにアクセスしているアプリケーションがあれば、停止します。ボリュームをファイルシステムとして使用している場合は、アンマウントします。
d3) グループに存在するすべてのボリュームを停止します。
# sdxvolume -F -c Class1 -v Volume2 |
d4) グループに存在するすべてのボリュームを削除します。
# sdxvolume -R -c Class1 -v Volume2 |
d5) 手順にしたがってディスクを交換します。ディスク交換の手順については、「sdxswap - ディスクの交換」または「ディスク交換」を参照してください。
d6) 解除したマスタグループとプロキシグループを、sdxproxy Joinコマンドを使って再度関連づけます。
# sdxproxy Join -c Class1 -m Group1 -p Group2 -a Volume1=Volume2:on |
ボリュームは、通常、システム起動時に自動的に起動されてACTIVE状態になります。GDS運用管理ビューのボリューム停止メニュー、または、sdxvolume -Fコマンドを使用してボリュームを停止した場合に、ボリュームはSTOP状態になります。
クラスタシステムでは、クラスタアプリケーションに登録されているGDSの共用クラス内のボリュームのうち、プロキシボリューム以外のボリュームは、クラスタアプリケーションの状態遷移と連動して起動および停止されます。クラスタアプリケーションがOffline状態の場合、プロキシボリューム以外のボリュームはSTOP状態です。
STOP状態のボリュームへのアクセスは、EIO (I/O error)またはENXIO (No such device or address)のエラーになります。
クラスタシステムにおいて、クラスタアプリケーションに登録されていない共用クラスのボリュームがノード起動時に起動されないトラブルについては、「クラスタシステムに関する異常」の「(4) GFS共用ファイルシステムが、ノード起動時にマウントされない。」を参照してください。
必要に応じて、GDS運用管理ビューのボリューム起動メニュー、または、sdxvolume -Nコマンドを使用して、ボリュームを起動してください。
クラスタアプリケーションに登録されているGDSの共用クラス内のボリュームを起動する場合は、クラスタアプリケーションをOnline状態にしてください。
ミラーボリュームは複数のスライスから構成されていて、1つのスライスでI/Oエラーが発生したとしても、エラーが起きたスライスだけを切り離してボリュームへのアクセスは正常に完了します。
ボリュームを構成するスライスの中に、ACTIVE状態のスライスが1つだけになってしまった場合、ACTIVE状態である最後のスライスでI/Oエラーが発生すると、ボリュームへのアクセスはエラーとなります。このとき、スライスおよびボリュームの状態はACTIVEのままで変更されません。
グループにディスクまたは下位グループが2つ接続されている、2多重のミラーリング構成を例として、こうしたトラブルが発生する主な状況について説明します。また、トラブルをできるだけ防止するための手段を回避策として示します。
ACTIVE状態である最後のスライスでI/Oエラーが発生した原因をディスクドライバのログメッセージなどをもとにして調査してください。
以下では、次の3つの場合に分けて、対処方法を説明します。
原因がディスク部品の故障で、バックアップデータを使って復旧する場合
原因がディスク部品の故障で、INVALID状態のスライスからデータを復旧する場合
原因がディスク以外の部品の故障あるいは不良である場合
a. 原因がディスク部品の故障で、バックアップデータを使って復旧する場合
a1) 原因がディスク部品の故障であった場合、データが正当な状態であるスライスは存在しません。以下の手順にしたがって、バックアップデータからのリストアによりデータを復旧させてください。
a2) ボリュームをアクセスしているアプリケーションを停止します。ファイルシステムとして使用している場合は、アンマウントを実行してください。アンマウント実行時に入出力エラーが発生する場合は、アンマウントコマンドの-fオプションを指定してください。
a3) sdxvolumeコマンドによって、ボリュームを停止させます。
# sdxvolume -F -c Class1 -v Volume1 |
a4) ボリューム内に、TEMP状態のスライスが存在する場合は、「スライス状態に関する異常」の手順にしたがって復旧してください。
a5) ボューム内に、NOUSE状態のスライスが存在する場合は、「スライス状態に関する異常」の手順にしたがって復旧してください。
a6) ボリュームのサイズを記録してください。ボリュームのサイズは、以下の方法で確認できます。
# sdxinfo -V -o Volume1 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Group1 * * 0 32767 32768 PRIVATE volume Volume1 Class1 Group1 off on 32768 4161535 4128768 STOP |
この例では、Volume1 の BLOCKSフィールドに表示されている4128768ブロックです。
a7) sdxvolumeコマンドによって、ボリュームを削除します。
# sdxvolume -R -c Class1 -v Volume1 |
a8) 「ディスク交換」またはsdxswapコマンドのマニュアル手順にしたがって、ディスクを交換してください。
a9) sdxvolumeコマンドによってボリュームを再度作成してください。ブロック数 には、a6)で記録したサイズ、この例では4128768を指定します。
# sdxvolume -M -c Class1 -g Group1 -v Volume1 -s ブロック数 |
a10) 最後に、Volume1 に対してバックアップデータをリストアしてください。
b. 原因がディスク部品の故障で、INVALID状態のスライスからデータを復旧する場合
b1) 原因がディスク故障であり、バックアップデータがない、あるいは古すぎるため、やむを得ずすでに切り離されていたINVALID状態のスライスからデータを復旧させたい場合は、次の手順で復旧します。
b2) ボリュームをアクセスしているアプリケーションを停止します。ファイルシステムとして使用している場合は、アンマウントを実行してください。アンマウント実行時に入出力エラーが発生する場合は、アンマウントコマンドの-f オプションを指定してください。
b3) sdxvolumeコマンドによって、ボリュームを停止させます。
# sdxvolume -F -c Class1 -v Volume1 |
b4) ボリューム内に、TEMP状態のスライスが存在する場合は、「スライス状態に関する異常」の手順にしたがって復旧してください。
b5) ボリューム内に、NOUSE状態のスライスが存在する場合は、「スライス状態に関する異常」の手順にしたがって復旧してください。
b6) 復元元にするミラースライスを決めて、sdxfixコマンドを使ってボリュームを復旧してください。
(例1)
# sdxfix -V -c Class1 -d Disk2 -v Volume1 |
この例では、最上位ミラーグループに接続されているディスク Disk2 に存在するミラースライスを復元元にします。
(例2)
# sdxfix -V -c Class1 -g Group2 -v Volume1 |
この例では、最上位ミラーグループに接続されている下位グループ Group2 に存在するミラースライスを復元元にします。
b7) ボリュームを起動してください。
# sdxvolume -N -c Class1 -v Volume1 -e nosync |
b8) 必要に応じて、Volume1 のバックアップ採取、およびfsckコマンドなどによるデータの整合性回復を行ってください。
b9) 最後に、「ディスク交換」またはsdxswapコマンドのマニュアル手順にしたがって、ディスクを交換してください。
c. 原因がディスク以外の部品の故障あるいは不良である場合
データが正当なスライスはディスク内に存在しているため、いったんシステムをシャットダウンして、故障箇所を修復した後にブートしてください。自動的に等価性コピーが行われてミラーリング状態を復旧します。
シングルボリュームは1つのスライスからのみ構成されているので、I/Oエラーが発生した場合、ボリュームへのアクセスはエラーとなりますが、スライスおよびボリュームの状態はACTIVEのままで変更されません。
I/Oエラーが発生した原因をディスクドライバのログメッセージなどをもとにして調査してください。
以下では、次の2つの場合に分けて対処方法を説明します。
原因がディスク部品の故障で、バックアップデータを使って復旧する場合
原因がディスク以外の部品の故障あるいは不良である場合
a. 原因がディスク部品の故障で、バックアップデータを使って復旧する場合
a1) 原因がディスク部品の故障であった場合、データが正当な状態であるスライスは存在しません。以下の手順にしたがって、バックアップデータからのリストアによりデータを復旧させてください。ここでは、Disk1(sda)が故障した場合を例にとって説明します。
# sdxinfo -D -o Disk1 OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS DEVCONNECT STATUS ------ ------- ------ ------- ------- ------- -------- ---------------- ------- disk Disk1 single Class1 * sda 8493876 node1:node2 ENABLE |
a2) sdxinfoコマンドによって、故障したディスクに存在するボリュームを探し、ボリュームのサイズを記録します。
# sdxinfo -V -o Disk1 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Disk1 * * 0 32767 32768 PRIVATE volume Volume1 Class1 Disk1 off on 32768 65535 32768 ACTIVE volume Volume2 Class1 Disk1 off on 65536 4194303 4128768 ACTIVE volume * Class1 Disk1 * * 4194304 8421375 4227072 FREE |
この例では、故障した Disk1 に Volume1 と Volume2 が存在します。 Volume1 のサイズはBLOCKSフィールドに表示されている32768ブロックで、Volume2 のサイズはBLOCKSフィールドに表示されている4128768ブロックです。
a3) ボリュームをアクセスしているアプリケーションを停止します。ファイルシステムとして使用している場合は、アンマウントを実行します。アンマウント実行時に入出力エラーが発生する場合は、アンマウントコマンドの-fオプションを指定してください。
a4) sdxvolumeコマンドによって、ボリュームを停止させます。
# sdxvolume -F -c Class1 -v Volume1,Volume2 |
a5) sdxvolumeコマンドによって、ボリュームを削除します。
# sdxvolume -R -c Class1 -v Volume1 # sdxvolume -R -c Class1 -v Volume2 |
a6) ディスク交換前に下記のコマンドを実行してください。
# sdxswap -O -c Class1 -d Disk1 |
ただし、ディスククラスの最後のディスクであった場合、以下のエラーとなります。この場合は下記のa6')、a7')、a8')を実施してください。
SDX:sdxswap: ERROR: Disk1: The last ENABLE disk in class cannot be swapped
a7) ディスクの交換を行ってください。
a8) ディスク交換後に下記のコマンドを実行してください。
# sdxswap -I -c Class1 -d Disk1 |
a6') ディスク交換前に下記のコマンドを実行してください。
a6)でエラーが出ていない場合は、a6')、a7')、a8')を実施する必要はありません。
# sdxdisk -R -c Class1 -d Disk1 |
a7') ディスクの交換を行ってください。
a8') ディスク交換後に下記のコマンドを実行してください。
# sdxdisk -M -c Class1 -d sda=Disk1:single |
a9) sdxvolumeコマンドによってボリュームを再度作成してください。-s オプションでは、a2)で記録したサイズを指定します。
# sdxvolume -M -c Class1 -d Disk1 -v Volume1 -s 32768 # sdxvolume -M -c Class1 -d Disk1 -v Volume2 -s 4128768 |
a10) 最後に、Volume1、Volume2 に対してバックアップデータをリストアしてください。
b. 原因がディスク以外の部品の故障あるいは不良である場合
いったんシステムをシャットダウンして、故障箇所を修復した後にブートしてください。スライスのデータは正当なので、データを復旧する必要はありません。
ストライプボリュームおよびコンカチネーショングループ内のボリュームは1つのスライスのみから構成されているので、I/Oエラーが発生した場合、ボリュームへのアクセスはエラーとなりますが、スライスおよびボリュームの状態はACTIVEのままで変更されません。
I/Oエラーが発生した原因をディスクドライバのログメッセージなどをもとにして調査します。
ボリュームに関連するディスクのエラー状態と物理ディスク名は、次の方法で確認できます。
# sdxinfo -D -o Volume1 -e long OBJ NAME TYPE CLASS GROUP DEVNAM DEVBLKS FREEBLKS DEVCONNECT STATUS E ------ ------- ------ ------- ------- ------- -------- -------- ---------------- ------- ----- disk Disk1 concat Class1 Group2 sda 17596416 * node1:node2 ENABLE 0 disk Disk2 concat Class1 Group2 sdb 17596416 * node1:node2 ENABLE 1 disk Disk3 concat Class1 Group3 sdc 17682084 * node1:node2 ENABLE 0 disk Disk4 concat Class1 Group3 sdd 17682084 * node1:node2 ENABLE 0 |
この例では、Eフィールドに示されているとおり、Disk2 でI/Oエラーが発生しています。Disk2 に対応する物理ディスク名は、DEVNAMフィールドに示されているとおりsdbです。
以下では、次の2つの場合に分けて、対処方法を説明します。
原因がディスク部品の故障で、バックアップデータを使って復旧する場合
原因がディスク以外の部品の故障あるいは不良である場合
a. 原因がディスク部品の故障で、バックアップデータを使って復旧する場合
a1) 原因がディスク部品の故障であった場合、データが正当な状態であるスライスは存在しません。以下の手順にしたがって、バックアップデータからのリストアによりデータを復旧させてください。
a2) sdxinfoコマンドを使って、故障したディスクに関連するグループの構成の情報を記録します。
# sdxinfo -G -o Disk2 -e long OBJ NAME CLASS DISKS BLKS FREEBLKS SPARE MASTER TYPE WIDTH ------ ------- ------- ------------------- -------- -------- ----- ------ ------ ----- group Group1 Class1 Group2:Group3 70189056 65961984 * * stripe 32 group Group2 Class1 Disk1:Disk2 35127296 * * * concat * group Group3 Class1 Disk3:Disk4 35127296 * * * concat * |
この例では、最上位ストライプグループ Group1 に下位コンカチネーショングループ Group2, Group3 が接続されていて、Group2 にはディスク Disk1, Disk2、Group3 にはディスク Disk3, Disk4 が接続されています。また、Group1 のストライプ幅は32ブロックです。
a3) sdxinfoコマンドを使って、故障したディスクに関連する最上位グループに存在するボリュームを探します。
# sdxinfo -V -o Disk2 OBJ NAME CLASS GROUP SKIP JRM 1STBLK LASTBLK BLOCKS STATUS ------ ------- ------- ------- ---- --- -------- -------- -------- -------- volume * Class1 Group1 * * 0 65535 65536 PRIVATE volume Volume1 Class1 Group1 * * 65536 98303 32768 ACTIVE volume Volume2 Class1 Group1 * * 98304 4227071 4128768 ACTIVE volume * Class1 Group1 * * 4227072 70189055 65961984 FREE |
この例では、故障した Disk2 に関連する最上位グループ Group1 に、Volume1 と Volume2 が存在します。Volume1 のサイズはBLOCKSフィールドに表示されている32768ブロックで、Volume2 のサイズはBLOCKSフィールドに表示されている4128768ブロックです。
a4) ボリュームをアクセスしているアプリケーションを停止します。ファイルシステムとして使用している場合は、アンマウントを実行します。アンマウント実行時に入出力エラーが発生する場合は、アンマウントコマンドの-fオプションを指定してください。
a5) sdxvolumeコマンドを使って、ボリュームを停止させます。
# sdxvolume -F -c Class1 -v Volume1,Volume2 |
a6) sdxvolumeコマンドを使って、ボリュームを削除します。
# sdxvolume -R -c Class1 -v Volume1 # sdxvolume -R -c Class1 -v Volume2 |
a7) 故障したディスクを、グループから切断します。グループが階層化されている場合は、上位グループから順に切断します。
# sdxgroup -D -c Class1 -h Group1 -l Group2 # sdxdisk -D -c Class1 -g Group2 -d Disk2 |
この例では、故障したディスク Disk2 は Group2 に接続されていて、Group2 は Group1 に接続されているため、Group2, Disk2 の順に切断します。
a8) ディスク交換前に下記のコマンドを実行してください。
# sdxswap -O -c Class1 -d Disk2 |
ディスククラスの最後のディスクであった場合、以下のエラーとなります。この場合は、下記のa8'), a9'), a10')を実施してください。
SDX:sdxswap: ERROR: Disk2: The last ENABLE disk in class cannot be swapped
a9) ディスクの交換を行ってください。
a10) ディスク交換後に下記のコマンドを実行してください。
# sdxswap -I -c Class1 -d Disk2 |
a8') ディスク交換前に下記のコマンドを実行してください。
a8)でエラーが出ていない場合は、a8'), a9'), a10')を実施する必要はありません。
# sdxdisk -R -c Class1 -d Disk2 |
a9') ディスクの交換を行ってください。
a10') ディスク交換後に下記のコマンドを実行してください。
# sdxdisk -M -c Class1 -d sdb=Disk2 |
a11) a2)で記録したグループ情報を元に、交換したディスクをグループに接続します。グループが階層化されていた場合は、下位から順に接続します。
# sdxdisk -C -c Class1 -g Group2 -d Disk2 # sdxgroup -C -c Class1 -h Group1 -l Group2 -a type=stripe,width=32 |
a12) sdxvolumeコマンドによってボリュームを再度作成します。-sオプションでは、a3)で記録したサイズ、この例では32768、4128768を指定します。
# sdxvolume -M -c Class1 -g Group1 -v Volume1 -s 32768 -a pslice=off # sdxvolume -M -c Class1 -g Group1 -v Volume2 -s 4128768 -a pslice=off |
a13) 最後に、Volume1, Volume2 に対してバックアップデータをリストアします。
b. 原因がディスク以外の部品の故障あるいは不良である場合
いったんシステムをシャットダウンして、故障箇所を修復した後にブートしてください。スライスのデータは正当なので、データを復旧する必要はありません。
目次
![]() ![]() |