私の目標は、さまざまな管理者 (別々のインストール) がそれぞれの管理仮想マシンで非常に異なる量のディスク領域を使用する場合でも、1 つの管理 VM LV (VolA) とユーザー LV (VolU1、VolU2、VolU3 ...) に対して安全マージンを予約できるほど柔軟な LVM シン プロビジョニングのデフォルト構成です。
たとえば、ある管理者は System1 の VolA で 4GB を使用するかもしれませんが、別の管理者は System2 の VolA で 50GB を使用するかもしれません。つまり、50GB の固定サイズのボリュームは最初の管理者には受け入れられません (逆も同様)。そのため、柔軟性を確保するには、VolA を他の「ユーザー」VM ボリュームとともにシン プールに配置する必要があります。これらのシステムのインストールを手動で調整することはできません。
その他の要件:
- 管理VMはストレージホストであり、シンプールから実行されます。
- ユーザーVMは同じプールを占有する
- オーバープロビジョニング。すべての LV 仮想サイズ = 物理ディスク サイズ。
この問題は、ユーザーの経験不足、バグ、またはユーザーVMのDoS攻撃によって発生します。残りの空きスペースの割り当てユーザー ボリューム (VolU1、VolU2 など) に空き領域がなくなり、VolA に空き領域がなくなり、管理 VM が正常に起動または機能しなくなります。
解決策/フェイルセーフは、可能な限り自動かつ受動的である必要があります。理想的な解決策は、すべてのユーザー LV に LVM プロパティを設定し、 の場合にのみスペースを割り当てるようにすることですpoolFree < N
。一方、VolA にはそのような制限はありません。しかし、Linux LVM でそのような機能を見つけることができず、提案が必要です。
調査の結果、dmeventd
しきい値に達したときにコマンド (「すべての VM を一時停止」など) を実行する設定を使用するという解決策があるようです。dmeventd
オンラインで見つけた の新しいマニュアル ページには、lvm.conf の設定でこれが可能であると書かれていますdmeventd/thin_command
。この機能は 2017 年 5 月に追加されたようなので、バックポートを見つける必要があります。
別のオプションとしては、rsyslog.conf に次のようなルールを追加することが考えられます。
:msg, contains, "some dmeventd message" ^my_pause_vm_script
答え1
ユーザーが管理ホストと同じシン プールを過剰に割り当てるのを防ぐ場合は、この割り当てに対して別のアプローチを取ることをお勧めします。
管理ワークロードを別のシン プールに分離できます。また、割り当てが過剰になっている場合は、一時的な割り当て過剰に対処するために、より柔軟に割り当て可能なバックアップ ストレージをプールに提供することが一般的には良い方法です。これを行う良い簡単な方法は、プールの安価な「緊急」PV として、いくつかの大きくて低速な LUN を予約することです。
LVM は独自の構成を使用してこの緊急拡張を実行できることは知っていますが、私は自分の邪魔にならないハムサンドイッチでこれを書いているので、後でそのドキュメントを見つける必要があります。