VM 메모리
VM을 생성할 때 고정된 양의 메모리가 VM에 할당됩니다. XenServer® 환경에서 물리적 메모리 활용도를 높이기 위해 동적 메모리 제어(DMC)를 사용할 수 있습니다. DMC는 VM 간에 메모리를 동적으로 재할당할 수 있도록 하는 메모리 관리 기능입니다.
XenCenter는 메모리 탭에서 메모리 사용량에 대한 그래픽 디스플레이를 제공합니다. 자세한 내용은 XenCenter 설명서를 참조하십시오.
동적 메모리 제어(DMC)는 다음과 같은 이점을 제공합니다.
-
VM을 다시 시작하지 않고 메모리를 추가하거나 삭제할 수 있어 사용자에게 원활한 경험을 제공합니다.
-
호스트가 가득 찼을 때 DMC를 사용하면 이러한 호스트에서 더 많은 VM을 시작할 수 있으며, 실행 중인 VM에 할당된 메모리 양을 비례적으로 줄입니다.
동적 메모리 제어(DMC)란 무엇입니까?
XenServer DMC는 실행 중인 VM의 메모리를 자동으로 조정하여 각 VM에 할당된 메모리 양을 지정된 최소 및 최대 메모리 값 사이에 유지하고, 성능을 보장하며, 호스트당 VM 밀도를 높일 수 있도록 작동합니다.
DMC가 없으면 호스트가 가득 찼을 때 추가 VM을 시작하면 “메모리 부족” 오류가 발생하여 실패합니다. 기존 VM 메모리 할당을 줄이고 더 많은 VM을 위한 공간을 확보하려면 각 VM의 메모리 할당을 편집한 다음 VM을 다시 시작해야 합니다. DMC를 사용하는 경우 XenServer는 정의된 메모리 범위 내에서 실행 중인 VM의 현재 메모리 할당을 자동으로 줄여 메모리를 회수하려고 시도합니다. XenServer는 호스트가 가득 찼을 때도 메모리를 회수하려고 시도합니다.
참고:
동적 메모리 제어는 가상 GPU가 있는 VM에서는 지원되지 않습니다.
동적 범위의 개념
각 VM에 대해 관리자는 동적 메모리 범위를 설정할 수 있습니다. 동적 메모리 범위는 다시 시작할 필요 없이 VM에서 메모리를 추가/제거할 수 있는 범위입니다. VM이 실행 중일 때 관리자는 동적 범위를 조정할 수 있습니다. XenServer는 항상 VM에 할당된 메모리 양을 동적 범위 내에 유지하도록 보장합니다. 따라서 VM이 실행 중일 때 이를 조정하면 XenServer가 VM에 할당된 메모리 양을 조정할 수 있습니다. 가장 극단적인 경우는 관리자가 동적 최소/최대값을 동일하게 설정하여 XenServer가 이 양의 메모리가 VM에 할당되도록 강제하는 경우입니다. “가득 찬” 호스트에서 새 VM을 시작해야 하는 경우, 실행 중인 VM의 메모리가 ‘압축’되어 새 VM을 시작합니다. 필요한 추가 메모리는 미리 정의된 동적 범위 내에서 기존 실행 중인 VM을 비례적으로 압축하여 얻습니다.
DMC를 사용하면 동적 최소 및 최대 메모리 수준을 구성하여 VM이 작동하는 동적 메모리 범위(DMR)를 생성할 수 있습니다.
-
동적 최소 메모리: VM에 할당하는 하한 메모리 제한입니다.
-
동적 상한: VM에 할당하는 상위 메모리 제한입니다.
예를 들어, 동적 최소 메모리가 512MB로 설정되고 동적 최대 메모리가 1,024MB로 설정된 경우, VM은 512~1024MB의 동적 메모리 범위(DMR)를 가지며 이 범위 내에서 작동합니다. XenServer는 DMC를 사용할 때 각 VM에 지정된 DMR 내에서 항상 메모리를 할당하도록 보장합니다.
정적 범위의 개념
XenServer가 지원하는 많은 운영 체제는 메모리를 동적으로 추가하거나 삭제하는 개념을 완전히 ‘이해’하지 못합니다. 결과적으로 XenServer는 VM이 다시 시작될 때 소비하도록 요청받는 최대 메모리 양을 선언해야 합니다. 최대 메모리 양을 선언하면 게스트 운영 체제가 페이지 테이블 및 기타 메모리 관리 구조의 크기를 적절하게 조정할 수 있습니다. 이는 XenServer 내에서 정적 메모리 범위의 개념을 도입합니다. 정적 메모리 범위는 VM이 실행 중일 때는 조정할 수 없습니다. 특정 부팅의 경우 동적 범위는 항상 이 정적 범위 내에 포함되도록 제한됩니다. 정적 최소값(정적 범위의 하한)은 관리자를 보호하며 OS가 XenServer와 함께 실행될 수 있는 가장 낮은 메모리 양으로 설정됩니다.
참고:
정적 최소 수준은 운영 체제별로 지원되는 수준으로 설정되므로 정적 최소 수준을 변경하지 않는 것이 좋습니다. 자세한 내용은 메모리 제약 조건 표를 참조하십시오.
동적 최대값보다 높은 정적 최대 수준을 설정하면 나중에 VM을 다시 시작하지 않고도 VM에 더 많은 메모리를 할당할 수 있습니다.
DMC 동작
자동 VM 압축
-
DMC가 활성화되지 않은 경우, 호스트가 가득 차면 새 VM 시작이 ‘메모리 부족’ 오류로 실패합니다.
-
DMC가 활성화된 경우, 호스트가 가득 차더라도 XenServer는 정의된 동적 범위 내에서 실행 중인 VM의 메모리 할당을 줄여 메모리를 회수하려고 시도합니다. 이러한 방식으로 실행 중인 VM은 호스트의 모든 VM에 대해 동적 최소값과 동적 최대값 사이의 동일한 거리에서 비례적으로 압축됩니다.
DMC가 활성화된 경우
-
호스트의 메모리가 충분할 때 - 모든 실행 중인 VM은 동적 최대 메모리 수준을 받습니다.
-
호스트의 메모리가 부족할 때 - 모든 실행 중인 VM은 동적 최소 메모리 수준을 받습니다.
DMC를 구성할 때 VM에 적은 양의 메모리만 할당하면 부정적인 영향을 미칠 수 있음을 기억하십시오. 예를 들어, 너무 적은 메모리를 할당하면 다음과 같습니다.
-
동적 메모리 제어를 사용하여 VM에 할당할 수 있는 물리적 메모리 양을 줄이면 VM이 느리게 다시 시작될 수 있습니다. 마찬가지로 VM에 메모리를 너무 적게 할당하면 느리게 시작될 수 있습니다.
-
VM의 동적 메모리 최소값을 너무 낮게 설정하면 VM 시작 시 성능 저하 또는 안정성 문제가 발생할 수 있습니다.
DMC는 어떻게 작동합니까?
DMC를 사용하면 게스트 가상 머신을 다음 두 가지 모드 중 하나로 작동할 수 있습니다.
-
대상 모드: 관리자가 게스트에 대한 메모리 대상을 지정합니다. XenServer는 대상에 맞게 게스트의 메모리 할당을 조정합니다. 대상을 지정하는 것은 가상 서버 환경과 게스트가 사용할 메모리 양을 정확히 알고 있는 상황에서 유용합니다. XenServer는 지정한 대상에 맞게 게스트의 메모리 할당을 조정합니다.
-
동적 범위 모드: 관리자가 게스트에 대한 동적 메모리 범위를 지정합니다. XenServer는 범위에서 대상을 선택하고 대상에 맞게 게스트의 메모리 할당을 조정합니다. 동적 범위를 지정하는 것은 게스트 수의 변화 또는 호스트 메모리 압력 변화에 따라 XenServer가 호스트 메모리를 동적으로 재분할하도록 하려는 모든 상황에서 유용합니다. XenServer는 범위 내에서 대상을 선택하고 대상에 맞게 게스트의 메모리 할당을 조정합니다.
참고:
실행 중인 모든 게스트에 대해 언제든지 대상 모드와 동적 범위 모드 간에 전환할 수 있습니다. 새 대상 또는 새 동적 범위를 지정하면 XenServer가 나머지를 처리합니다.
메모리 제약 조건
XenServer는 관리자가 모든 게스트 운영 체제에서 모든 메모리 제어 작업을 사용할 수 있도록 허용합니다. 그러나 XenServer는 모든 게스트에 대해 다음 메모리 속성 순서 제약 조건을 적용합니다.
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
XenServer는 관리자가 유효성 검사 검사를 거쳐 이 제약 조건을 충족하는 모든 값으로 게스트 메모리 속성을 변경할 수 있도록 허용합니다. 그러나 이전 제약 조건 외에도 지원되는 각 운영 체제에 대해 특정 게스트 메모리 구성만 지원합니다. 지원되는 구성 범위는 사용 중인 게스트 운영 체제에 따라 다릅니다. XenServer는 관리자가 지원되는 제한을 초과하도록 게스트를 구성하는 것을 막지 않습니다. 그러나 고객은 성능 또는 안정성 문제를 방지하기 위해 메모리 속성을 지원되는 제한 내로 유지하는 것이 좋습니다. 지원되는 각 운영 체제의 최소 및 최대 메모리 제한에 대한 자세한 지침은 게스트 운영 체제 지원을 참조하십시오.
경고:
게스트 메모리를 구성할 때 운영 체제에서 주소 지정할 수 있는 최대 물리적 메모리 양을 초과하지 않는 것이 좋습니다. 운영 체제에서 지원하는 제한보다 큰 메모리 최대값을 설정하면 게스트 내에서 안정성 문제가 발생할 수 있습니다.
모든 지원되는 운영 체제에서 동적 최소값은 정적 최대값의 75% 이상이어야 합니다. 더 낮은 제한은 안정성 문제를 일으킬 수 있습니다. 관리자는 VM의 크기를 신중하게 조정하고 동적 최소값에서 애플리케이션의 작업 세트가 안정적으로 작동하는지 확인하는 것이 좋습니다.
xe CLI를 사용한 명령
VM의 정적 메모리 속성 표시
-
필요한 VM의 UUID 찾기:
xe vm-list <!--NeedCopy--> -
UUID를 기록한 다음
param-name=memory-static명령을 실행합니다.xe vm-param-get uuid=uuid param-name=memory-static-{min,max} <!--NeedCopy-->예를 들어, 다음은 UUID가 ec77로 시작하는 VM의 정적 최대 메모리 속성을 표시합니다.
xe vm-param-get uuid= \ ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \ param-name=memory-static-max; 268435456 <!--NeedCopy-->이 예시는 이 VM의 정적 최대 메모리가 268,435,456바이트(256MB)임을 보여줍니다.
VM의 동적 메모리 속성 표시
동적 메모리 속성을 표시하려면 위와 동일한 절차를 따르되 param-name=memory-dynamic 명령을 사용하십시오.
-
필요한 VM의 UUID 찾기:
xe vm-list <!--NeedCopy--> -
UUID를 기록한 다음
param-name=memory-dynamic명령을 실행합니다.xe vm-param-get uuid=uuid param-name=memory-dynamic-{min,max} <!--NeedCopy-->예를 들어, 다음은 UUID가 ec77로 시작하는 VM의 동적 최대 메모리 속성을 표시합니다.
xe vm-param-get uuid= \ ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \ param-name=memory-dynamic-max; 134217728 <!--NeedCopy-->이 예시는 이 VM의 동적 최대 메모리가 134,217,728바이트(128MB)임을 보여줍니다.
메모리 속성 업데이트
경고:
정적/동적 최소/최대 매개변수를 설정할 때 올바른 순서를 사용하십시오. 또한 다음 제약 조건을 무효화해서는 안 됩니다.
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
가상 머신의 정적 메모리 범위를 업데이트합니다:
xe vm-memory-static-range-set uuid=uuid min=value max=value
<!--NeedCopy-->
가상 머신의 동적 메모리 범위를 업데이트합니다:
xe vm-memory-dynamic-range-set \
uuid=uuid min=value \
max=value
<!--NeedCopy-->
대상을 지정하는 것은 가상 서버 환경과 게스트가 사용할 메모리 양을 정확히 알고 있는 모든 상황에서 유용합니다. XenServer는 지정한 대상에 맞게 게스트의 메모리 할당을 조정합니다. 예를 들어:
xe vm-memory-target-set target=value vm=vm-name
<!--NeedCopy-->
가상 머신의 모든 메모리 제한(정적 및 동적)을 업데이트합니다:
xe vm-memory-limits-set \
uuid=uuid \
static-min=value \
dynamic-min=value \
dynamic-max=value static-max=value
<!--NeedCopy-->
참고:
- 변경되지 않는 특정 양의 메모리를 VM에 할당하려면 동적 최대값과 동적 최소값을 동일한 값으로 설정하십시오.
- VM의 동적 메모리를 정적 최대값 이상으로 늘릴 수 없습니다.
- VM의 정적 최대값을 변경하려면 VM을 종료해야 합니다.
개별 메모리 속성 업데이트
경고:
정적 최소 수준은 운영 체제별 지원 수준으로 설정되어 있으므로 변경하지 마십시오. 자세한 내용은 메모리 제약 조건을 참조하십시오.
VM의 동적 메모리 속성을 업데이트합니다.
-
필요한 VM의 UUID를 찾습니다:
xe vm-list <!--NeedCopy--> -
uuid를 기록한 다음
memory-dynamic-{min,max}=value명령을 사용하십시오.xe vm-param-set uuid=uuid memory-dynamic-{min,max}=value <!--NeedCopy-->
다음 예시는 동적 최대값을 128MB로 변경합니다:
xe vm-param-set uuid=ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 memory-dynamic-max=128MiB
<!--NeedCopy-->