VM 메모리
VM을 만들면 고정된 양의 메모리가 VM에 할당됩니다. DMC(동적 메모리 제어)를 사용하여 XenServer 환경에서 물리적 메모리 사용률을 높일 수 있습니다. 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를 사용할 때 항상 지정된 DMR 내에 각 VM 메모리를 할당하도록 보장합니다.
정적 범위의 개념
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의 동적 메모리 최소값을 너무 낮게 설정하면 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-->