37.4. オンライン論理ユニットの読み取りおよび書き込み状態の変更
特定のストレージデバイスは、デバイスの状態を Read/Write(R/W)から Read-Only(RO)に変更し、RO から R/W に変更する機能を提供します。これは通常、ストレージデバイス上の管理インターフェースを使用して行われます。オペレーティングシステムは、変更時にデバイスの状態ビューを自動的に更新しません。本章の手順に従って、オペレーティングシステムが変更を認識できるようにします。
以下のコマンドを実行し、XYZ を必要なデバイス設計ator に置き換え、オペレーティングシステムの(R/W 状態)の現在のビューを特定します。
# blockdev --getro /dev/sdXYZ
以下のコマンドは、Red Hat Enterprise Linux 6 でも利用できます。
# cat /sys/block/sdXYZ/ro 1 = read-only 0 = read-write
マルチパスを使用する場合は、multipath -ll コマンドの出力の 2 行目の ro または rw フィールドを参照してください。以下に例を示します。
36001438005deb4710000500000640000 dm-8 GZ,GZ500 [size=20G][features=0][hwhandler=0][ro] \_ round-robin 0 [prio=200][active] \_ 6:0:4:1 sdax 67:16 [active][ready] \_ 6:0:5:1 sday 67:32 [active][ready] \_ round-robin 0 [prio=40][enabled] \_ 6:0:6:1 sdaz 67:48 [active][ready] \_ 6:0:7:1 sdba 67:64 [active][ready]
R/W の状態を変更するには、以下の手順に従います。
手順37.2 R/W 状態の変更
- デバイスを RO から R/W に移動するには、手順 2 を参照してください。デバイスを R/W から RO に移動するには、それ以上の書き込みが行われないようにします。これは、アプリケーションを停止するか、適切なアプリケーション固有のアクションを使用します。以下のコマンドを使用して、未処理の書き込み I/O がすべて完了していることを確認します。
# blockdev --flushbufs /dev/device
device を希望のデザインレーターに置き換えます。デバイスマッパーマルチパスの場合、これはdev/mapper
のデバイスのエントリーです。たとえば、/dev/mapper/mpath3 のようになります
。 - ストレージデバイスの管理インターフェースを使用して、論理ユニットの状態を R/W から RO または RO から R/W に変更します。その手順は、アレイごとに異なります。詳細は、該当するストレージアレイベンダーのドキュメントを参照してください。
- デバイスの再スキャンを実行して、デバイスの R/W 状態のオペレーティングシステムのビューを更新します。デバイスマッパーのマルチパスを使用する場合には、そのデバイスマップを再読み込みするようにマルチパスを発行する前に、デバイスへの各パスに対してこの再スキャンを実行します。このプロセスについては、「論理ユニットの再スキャン」 で詳しく説明します。
37.4.1. 論理ユニットの再スキャン
「オンライン論理ユニットの読み取りおよび書き込み状態の変更」 で説明しているように、オンラインの論理ユニットの Read/Write 状態の変更後に、論理ユニットを再スキャンして、以下のコマンドでシステムが更新された状態を検出するようにします。
# echo 1 > /sys/block/sdX/device/rescan
マルチパスを使用するシステムで論理ユニットを再スキャンするには、マルチパス化された論理ユニットのパスを表す各 sd デバイスに対して、上記のコマンドを実行します。たとえば、sd1、sd2、およびその他の sd デバイスすべてでコマンドを実行します。マルチパスユニットのパスであるデバイスを確認するには、multipath -ll を使用して、変更する論理ユニットに一致するエントリーを検索します。
例37.1 multipath -ll コマンドの使用
たとえば、上記の multipath -ll は、WWID 36001438005deb4710000500000640000 の LUN のパスを示しています。この場合は、以下を入力します。
# echo 1 > /sys/block/sdax/device/rescan # echo 1 > /sys/block/sday/device/rescan # echo 1 > /sys/block/sdaz/device/rescan # echo 1 > /sys/block/sdba/device/rescan