OpenVZ · 1 min read · Jan 04, 2026

OpenVZ VM間でリソースを均等に分割する方法 - vzsplit

OpenVZ VM間でリソースを均等に分割する方法 - vzsplit

Version 1.0
Author: Falko Timme

この短いガイドでは、vzsplitを使用してOpenVZホストのリソースを複数の仮想マシンに均等に分割する方法を示します。vzsplitは、特定のシステムリソース制御パラメータのセットを持つサンプルコンテナ構成ファイルを生成し、それを仮想マシンに適用できます。

私はこれがあなたにとって機能するという保証を出しません!

vzsplitの使用

次を見てください

man vzsplit

その使用法について詳しく学ぶことができます。

さて、OpenVZホストで5つの仮想マシンを実行したいと仮定しましょう。次のようにvzsplitを呼び出します:

vzsplit -n 5 -f max-limits

-n 5は仮想マシンの数を指定します。

server1:~# vzsplit -n 5 -f max-limits  
最適なスワップスペースのサイズは2022 Mbで、RAMサイズの2倍です
WARNING: /var/lib/vz/private/を保持するパーティションの推奨最小サイズは20Gbです!  
Config /etc/vz/conf/ve-max-limits.conf-sampleが作成されました  
server1:~#

ご覧のとおり、これは5つの仮想マシンそれぞれの設定の最大値を含むファイル/etc/vz/conf/ve-max-limits.conf-sampleを作成しました。そのファイルを見てみましょう:

vi /etc/vz/conf/ve-max-limits.conf-sample

| # vzsplitによって生成された5つのコンテナ用の構成ファイル # HN上の物理メモリの合計量1011 Mb # 低メモリ883 Mb、スワップサイズ2047 Mb、最大スレッド8000 # リソースコミットレベル0: # 無料リソース分配。任意のパラメータを増やすことができます # 主なパラメータ NUMPROC="1600:1600" AVNUMPROC="452:452" NUMTCPSOCK="1600:1600" NUMOTHERSOCK="1600:1600" VMGUARPAGES="135985:2147483647" # 二次パラメータ KMEMSIZE="37052743:40758017" TCPSNDBUF="5797314:12350914" TCPRCVBUF="5797314:12350914" OTHERSOCKBUF="2898657:9452257" DGRAMRCVBUF="2898657:2898657" OOMGUARPAGES="135985:2147483647" PRIVVMPAGES="155342:170876" # 補助パラメータ LOCKEDPAGES="1809:1809" SHMPAGES="15534:15534" PHYSPAGES="0:2147483647" NUMFILE="14464:14464" NUMFLOCK="1000:1100" NUMPTY="160:160" NUMSIGINFO="1024:1024" DCACHESIZE="8088605:8331264" NUMIPTENT="200:200" DISKSPACE="117286:129015" DISKINODES="110065:121072" CPUUNITS="8587" |

ご覧のとおり、このファイルにはホスト名、IPアドレス、ネームサーバーなどのVM固有の設定は含まれていません。これは、これらの設定を上書きしたくないからです。

さて、これらの設定をID 101のVMに適用したいとしましょう。次のようにします:

vzctl set 101 --applyconfig max-limits --save

その後、VM 101を起動/再起動できます:

vzctl start 101

次のようなメッセージが表示されるかもしれません:

server1:~# vzctl start 101  
コンテナを起動中...  
vzquota : (警告) block_hard_limit [129115] < block_current_usage [139856]  
コンテナがマウントされました  
IPアドレスを追加しています:192.168.0.101  
bash: line 402: printf: 書き込みエラー: ディスククォータを超えました  
bash: line 416: printf: 書き込みエラー: ディスククォータを超えました  
bash: line 421: echo: 書き込みエラー: ディスククォータを超えました  
bash: line 447: printf: 書き込みエラー: ディスククォータを超えました  
CPUユニットを設定中: 8587  
meminfoを構成中: 155342  
ホスト名を設定中: test.example.com  
awk: close failed on file /dev/stdout (ディスククォータを超えました)  
ERROR: /etc/hostsのファイルを変更できません  
vzquota : (警告) block_hard_limit [129015] < block_current_usage [139856]  
コンテナの起動が進行中...  
server1:~#

何らかの理由でvzsplitが間違ったディスクサイズを計算しました。次のように修正できます(これはソフトリミット10GB、ハードリミット11GBのディスクサイズを設定します - 必要に応じて調整してください):

vzctl set 101 --diskspace "10000000:11000000" --save

その後、VMを再起動します:

vzctl restart 101

次のようにしてVMの新しい設定を確認できます:

vzctl exec 101 cat /proc/user_beancounters
server1:/etc/vz/conf# vzctl exec 101 cat /proc/user_beancounters  
Version: 2.5  
       uid  resource           held    maxheld    barrier      limit    failcnt  
      101:  kmemsize         340278     580635   37052743   40758017          0  
            lockedpages           0          0       1809       1809          0  
            privvmpages         796       1655     155342     170876          0  
            shmpages              0          0      15534      15534          0  
            dummy                 0          0          0          0          0  
            numproc               5          9       1600       1600          0  
            physpages           486       1060          0 2147483647          0  
            vmguarpages           0          0     135985 2147483647          0  
            oomguarpages        486       1060     135985 2147483647          0  
            numtcpsock            1          2       1600       1600          0  
            numflock              1          2       1000       1100          0  
            numpty                0          1        160        160          0  
            numsiginfo            0          2       1024       1024          0  
            tcpsndbuf          8928          0    5797314   12350914          0  
            tcprcvbuf         16384          0    5797314   12350914          0  
            othersockbuf       2232       3624    2898657    9452257          0  
            dgramrcvbuf           0          0    2898657    2898657          0  
            numothersock          1          3       1600       1600          0  
            dcachesize            0          0    8088605    8331264          0  
            numfile             129        193      14464      14464          0  
            dummy                 0          0          0          0          0  
            dummy                 0          0          0          0          0  
            dummy                 0          0          0          0          0  
            numiptent            10         10        200        200          0  
server1:/etc/vz/conf#

failcnt列は非常に重要です。ここにはゼロのみが含まれているべきです。そうでない場合、VMが現在割り当てられているリソースよりも多くのリソースを必要としていることを意味します。

VMに割り当てられたメモリについて知るには、次を実行します。

vzctl exec 101 free
server1:~# vzctl exec 101 free  
             total       used       free     shared    buffers     cached  
Mem:        621368       3268     618100          0          0          0  
-/+ buffers/cache:       3268     618100  
Swap:            0          0          0  
server1:~#

リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。