OpenVZ · 2 min read · Jan 04, 2026

OpenVZ VM 간 리소스 균등 분배하기: vzsplit

OpenVZ VM 간 리소스 균등 분배하기: vzsplit

버전 1.0
저자: 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 크기의 두 배입니다.
WARNING: /var/lib/vz/private/를 보유하는 파티션의 최소 권장 크기는 20Gb입니다!  
구성 파일 /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개의 컨테이너를 위한 구성 파일 # 총 물리적 메모리 1011 Mb를 가진 HN에서 # 낮은 메모리 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: write error: Disk quota exceeded  
bash: line 416: printf: write error: Disk quota exceeded  
bash: line 421: echo: write error: Disk quota exceeded  
bash: line 447: printf: write error: Disk quota exceeded  
CPU 단위 설정: 8587  
메모리 정보 구성: 155342  
호스트 이름 설정: test.example.com  
awk: close failed on file /dev/stdout (Disk quota exceeded)  
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  
버전: 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 열은 매우 중요합니다. 이 열에는 0만 포함되어야 합니다. 그렇지 않으면 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

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.