7.2. ブロックデバイスと関連メタデータの削除
実行中のシステムからブロックデバイスを安全に削除し、メモリーの過負荷やデータの損失を回避するには、まずそのメタデータを削除します。システムの安定性と整合性を維持するために、ファイルシステムからディスクまで、各レイヤーを 1 つずつ処理してください。
前提条件
- ファイルシステム、論理ボリューム、およびボリュームグループを含む既存のブロックデバイススタックがある。
- 削除するデバイスを他のアプリケーションやサービスが使用していないことを確認した。
- 削除するデバイスからデータをバックアップした。
オプション: マルチパスデバイスを削除してそのパスデバイスにアクセスできない場合は、マルチパスデバイスのキューを無効にしておく。以下のコマンドを実行します。
# multipathd disablequeueing map multipath-device無効にすることで、デバイスの I/O が失敗し、デバイスを使用しているアプリケーションがシャットダウンできるようになります。
メタデータを含むデバイスを一度に 1 レイヤーずつ削除することで、ディスクに古い署名が残らないようにします。
削除するデバイスの種類に応じて、特定のコマンドを使用します。
-
LVM の場合は、
lvremove、vgremove、pvremoveを実行します。 -
ソフトウェア Redundant Array of Independent Disks (RAID) の場合は、
mdadmを実行してアレイを削除します。詳細は、RAID の管理 を参照してください。 - Linux Unified Key Setup (LUKS) を使用して暗号化されたブロックデバイスの場合、特定の手順が追加で必要です。次の手順は、LUKS を使用して暗号化されたブロックデバイスでは機能しません。詳細は、LUKS を使用したブロックデバイスの暗号化 を参照してください。
Small Computer System Interface (SCSI) バスを再スキャンしたり、オペレーティングシステムの状態を変更するその他の操作を実行したりすると、遅延が発生する可能性があります。そのような遅延は、I/O タイムアウト、予期せぬデバイスの取り外し、またはデータ損失によって発生する可能性があります。
手順
ファイルシステムをアンマウントします。
# 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ここでは、デバイスが以前にマルチパスとして使用されていた場合、
multipath -lコマンドの出力からdevice-nameが取得されます。
-
システム上のアプリケーション、スクリプト、ユーティリティーから、デバイスのパス名への参照をすべて削除します。これには、
- 稼働中のシステムから物理デバイスを削除します。このデバイスを削除しても、他のデバイスへの I/O は停止しないことに注意してください。
検証
削除したデバイスが
lsblkコマンドの出力に表示されないことを確認します。出力例を以下に示します。# lsblkNAME 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 /