10.15. NBD 전송 모드의 AIO 크기 및 버퍼 수 증가
MTV(Migration Toolkit for Virtualization)와 함께 AIO(Asynchronous Input/Output) 버퍼링을 사용할 때 마이그레이션 성능을 높이기 위해 NBD(Network Block Device) 전송 네트워크 파일 복사(NFC) 매개변수를 변경할 수 있습니다.
AIO 버퍼링을 사용하는 것은 콜드 마이그레이션 사용 사례에만 적합합니다.
웜 마이그레이션을 초기화하기 전에 AIO 설정을 비활성화합니다. 자세한 내용은 AIO 버퍼 구성 비활성화를 참조하십시오.
10.15.1. 주요 결과 링크 복사링크가 클립보드에 복사되었습니다!
최상의 마이그레이션 성능은 다음 값을 사용하여 단일 ESXi 호스트에서 여러 가상 머신(VM)을 마이그레이션하여 달성되었습니다.
-
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 -
vixDiskLib.nfcAio.Session.BufCount=4
-
AIO 버퍼 설정(동기 버퍼 수)을 사용할 때 다음과 같은 개선 사항이 기록되었습니다.
- 마이그레이션 시간이 31.1% 로 단축되었으며 0:24:32에서 0:16:54로 단축되었습니다.
- 읽기 속도가 347.83MB/s에서 504.93MB/s로 증가했습니다.
- 단일 VM과 함께 AIO 버퍼 설정을 사용할 때 상당한 개선이 관찰되지 않았습니다.
- 여러 호스트의 여러 VM과 함께 AIO 버퍼 설정을 사용할 때 상당한 개선이 관찰되지 않았습니다.
10.15.2. AIO 크기 및 버퍼 수 지원에 대한 주요 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
지원은 다음 버전을 사용하여 수행되는 테스트를 기반으로 합니다.
- vSphere 7.0.3
- VDDK 7.0.3
10.15.3. AIO 버퍼링 활성화 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
MCP(Migration Toolkit for Virtualization)와 함께 사용할 비동기 입력/출력(AIO) 버퍼링을 활성화하고 구성할 수 있습니다.
프로세스
openshift-mtv네임스페이스의forklift-controllerPod가 AIO 버퍼 값을 지원하는지 확인합니다. Pod 이름 접두사가 동적이므로 다음 명령을 실행하여 Pod 이름을 확인합니다.oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'예를 들어 Pod 이름 접두사가 "forklift-controller-667f57c8f8-qllnx"인 경우 출력은 다음과 같습니다.
forklift-controller-667f57c8f8-qllnx다음 명령을 실행하여 Pod의 환경 변수를 확인합니다.
oc get pod forklift-controller-667f57c8f8-qllnx -n openshift-mtv -o yaml출력에서 다음 행을 확인합니다.
... \- name: VIRT\_V2V\_EXTRA\_ARGS \- name: VIRT\_V2V\_EXTRA\_CONF\_CONFIG\_MAP ...openshift-mtv 네임스페이스에서 다음 단계를 수행하여ForkliftControllerCR(사용자 정의 리소스)을 편집합니다.다음 명령을 실행하여 편집을 위해
ForkliftControllerCR에 액세스합니다.oc edit forkliftcontroller -n openshift-mtvForkliftControllerCR의spec섹션에 다음 행을 추가합니다.virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
다음 명령을 실행하여 필요한 구성 맵
perf를 생성합니다.oc -n openshift-mtv create cm perf원하는 버퍼 구성 값을 Base64로 변환합니다. 예를 들어 16/4의 경우 다음 명령을 실행합니다.
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64출력은 다음과 유사합니다.
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=구성 맵
perf에서binaryData섹션에 Base64 문자열을 입력합니다. 예를 들면 다음과 같습니다.apiVersion: v1 kind: ConfigMap binaryData: input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo= metadata: name: perf namespace: openshift-mtv-
forklift-controllerPod를 다시 시작하여 새 구성을 적용합니다. -
VIRT_V2V_EXTRA_ARGS환경 변수가 업데이트된 설정을 반영하는지 확인합니다. 마이그레이션 계획을 실행하고 마이그레이션 Pod의 로그를 확인합니다. AIO 버퍼 설정이 매개 변수, 특히
--vddk-config값으로 전달되는지 확인합니다.예를 들어 다음 명령을 실행하는 경우 다음을 수행합니다.
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.confdebug_level = 4인 경우 로그에 다음과 유사한 섹션이 포함됩니다.Buffer size calc for 16 value: (16 * 64 * 1024 = 1048576) nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAio_OpenSession: Opening an AIO session. nbdkit: vddk[1]: debug: [NFC INFO] NfcAioInitSession: Disabling read-ahead buffer since the AIO buffer size of 1048576 is >= the read-ahead buffer size of 65536. Explicitly setting flag '`NFC_AIO_SESSION_NO_NET_READ_AHEAD`' nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAioInitSession: AIO Buffer Size is 1048576 nbdkit: vddk[1]: debug: [NFC VERBOSE] NfcAioInitSession: AIO Buffer Count is 4올바른 구성 맵 값이 마이그레이션 Pod에 있는지 확인합니다. 마이그레이션 Pod에 로그인하고 다음 명령을 실행하여 이 작업을 수행합니다.
cat /mnt/extra-v2v-conf/input.conf출력 예는 다음과 같습니다.
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 vixDiskLib.nfcAio.Session.BufCount=4선택 사항: 다음 명령을 실행하여 디버그 로그를 활성화합니다. 이 명령은 높은 로그 수준을 포함하여 구성을 Base64로 변환합니다.
echo -e "`VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nVixDiskLib.nfcAio.Session.BufCount=4\nVixDiskLib.nfc.LogLevel=4`" | base64참고높은 로그 수준을 추가하면 성능이 저하되고 디버깅 목적으로만 사용됩니다.
10.15.4. AIO 버퍼링 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
MCP(Migration Toolkit for Virtualization)를 사용하여 콜드 마이그레이션에 대한 AIO 버퍼링을 비활성화할 수 있습니다. MTV를 사용하여 웜 마이그레이션에 대해 AIO 버퍼링을 비활성화해야 합니다.
다음 절차에서는 AIO 버퍼링 활성화 및 구성의 절차에 따라 AIO 버퍼링 이 활성화되고 구성되어 있다고 가정합니다.
프로세스
openshift-mtv 네임스페이스에서 다음 단계를 수행하여ForkliftControllerCR(사용자 정의 리소스)을 편집합니다.다음 명령을 실행하여 편집을 위해
ForkliftControllerCR에 액세스합니다.oc edit forkliftcontroller -n openshift-mtvForkliftControllerCR의spec섹션에서 다음 행을 제거합니다.virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"
perf라는 구성 맵을 삭제합니다.oc delete cm perf -n openshift-mtv-
선택 사항:
forklift-controllerPod를 다시 시작하여 변경 사항이 적용되었는지 확인합니다.