第29章 ストレージデバイスの削除
ストレージデバイスへのアクセスを削除する場合は、最初にデバイスからのデータのバックアップを作成することが推奨されます。その後、I/O をフラッシュして、デバイスへのオペレーティングシステム参照をすべて削除します(以下の説明にあるように)。デバイスがマルチパスを使用する場合には、マルチパス「pseudo device」(「WWID」)とデバイスへのパスを表す各識別子に対してこれを実施します。マルチパスデバイスへのパスを削除するだけで、その他のパスが残る場合は、31章ストレージデバイスまたはパスの追加 の説明に従って手順が簡単です。
I/O フラッシュが負荷に追加されるため、システムがメモリー不足の状態になるとストレージデバイスの削除は推奨されません。メモリープレッシャーのレベルを確認するには、vmstat 1 100 コマンドを実行します。以下の場合はデバイスの削除は推奨されません。
- 空きメモリーの合計は、100 あたり 10 個以上のサンプルで合計メモリーの 5% 未満です(コマンド free を使用すると合計メモリーの合計が表示されます)。
- swapping はアクティブです( vmstat 出力の
si
およびso
列以外)。
デバイスへのアクセスを削除する一般的な手順は次のとおりです。
手順29.1 デバイスの完全削除
- 必要に応じて、デバイスおよびバックアップデバイスデータのすべてのユーザーを閉じます。
- umount を使用して、デバイスをマウントしたファイルシステムのマウントを解除します。
- md ボリュームおよび LVM ボリュームを使用して、デバイスを削除します。デバイスが LVM ボリュームグループのメンバーである場合は、pvmove コマンドを使用してデバイスからデータを移動する必要がある場合は、vgreduce コマンドを使用して物理ボリュームを削除 (オプションで pvremove)、ディスクから LVM メタデータを削除する必要がある場合があります。
- デバイスがマルチパス機能を使用する場合は、multipath -l を実行して、デバイスへのパスをすべて書き留めておきます。その後、multipath -f デバイスを使用してマルチパスデバイスを削除します。
- blockdev --flushbufs デバイス を実行し、未処理の I/O をデバイスのすべてのパスにフラッシュします。これは特に、umount または vgreduce 操作がない raw デバイスに特に重要になります。これにより、I/O フラッシュが発生します。
- システムのアプリケーション、スクリプト、ユーティリティーの
/dev/sd、/dev
/disk/by-path
、major:minor 番号などのデバイスのパスベースの名前への参照を削除します。これは、今後追加される異なるデバイスが現在のデバイスには間違いにならないようにするために重要です。 - 最後に、SCSI サブシステムからデバイスへの各パスを削除します。これを実行するには、コマンド echo 1 > /sys/block/device-name/device/delete コマンドを使用します。たとえば
、
device -name がde になります。この操作に関するもう 1 つのバリエーションは、1 > /sys/class/scsi_device/h:c:t:l/device/delete です。h は HBA 番号で、c は HBA のチャンネル、c は SCSI ターゲット ID、l が LUN です。注記このコマンドの古い形式である echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi は非推奨となりました。
lsscsi 、 scsi_id、multipath -l、および ls -l /dev/disk/by-* などのさまざまなコマンドから、デバイス名、HBA 番号、HBA チャンネル、SCSI ターゲット ID および LUN を確認できます。
手順29.1「デバイスの完全削除」 を実行した後は、稼働中のシステムからデバイスを物理的に削除できます。他のデバイスへの I/O を停止する必要はありません。
デバイスの物理削除などのその他の手順の後に、( 34章ストレージ Interconnect のスキャンで説明されているように)SCSI バスの再スキャンを行い、オペレーティングシステムの状態が変更を反映させるように更新することは推奨されません。これにより、I/O タイムアウトが原因で遅延が発生し、デバイスが予想外に削除される可能性があります。相互接続の再スキャンを実行する必要がある場合は、34章ストレージ Interconnect のスキャン の説明に従って I/O が一時停止している間に実行する必要があります。