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