15.14. NBD 전송 모드에 대한 비동기 I/O(AIO) 크기 및 버퍼 수 증가
이 문서에서는 MTV(Migration Toolkit for Virtualization) 제품을 사용할 때 마이그레이션 성능을 높이기 위해 NBD 전송 root 매개변수를 변경하는 방법에 대해 설명합니다.
AIO 버퍼링을 사용하는 것은 콜드 마이그레이션 사용 사례에만 적합합니다.
- warm 마이그레이션을 초기화하기 전에 AIO 설정을 비활성화합니다. 자세한 내용은 AIO 버퍼 구성 비활성화를 참조하십시오.
15.14.1. 주요 결과 링크 복사링크가 클립보드에 복사되었습니다!
최상의 마이그레이션 성능은 다음과 같은 단일 ESXi 호스트에서 여러 VM 10을 사용하여 마이그레이션하여 달성되었습니다.
-
VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 -
vixDiskLib.nfcAio.Session.BufCount=4
-
AIO 버퍼(Asynchronous Buffer Counts) 설정을 사용할 때 다음과 같은 개선 사항이 기록되었습니다.
-
마이그레이션 시간이 31.1% 로 단축되었으며
0:24:32에서0:16:54로 변경되었습니다. -
읽기 속도가
347.83MB/s에서504.93MB/s로 증가했습니다.
-
마이그레이션 시간이 31.1% 로 단축되었으며
- 단일 VM과 함께 AIO 버퍼 설정을 사용할 때 상당한 개선이 관찰되지 않았습니다.
- 여러 호스트의 여러 VM과 함께 AIO 버퍼 설정을 사용할 때 상당한 개선이 관찰되지 않았습니다.
15.14.2. AIO 버퍼 구성 활성화 링크 복사링크가 클립보드에 복사되었습니다!
AIO 값에 대한 컨트롤러 Pod 지원 검증
openshift-mtv네임스페이스의forklift-controllerPod가 AIO 버퍼 값을 지원하는지 확인합니다.Pod 이름 접두사가 동적이므로 다음 명령을 실행하여 먼저 Pod 이름을 확인합니다.
oc get pods -n openshift-mtv | grep forklift-controller | awk '{print $1}'예제 출력은 다음과 같습니다.
forklift-controller-667f57c8f8-qllnx참고예:
forklift-controller-667f57c8f8-qllnx의 Pod 이름 접두사입니다.다음을 실행하여 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 ...
ForkliftController 구성 편집
openshift-mtv 네임스페이스에서 다음 명령을 실행하여 AIO 버퍼 값을 포함하도록ForkliftController오브젝트를 편집합니다.oc edit forkliftcontroller -n openshift-mtvspec 섹션에 다음을 추가합니다.
virt_v2v_extra_args: "--vddk-config /mnt/extra-v2v-conf/input.conf" virt_v2v_extra_conf_config_map: "perf"
perf라는 ConfigMap 생성
다음 명령을 사용하여 필요한 ConfigMap을 생성합니다.
oc -n openshift-mtv create cm perf
ConfigMap 콘텐츠 준비
원하는 버퍼 구성 값을 Base64로 변환합니다. 예를 들어 16/4의 경우:
echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64출력은 다음과 유사합니다.
Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
ConfigMap 편집
다음과 같이
binaryData섹션에서 Base64 문자열로 perf ConfigMap을 업데이트합니다.apiVersion: v1 kind: ConfigMap binaryData: input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo= metadata: name: perf namespace: openshift-mtv
Forklift Controller Pod 다시 시작
- forklift-controller Pod를 다시 시작하여 새 구성을 적용합니다.
-
VIRT_V2V_EXTRA_ARGS환경 변수가 업데이트된 설정을 반영하는지 확인합니다.
마이그레이션 로그 확인
마이그레이션 계획을 실행하고 마이그레이션 Pod의 로그를 확인합니다. AIO 버퍼 설정이 매개 변수, 특히
--vddk-config 값으로전달되는지 확인합니다.예를 들면 다음과 같습니다.
exec: /usr/bin/virt-v2v … --vddk-config /mnt/extra-v2v-conf/input.conf샘플 로그 발췌:
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참고위의 로그는
debug_level = 4를 사용하는 경우입니다.
마이그레이션 Pod에 콘텐츠로 ConfigMap 값 검사
마이그레이션 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참고높은 로그 수준을 추가하면 성능이 저하되고 디버깅 목적으로만 사용됩니다.
15.14.3. AIO 버퍼 구성 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
AIO 버퍼 구성을 비활성화하려면 다음 단계를 완료합니다.
ForkliftController Object: ForkliftController 오브젝트의 spec 섹션에서 이전에 추가된 행을 제거합니다.
oc edit forkliftcontroller -n openshift-mtv다음 행을 제거합니다.
virt_v2v_extra_args: "`–vddk-config /mnt/extra-v2v-conf/input.conf`" virt_v2v_extra_conf_config_map: "`perf`"ConfigMap을 삭제합니다. 이전에 생성한 perf ConfigMap을 제거합니다.
oc delete cm perf -n openshift-mtv- Forklift Controller Pod를 다시 시작합니다(선택 사항).
필요한 경우 forklift-controller Pod를 다시 시작하여 변경 사항이 적용되었는지 확인합니다.
15.14.4. AIO 버퍼(Asynchronous Buffer Counts) 지원의 주요 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
VDDK 및 vSphere 버전
지원은 다음 버전을 사용하여 수행되는 테스트를 기반으로 합니다.
- vSphere : 7.0.3
- VDDK : 7.0.3
- 다른 VDDK 및 vSphere 버전의 경우 공식 VMware 문서에서 AIO 버퍼 지원을 확인하십시오.