20.2. ブロックデバイスと関連メタデータの削除
実行中のシステムからブロックデバイスを安全に削除するには、システムメモリーのオーバーロードとデータ損失を防ぐために、最初にブロックデバイスからメタデータを削除する必要があります。ファイルシステムから始めて、スタック内の各レイヤーに対処し、ディスクに進みます。これらのアクションにより、システムが不整合な状態になるのを防ぎます。
削除するデバイスの種類に応じて、特定のコマンドを使用します。
-
LVM の場合は、
lvremove、vgremove、pvremoveを実行します。 -
ソフトウェア RAID の場合、
mdadmを実行してアレイを削除します。詳細は、RAID の管理 を参照してください。 - LUKS を使用して暗号化されたブロックデバイスの場合、特定の追加手順があります。次の手順は、LUKS を使用して暗号化されたブロックデバイスでは機能しません。詳細は、LUKS を使用したブロックデバイスの暗号化 を参照してください。
SCSI バスを再びスキャンしたり、ここで説明されている手順に従わずにオペレーティングシステムを変更する別のアクションを実行すると、I/O タイムアウトが原因で遅延が発生したり、デバイスやデータが予期せず削除されたりする可能性があります。
前提条件
- ファイルシステム、論理ボリューム、およびボリュームグループを含む既存のブロックデバイススタックがある。
- 削除するデバイスを他のアプリケーションやサービスが使用していないことを確認した。
- 削除するデバイスからデータをバックアップした。
オプション: マルチパスデバイスを削除する必要があり、そのパスデバイスにアクセスできない場合は、次のコマンドを実行してマルチパスデバイスのキューイングを無効にしておく。
# multipathd disablequeueing map multipath-device無効にすることで、デバイスの I/O が失敗し、デバイスを使用しているアプリケーションがシャットダウンできるようになります。
メタデータを含むデバイスを一度に 1 レイヤーずつ削除することで、ディスクに古い署名が残らないようにします。
手順
ファイルシステムをアンマウントします。
# umount /mnt/mount-pointファイルシステムを削除します。
# wipefs -a /dev/vg0/myvol/etc/fstabファイルにエントリーを追加して、ファイルシステムとマウントポイントの間の永続的な関連付けを作成した場合は、この時点で/etc/fstabを編集してそのエントリーを削除します。削除するデバイスのタイプに応じて、次の手順に進みます。
ファイルシステムを含む論理ボリューム (LV) を削除します。
# lvremove vg0/myvolボリュームグループ (VG) に他の論理ボリュームが残っていない場合は、デバイスを含む VG を安全に削除できます。
# vgremove vg0物理ボリューム (PV) メタデータを PV デバイスから削除します。
# pvremove /dev/sdc1# wipefs -a /dev/sdc1PV が含まれていたパーティションを削除します。
# parted /dev/sdc rm 1デバイスを完全に消去する場合は、パーティションテーブルを削除します。
# wipefs -a /dev/sdcデバイスを物理的に取り外す場合にのみ、次の手順を実行します。
マルチパスデバイスを削除する場合は,次のコマンドを実行します。
デバイスへの全パスを表示します。
# multipath -lこのコマンドの出力は、後のステップで必要になります。
I/O をフラッシュして、マルチパスデバイスを削除します。
# multipath -f multipath-device
デバイスがマルチパスデバイスとして設定されていない場合や、デバイスがマルチパスデバイスとして設定されていて、過去に I/O を個別のパスに渡している場合は、未処理の I/O を、使用されている全デバイスパスにフラッシュします。
# blockdev --flushbufs deviceこの操作は、
umountコマンドまたはvgreduceコマンドで I/O がフラッシュされないデバイスに直接アクセスする場合に重要になります。SCSI デバイスを取り外す場合は、以下のコマンドを実行します。
-
システム上のアプリケーション、スクリプト、またはユーティリティーで、
/dev/sd、/dev/disk/by-path、またはmajor:minor番号など、デバイスのパスベースの名前への参照をすべて削除します。参照を削除することで、今後追加される別のデバイスが現在のデバイスと混同されないようにします。 SCSI サブシステムからデバイスへの各パスを削除します。
# echo 1 > /sys/block/device-name/device/deleteデバイスが以前にマルチパスデバイスとして使用されていた場合、
device-nameは、multipath -lコマンドの出力からの内容に置き換えます。
-
システム上のアプリケーション、スクリプト、またはユーティリティーで、
- 稼働中のシステムから物理デバイスを削除します。このデバイスを削除しても、他のデバイスへの I/O は停止しないことに注意してください。
検証
削除したデバイスが
lsblkコマンドの出力に表示されないことを確認します。出力例を以下に示します。# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 5G 0 disk sr0 11:0 1 1024M 0 rom vda 252:0 0 10G 0 disk |-vda1 252:1 0 1M 0 part |-vda2 252:2 0 100M 0 part /boot/efi `-vda3 252:3 0 9.9G 0 part /