第19章 ストレージデバイスの削除

実行中のシステムからストレージデバイスを安全に削除できるので、システムメモリーのオーバーロードやデータ損失を防ぐことができます。

注記

I/O フラッシュ中にシステムメモリーの読み込みが増加するため、ストレージデバイスを削除する前に、システムのメモリーが十分にあることを確認する必要があります。vmstat 1 100 コマンドを使用して、システムの現在のメモリー負荷を表示します。free コマンドを使用して、システムの空きメモリーを表示することもできます。Red Hat では、以下のシステムでのストレージデバイスの削除は推奨していません。

  • 空きメモリーが合計メモリーの 5 % 未満 (サンプル 100 件の内 10 件以上)。
  • スワップが有効になっている (vmstat コマンドの出力で siso のコラムが 0 以外の値)。

19.1. ストレージデバイスの安全な削除

実行中のシステムからストレージデバイスを安全に削除するには、アプリケーションまたはファイルシステムである上位層から開始して、物理デバイスである下位層に向けて削除を進めます。

ストレージデバイスは複数の方法で使用でき、物理デバイスの上層に別の仮想設定を指定できます。たとえば、仮想デバイスをマルチパスデバイスとして設定するか、RAID の一部にするか、LVM グループの一部としてできます。または、ファイルシステムを介してデバイスにアクセスするか、(「 raw」デバイスとして) デバイスに直接アクセスできます。

上位層から下の層に向けて作業を進める場合に、削除するデバイスが使用されていないこと、保留中のすべての I/O がフラッシュされていること、オペレーティングシステムがストレージデバイスを参照していないことを確認する必要があります。

19.2. ブロックデバイスの削除

実行中のシステムからブロックデバイスを安全に削除することで、システムメモリーのオーバーロードやデータ損失を防ぐことができます。

警告

SCSI バスを再びスキャンしたり、ここで説明されている手順に従わずにオペレーティングシステムの状態を変更する別のアクションを実行すると、I/O タイムアウトが原因で遅延が発生したり、デバイスやデータが予期せず削除されたりする可能性があります。

前提条件

  • マルチパスデバイスを削除してそのパスデバイスにアクセスできない場合にはマルチパスデバイスのキューを無効にしておく。

    # multipathd disablequeueing map <multipath-device>

    無効にすることで、デバイスの I/O が失敗し、デバイスを使用しているアプリケーションがシャットダウンできるようになります。

手順

  1. 他のアプリケーションやサービスで、削除予定のデバイスが使用されていないことを確認します。
  2. 削除するデバイスからデータのバックアップを作成します。
  3. umount コマンドを使用して、デバイスにマウントされているファイルシステムをすべてアンマウントします。
  4. md RAID アレイまたは、デバイスが所属する LVM ボリュームからデバイスを削除します。たとえば、デバイスが LVM グループのメンバーで、マルチパスデバイスの場合は、次のコマンドを実行します。

    1. データを別のデバイスに移動します。

      # pvmove -b /dev/mapper/<from-multipath-device> /dev/mapper/<to-multipath-device>
    2. ボリュームグループからデバイスを削除します。

      # vgreduce <volume-group> /dev/mapper/<from-multipath-device>
    3. (必要に応じて) 物理デバイスから LVM メタデータを削除します。

      # pvremove /dev/mapper/<from-multipath-device>
  5. マルチパスデバイスを削除する場合は、以下を実行します。

    1. 以下のコマンドを使用して、デバイスへのパスをすべて表示します。

      # multipath -l

      このコマンドの出力は、後のステップで必要になります。

    2. I/O をフラッシュして、マルチパスデバイスを削除します。

      # multipath -f <multipath-device>
  6. デバイスがマルチパスデバイスとして設定されていない場合や、デバイスがマルチパスデバイスとして設定されていて、過去に I/O を個別のパスに渡している場合は、未処理の I/O を、使用されている全デバイスパスにフラッシュします。

    # blockdev --flushbufs <device>

    この操作は、umount コマンドまたは vgreduce コマンドで I/O がフラッシュされないデバイスに直接アクセスする場合に重要になります。

  7. SCSI デバイスを削除する場合は、以下の手順を実行します。

    1. デバイスのパスベースの名前への参照 (例: システム上のユーティリティー、スクリプト、アプリケーションの /dev/sd, /dev/disk/by-path または major:minor 数) を削除します。参照を削除することで、今後追加される別のデバイスが現在のデバイスと混同されないようにします。
    2. SCSI サブシステムからデバイスへの各パスを削除します。

      # echo 1 > /sys/block/<device-name>/device/delete

      デバイスが以前にマルチパスデバイスとして使用されていた場合には <device-name> は、手順 5 の multipath -l コマンドの出力からの内容に置き換えます。

  8. 実行中のシステムから物理デバイスを削除します。このデバイスを削除しても、他のデバイスへの I/O は停止しないことに注意してください。

関連情報

  • multipathpvmovevgreduceblockdev および umount の man ページ

このページには機械翻訳が使用されている場合があります (詳細はこちら)。