Menu Close

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

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

警告

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

前提条件

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

    # multipathd disablequeueing map multipath-device

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

  • 他のアプリケーションやサービスで、削除予定のデバイスが使用されていないことを確認します。
  • 削除するデバイスのデータを確実にバックアップしてください。

手順

  1. umount コマンドを使用して、デバイスにマウントされているファイルシステムをすべてアンマウントします。
  2. 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
    • マルチパスデバイスを削除する場合は,次のコマンドを実行します。

      1. デバイスへの全パスを表示します。

        # multipath -l

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

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

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

      # blockdev --flushbufs device

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

    • SCSI デバイスを取り外す場合は、以下のコマンドを実行します。

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

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

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

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

関連情報

  • multipath(8)pvmove(8)vgreduce(8)blockdev(8)、および umount(8) man ページ。