(この正解は、この質問と表面的にほとんど似ていません。質問をして、その質問を参照して自分で答えてください。)
VMに3つの独立したvirtio
ドライブ(3つの独立したブロックデバイスとして表示)が割り当てられ、3つの独立したVG(ボリュームグループ)に割り当てられる仮想ホスティング環境を考えてみましょう。
- オペレーティングシステム
/dev/vda
--vgroot - db--
/dev/vdb
vgdata - var--
/dev/vdc
vgvar
仮想マシンがオンラインになると/dev/vdb
消えます。これは、VMが新しいハイパーバイザーに移動しましたが、特定のボリュームがフリーズしたか、クレイジーなシステム管理者がボリュームを削除して一時的に別のホストにデプロイしたためです。私の場合は本当に幸運だと思います。
ボリュームが復元されると、Linuxカーネル(実際にはすべてではありませんが、少なくともRHEL6で始まる)はディスクが技術的に「オープン」と見なされるため、元のドライブ文字に割り当てるのではなく、新しいドライブ文字に割り当てます。装置: /dev/vdd
。
その後、すべてのLVMコマンド(たとえばvgs
)が次のことを報告します。
/dev/data/db: read failed after 0 of 4096 at 10733158400: Input/output error
/dev/data/db: read failed after 0 of 4096 at 10733215744: Input/output error
/dev/data/db: read failed after 0 of 4096 at 0: Input/output error
/dev/data/db: read failed after 0 of 4096 at 4096: Input/output error
しかし、元のボリュームを検出しpvscan
、まだ古いブロックデバイスを読み取ろうとしています。vgscan
再インストールもできません。議論の余地があるため、再起動は許可されません。何をすべきか?
答え1
iscsi
この質問はディスクに関する議論で回答されました。ここ。私はscsiをまったく使用せずにただvirtio
グーグルしたので、答えを見つけるのに役立ちません。この回答が表示されたら、Guiseppeの回答に必ず投票してください。簡単に言えば、
vgscan ; vgchange <vgname> --refresh