頻繁に私は後に気づきます
$ Sudo lvcreate vg -L 10G
直後に続く
$ Sudo lvremove vg/<created volume>
エラーメッセージが表示される
開いている論理ボリューム「...」を削除できません
ながら
$ Sudo lvs
そのボリュームのために私を示しています
lvol2 vg -wi-a- 10,00g
-
フラグのa
の後ろ。ボリュームが本当に開いている場合は、o
が必要です。しばらくすると、削除が機能します。
なぜそうなのですか?どうすればすぐに機能させることができますか?
編集:以下は有用なものにつながりませんでした:
$ Sudo rm /dev/mapper/vg-lvol24
$ Sudo lvremove /dev/vg/lvol24
Can't remove open logical volume "lvol24"
$ Sudo lvs vg/lvol24
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lvol24 vg -wi-a- 10,00g
$ Sudo lvremove /dev/vg/lvol24
Can't remove open logical volume "lvol24"
Lvmとudevの連携に問題があるようです。
lvremove
では、使用可能なすべてのブロックデバイスに対してudev
変更イベントがあります。それらの処理は除去プロセスを妨害するようであり、除去は失敗します。
解決策は、削除するLVをlvchange -an <given LV>
で非アクティブ化することです。この場合、関連付けられているdm
デバイスが削除されるため、「削除」イベントはほんの少ししか作成されません。
現在無効になっているLVをlvremove
した場合、まだ多くのudev変更イベントがありますが、削除されるLVには影響しません(それがdmに存在しないため)。問題なく。
したがって、NFS、古くなったbashプロセス、およびudevの誤動作、つまりブロックデバイスで開かれたパーティション以外にも、別の可能性があります。
kpartx -d /dev/vg1/lv1
次に、lvdisplay
の出力で#openが0に低下することを確認できます。
/ dev/mapper /からシンボリックリンクを削除して、そのLVへのすべてのマッピングを削除すると、削除できます。
何かがまだディスクを使用しているかどうかを確認するためのいくつかの便利なコマンド:
cat /proc/mounts
dmsetup ls --tree
lsof <device>
OpenStackのインストールで同様の問題が発生しました。 lsof
は何も表示しませんでしたが、dmsetup ls --tree
は依存関係/ターゲットを表示しました。 lvchange -an <given LV>
も機能しませんでした。 /dev/dm-*
デバイスへのシンボリックリンクも削除されませんでした
私の場合、OpenStackサービスをシャットダウンしたところ、扱いにくいボリュームをlvremove
できました。
これは実験的な設定であり、他の問題を回避するために強制的に再起動したために、最初に問題が発生した可能性があります。
このエラーも受け取りました。幸いなことに、私は最初の構築段階にあり、失うデータはありませんでした。論理ボリュームがこの30分以内に作成されたばかりであることに注意してください。
論理ボリュームの削除を許可するために、以下を実行しました。
最近これに遭遇しました。デバイスXYZがXYZにマップされたluksボリュームであること、および基礎となるlvmが実際にluksマップによって使用されていたことを完全に忘れていました。