第21章 一般的な問題の解決
本章では、Red Hat Gluster Storage のトラブルシューティングの方法をいくつか紹介します。
21.1. ロックされたファイルの特定とロックの消去
statedump コマンドを使用すると、ファイルに保持されたロックを一覧表示できます。statedump 出力は、各ロックの情報を、ロックを保持するアプリケーションの範囲、basename、および PID とともに提供します。出力を分析して、所有者/アプリケーションが実行されていない、またはそのロックに関心のあるロックを検索できます。アプリケーションがこのファイルを使用していないことを確認したら、以下の clear-locks コマンドを使用してロックをクリアできます。
# gluster volume clear-locks VOLNAME path kind {blocked | granted | all}{inode range | entry basename | posix range}
statedump の実行の詳細は、「statedump を使用した完全なボリュームの状態の表示」 を参照してください。
ロックされたファイルを特定し、ロックをクリアする
- ボリュームで statedump を実行し、以下のコマンドを使用してロックされたファイルを表示します。# gluster volume statedump VOLNAMEたとえば、test-volume の statedump を表示するには、以下を実行します。
# gluster volume statedump test-volume Volume statedump successful
statedump ファイルは、./tmp
ディレクトリー内のブリックサーバーまたは server.statedump-path ボリュームオプションを使用して設定したディレクトリーに作成されます。ダンプファイルの命名規則は、brick-path.brick-pid.dump
です。 - 以下のコマンドを使用して、エントリーロックを消去します。# gluster volume clear-locks VOLNAME path kind granted entry basename以下は、エントリーロック(エントリーポイント)を示す statedump ファイルの内容の例です。これらのロックが古いロックであることを確認し、リソースを所有するリソースがないことを確認してください。
[xlator.features.locks.vol-locks.inode] path=/ mandatory=0 entrylk-count=1 lock-dump.domain.domain=vol-replicate-0 xlator.feature.locks.lock-dump.domain.entrylk.entrylk[0](ACTIVE)=type=ENTRYLK_WRLCK on basename=file1, pid = 714782904, owner=ffffff2a3c7f0000, transport=0x20e0670, , granted at Mon Feb 27 16:01:01 2012 conn.2.bound_xl./rhgs/brick1.hashsize=14057 conn.2.bound_xl./rhgs/brick1.name=/gfs/brick1/inode conn.2.bound_xl./rhgs/brick1.lru_limit=16384 conn.2.bound_xl./rhgs/brick1.active_size=2 conn.2.bound_xl./rhgs/brick1.lru_size=0 conn.2.bound_xl./rhgs/brick1.purge_size=0
たとえば、test-volume のfile1
でエントリーロックを消去するには、次のコマンドを実行します。# gluster volume clear-locks test-volume / kind granted entry file1 Volume clear-locks successful test-volume-locks: entry blocked locks=0 granted locks=1
- 以下のコマンドを使用して、inode ロックを消去します。# gluster volume clear-locks VOLNAME path kind granted inode range以下は、inode ロックがあることを示す statedump ファイルの内容です(inodelk)。これらのロックが古いロックであることを確認し、リソースを所有するリソースがないことを確認してください。
[conn.2.bound_xl./rhgs/brick1.active.1] gfid=538a3d4a-01b0-4d03-9dc9-843cd8704d07 nlookup=1 ref=2 ia_type=1 [xlator.features.locks.vol-locks.inode] path=/file1 mandatory=0 inodelk-count=1 lock-dump.domain.domain=vol-replicate-0 inodelk.inodelk[0](ACTIVE)=type=WRITE, whence=0, start=0, len=0, pid = 714787072, owner=00ffff2a3c7f0000, transport=0x20e0670, , granted at Mon Feb 27 16:01:01 2012
たとえば、test-volume のfile1
で inode ロックを削除するには、次のコマンドを実行します。# gluster volume clear-locks test-volume /file1 kind granted inode 0,0-0 Volume clear-locks successful test-volume-locks: inode blocked locks=0 granted locks=1
- 以下のコマンドを使用して、付与された POSIX ロックを削除します。# gluster volume clear-locks VOLNAME path kind granted posix range以下は、POSIX ロックが付与されていることを示す statedump ファイルの内容を示しています。これらのロックが古いロックであることを確認し、リソースを所有するリソースがないことを確認してください。
xlator.features.locks.vol1-locks.inode] path=/file1 mandatory=0 posixlk-count=15 posixlk.posixlk[0](ACTIVE)=type=WRITE, whence=0, start=8, len=1, pid = 23848, owner=d824f04c60c3c73c, transport=0x120b370, , blocked at Mon Feb 27 16:01:01 2012 , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[1](ACTIVE)=type=WRITE, whence=0, start=7, len=1, pid = 1, owner=30404152462d436c-69656e7431, transport=0x11eb4f0, , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[2](BLOCKED)=type=WRITE, whence=0, start=8, len=1, pid = 1, owner=30404152462d436c-69656e7431, transport=0x11eb4f0, , blocked at Mon Feb 27 16:01:01 2012 posixlk.posixlk[3](ACTIVE)=type=WRITE, whence=0, start=6, len=1, pid = 12776, owner=a36bb0aea0258969, transport=0x120a4e0, , granted at Mon Feb 27 16:01:01 2012 ...
たとえば、test-volume のfile1
で付与された POSIX ロックを消去するには、次のコマンドを実行します。# gluster volume clear-locks test-volume /file1 kind granted posix 0,8-1 Volume clear-locks successful test-volume-locks: posix blocked locks=0 granted locks=1 test-volume-locks: posix blocked locks=0 granted locks=1 test-volume-locks: posix blocked locks=0 granted locks=1
- 以下のコマンドを使用して、ブロックされた POSIX ロックを削除します。# gluster volume clear-locks VOLNAME path kind blocked posix range以下は、ブロックされた POSIX ロックがあることを示す statedump ファイルの内容の例です。これらのロックが古いロックであることを確認し、リソースを所有するリソースがないことを確認してください。
[xlator.features.locks.vol1-locks.inode] path=/file1 mandatory=0 posixlk-count=30 posixlk.posixlk[0](ACTIVE)=type=WRITE, whence=0, start=0, len=1, pid = 23848, owner=d824f04c60c3c73c, transport=0x120b370, , blocked at Mon Feb 27 16:01:01 2012 , granted at Mon Feb 27 16:01:01 posixlk.posixlk[1](BLOCKED)=type=WRITE, whence=0, start=0, len=1, pid = 1, owner=30404146522d436c-69656e7432, transport=0x1206980, , blocked at Mon Feb 27 16:01:01 2012 posixlk.posixlk[2](BLOCKED)=type=WRITE, whence=0, start=0, len=1, pid = 1, owner=30404146522d436c-69656e7432, transport=0x1206980, , blocked at Mon Feb 27 16:01:01 2012 posixlk.posixlk[3](BLOCKED)=type=WRITE, whence=0, start=0, len=1, pid = 1, owner=30404146522d436c-69656e7432, transport=0x1206980, , blocked at Mon Feb 27 16:01:01 2012 posixlk.posixlk[4](BLOCKED)=type=WRITE, whence=0, start=0, len=1, pid = 1, owner=30404146522d436c-69656e7432, transport=0x1206980, , blocked at Mon Feb 27 16:01:01 2012 ...
たとえば、test-volume のfile1
でブロックされた POSIX ロックを削除するには、次のコマンドを実行します。# gluster volume clear-locks test-volume /file1 kind blocked posix 0,0-1 Volume clear-locks successful test-volume-locks: posix blocked locks=28 granted locks=0 test-volume-locks: posix blocked locks=1 granted locks=0 No locks cleared.
- 以下のコマンドを実行して、POSIX ロックをすべて消去します。# gluster volume clear-locks VOLNAME path kind all posix range以下は、POSIX ロックがあることを示す statedump ファイルのサンプルコンテンツです。これらのロックが古いロックであることを確認し、リソースを所有するリソースがないことを確認してください。
[xlator.features.locks.vol1-locks.inode] path=/file1 mandatory=0 posixlk-count=11 posixlk.posixlk[0](ACTIVE)=type=WRITE, whence=0, start=8, len=1, pid = 12776, owner=a36bb0aea0258969, transport=0x120a4e0, , blocked at Mon Feb 27 16:01:01 2012 , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[1](ACTIVE)=type=WRITE, whence=0, start=0, len=1, pid = 12776, owner=a36bb0aea0258969, transport=0x120a4e0, , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[2](ACTIVE)=type=WRITE, whence=0, start=7, len=1, pid = 23848, owner=d824f04c60c3c73c, transport=0x120b370, , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[3](ACTIVE)=type=WRITE, whence=0, start=6, len=1, pid = 1, owner=30404152462d436c-69656e7431, transport=0x11eb4f0, , granted at Mon Feb 27 16:01:01 2012 posixlk.posixlk[4](BLOCKED)=type=WRITE, whence=0, start=8, len=1, pid = 23848, owner=d824f04c60c3c73c, transport=0x120b370, , blocked at Mon Feb 27 16:01:01 2012 ...
たとえば、test-volume のfile1
にある POSIX ロックをすべて消去するには、次のコマンドを実行します。# gluster volume clear-locks test-volume /file1 kind all posix 0,0-1 Volume clear-locks successful test-volume-locks: posix blocked locks=1 granted locks=0 No locks cleared. test-volume-locks: posix blocked locks=4 granted locks=1
test-volume で statedump を再度実行して、上記のロックがすべて消去されていることを確認します。