25.4. ストレージデバイスの削除

ストレージデバイス自体へのアクセスを削除する前に、デバイスのデータのバックアップを取ることをお勧めします。次に、I/O をフラッシュしてオペレーティングシステムのデバイスへのすべての参照を削除します (以下を参照)。デバイスでマルチパス機能を使用している場合は、マルチパスの「擬似デバイス」 (「WWID」) とそのデバイスへのパスを表す各識別子に対してこれを行います。マルチパスデバイスへの 1 つのパスだけを削除してその他のパスをそのまま残しておく場合は 「ストレージデバイスまたはパスの追加」 に記載されているように、手順はより単純になります。
システムのメモリーが不足している際に I/O をフラッシュするとさらに負荷がかかるため、メモリーが不足している状態でのストレージデバイスの削除は推奨しません。メモリーレベルを判別するには、vmstat 1 100 コマンドを実行します。以下の場合にはデバイスの削除は推奨されません。
  • 100 中 10 を超えるサンプルで空きメモリーがメモリー合計の 5% を下回っている場合 (free を使用してメモリー合計を表示することもできます)
  • swap 機能がアクティブになっている場合 (vmstat 出力で siso の欄がゼロ以外の値になっている場合はアクティブです)
デバイスへのすべてのアクセスを削除する一般的な手順は以下になります。

手順25.1 デバイスを完全に削除する

  1. デバイスのユーザーをすべて終了させ、必要に応じてデータのバックアップを取ります。
  2. umount を使ってデバイスにマウントしているファイルシステムをすべてアンマウントします。
  3. デバイスを使用している md および LVM ボリュームからそのデバイスを削除します。デバイスが LVM ボリュームグループのメンバーである場合、pvmove コマンドを使ってデータをデバイスから移動させる必要がある場合があります。次に vgreduce コマンドを使って物理ボリュームを削除し、(オプションで) pvremove コマンドを使ってディスクから LVM のメタデータを削除します。
  4. デバイスがマルチパス機能を使用している場合、multipath -l を実行してデバイスへのすべてのパスをメモに取ります。次に multipath -f device を使ってマルチパスのデバイスを削除します。
  5. blockdev --flushbufs device を実行して、残りの I/O をデバイスへのすべてのパスにフラッシュします。これはとくに umountvgreduce オペレーションが I/O フラッシュを行わないローデバイスに重要です。
  6. /dev/sd/dev/disk/by-path、または major:minor 番号など、システム上のアプリケーション、スクリプトおよびユーティリティーのデバイスのパスに基づく名前への参照をすべて削除します。これは将来別のデバイスを追加する場合に、それらのデバイスが現在のデバイスと間違われないようにするのに重要です。
  7. 最後に SCSI サブシステムからデバイスへの各パスを削除します。これを実行するには、echo 1 > /sys/block/device-name/device/delete コマンドを使用します。ここで device-namesde などになります。
    echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete は上記の変形です。h は HBA 番号、c は HBA 上のチャネル、t は SCSI のターゲット ID、l は LUN になります。

    注記

    これらのコマンドの古い形式である echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi は廃止予定になっています。
デバイスの device-name、HBA 番号、HBA チャネル、SCSI のターゲット ID、LUN などは、lsscsiscsi_idmultipath -lls -l /dev/disk/by-* など各種のコマンドで確認することができます。
手順25.1「デバイスを完全に削除する」 の実行後は、実行中のシステムからデバイスを物理的にかつ安全に取り除くことができるようになります。実行中に他のデバイスに対する I/O を停止する必要はありません。
物理的なデバイスの除去とその後に SCSI バスの再スキャン (「ストレージの相互接続をスキャンする」) を実行して物理的なペレーティングシステムの状態を更新し、変更を反映するなどの他の手順は推奨されません。これにより、I/O タイムアウトによる遅延が生じ、デバイスが予期せず削除される可能性があります。相互接続の再スキャンを行う必要がある場合には I/O を一時停止してから行ってください (「ストレージの相互接続をスキャンする」 を参照)。