QEMU ChangeLog 10.0 ~ 10.2

출처: https://wiki.qemu.org/ChangeLog/

QEMU 10.0 ~ 10.2까지 ChangeLog를 정리해 봤습니다. 시스템 에뮬레이션 관련해서는 x86만 포함했습니다.
번역해 봐도 무슨 말인지 잘 이해는 안되지만… ㅠ.ㅠ 스토리지, 마이그레이션 관련 수정 사항들이 눈에 들어옵니다. 홈서버 사용자 입장에서 IGD 관련 개선이 반갑습니다.

System emulation

x86

  • 10.0: 문자열 명령어의 에뮬레이션이 더 빨라졌습니다.
  • 10.0: ClearwaterForest CPU 모델
  • 10.0: SierraForest-v2 CPU 모델
  • 10.1: 게스트 CPU의 벤더가 정의하지 않은 경우 벤더별 CPUID 비트는 제외됩니다.

KVM

  • TDX 지원(리눅스 6.16 이상 필요).
  • IGVM 파일에서 TDX 또는 SEV-SNP 가상 머신을 시작할 수 있도록 지원합니다.

TCG

  • TSS 트랩 비트 지원

장치 에뮬레이션 및 할당

ACPI / SMBIOS

  • 10.0: 일반적으로 무해하지만 로컬 버전에서는 게스트가 중단될 수 있는 ‘PCI Label Id’ Windows 버그를 해결합니다.

Block devices

  • 10.0: ‘virtio-scsi’ 장치는 단일 컨트롤러의 다양한 대기열을 서로 다른 I/O 스레드로 처리할 수 있는 진정한 멀티 큐 지원을 확보했습니다(이는 QEMU 9.0에 추가된 ‘virtio-blk’ 지원을 따라잡습니다). 이는 게스트가 호스트 CPU가 virtio-scsi 요청을 처리하는 단일 I/O 스레드를 실행하는 데 충분한 I/O를 제출한 경우 확장성을 향상시킬 수 있습니다. 새로운 ‘iothread-vq 매핑’ 속성을 사용하여 여러 I/O 스레드를 구성할 수 있습니다.
  • 10.0: nbd-server-start QMP 명령어에 새로운 handshake-max-second 옵션 매개변수를 추가하고, qemu-nbd에 대응하는 –handshake-limit 옵션을 추가합니다. 이를 통해 통합 테스트 중에 클라이언트 협상에 허용되는 기간을 미세 조정할 수 있습니다.
  • 10.0: qemu-nbd는 간단한 트레이스 백엔드로 빌드될 때 데몬으로 실행될 때( –fork 명령줄 옵션) 종료 시 더 이상 대기하지 않습니다.

Graphics

  • 10.0: macOS 호스트의 ParavirtualizedGraphics.framework를 사용하여 macOS 게스트에게 가속 그래픽을 제공하는 새로운 ‘apple-gfx-pci’ 및 ‘apple-gfx-mmio’ 장치를 추가합니다. ‘apple-gfx-pci’는 x86-64에서 사용할 수 있도록 설계되었으며, ‘apple-gfx-mmio’는 aarch64 버전의 macOS에서 구현된 그래픽 장치를 복제합니다.

IPMI

  • 10.0: 이제 여러 가지 다른 내부 BMC가 지원됩니다.
  • 10.0: “Get Channel Info” 명령은 이제 내부 BMC에 구현되었습니다.
  • 10.0: set watchdog 명령어에 “don’t log” 플래그에 대한 지원을 추가합니다. 이렇게 하면 IPMI 이벤트 로그에 워치독 타이머 이벤트가 추가되는 것을 방지할 수 있습니다.
  • 10.0: 내부 BMC의 “Set BMC Global Enables” 명령에서 잘못된 비트가 설정된 경우 오류를 반환합니다.

Network devices

  • 10.1: passt 네트워킹 백엔드

PCI/PCIe

  • 10.1: PCI 디바이스용 ACPI PCI 핫플러그 및 acpi-index는 이제 -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on’을 사용할 때 ARM ‘virt’ 머신에서도 지원됩니다

VFIO

  • 10.0: 모든 인텔 11세대 및 12세대 장치에서 IGD 패스스루 지원 개선
  • 10.0: calc-dirty-rate에 VFIO 상태를 포함하도록 리팩토링된 더티 트래킹 엔진
  • 10.0: MMIO 영역 매핑 실패에 대한 오류 보고 개선
  • 10.0: 개선된 property 문서
  • 10.0: 기본 PCI PM 기능 백업 구현
  • 10.0: VFIO 마이그레이션을 위한 multifd 지원 추가
  • 10.0: 구형 ATI GPU 지원 추가 (x550)
  • 10.0: vfio-platform 폐기
  • 10.0: 기타 수정 사항
  • 10.1: CoCo guest-memfd 메모리 백엔드에 대한 초기 지원
  • 10.1: 업데이트된 IGD 패스스루 문서
  • 10.1: pserise 컴퓨터에서 L2 충돌 수정
  • 10.1: IGD 패스스루를 위한 OpRegion 자동 활성화 추가
  • 10.1: IGD 패스스루에서 OpRegion 탐지 수정
  • 10.1: vfio-ap 구성 변경 사항을 보고하는 지원 추가
  • 10.1: vfio-user 클라이언트 장치에 대한 지원 추가
  • 10.1: 실시간 업데이트(CPR) 지원 추가
  • 10.1: arch64에서 multifd를 사용한 VFIO 마이그레이션 지원 추가
  • 10.1: 디바이스 PCI 클래스 코드를 재정의하는 속성을 도입했습니다
  • 10.1: TDX 및 SNP 가상 머신에서 VFIO 지원.
  • 10.2: 사용되지 않는 vfio 플랫폼, vfio-calxeda-xgmac 및 vfio-amd-xgbe 장치 제거

virtio

  • 10.0: virtio-mem은 s390x에서도 지원됩니다
  • 10.0: 디바이스/머신 리셋 시 virtio-balloon 게스트 통계가 이제 지워집니다(제로 설정).
  • 10.1: virtio-gpu: virtio-gpu EDID 이름 삽입 허용

9pfs

  • 10.0: security_model=passthrough를 사용하여 게스트의 특정 소켓에 장애가 발생한 CVE-2023-2861에 대한 회귀를 수정합니다.
  • 10.0: multideevs=remap은 새로운 기본 동작입니다.
  • 10.1: 파일 디스크립터 회수 알고리즘을 수정합니다(즉, 호스트의 최대 파일 디스크립터 허용 한도를 향해 실행될 때).
  • 10.1: 링크 해제 후 사용 관용구에 대한 추가 수정 사항(즉, 파일이 제거된 후 파일 설명자에 대한 클라이언트 작업).

Audio

  • 10.0: 오디오 dbus 학습된 “nsample” 옵션, 읽기/쓰기당 샘플 수 설정
  • 10.1: alsa: 기본적으로 “try-poll”을 false로 설정합니다
  • 10.1: 플로트 샘플 엔디안니스(float sample endianness) 변환기 추가

Character devices

  • 10.0: “hub”: 새로운 chardev, 여러 chardev 백엔드를 집계합니다.

Crypto subsystem

  • 10.1: 이제 TCG 명령어 에뮬레이터 이외의 다른 용도로는 내장된 AES impl의 사용이 제거되었습니다. 이제 다른 AES 사용 시 QEMU는 암호화폐 제공자로서 gcrypt, nettle 또는 gnutl 중 하나를 사용하여 구축해야 합니다.

I/O subsystem

  • 10.1: TCP 연결을 지원하는 대부분의 장치 백엔드는 이제 TCP keepalive 매개변수 구성을 지원할 수 있습니다

GUI

  • 10.0: VC: 커서 DECSC 및 DECRC 명령에 대한 지원 추가
  • 10.0: VC: DCH(삭제) 및 ICH(삽입) 명령 구현
  • 10.0: VC: 다양한 구문 분석/표시 수정
  • 10.1: spice/dbus: 멀티-플레인 dmabuf 지원
  • 10.1: spice: 비로컬 또는 원격 클라이언트를 위한 gl=on 옵션 활성화
  • 10.1: vdagent: 마이그레이션 지원 추가
  • 10.1: gtk: 스케일 핸들링 개선
  • 10.1: gtk: keep-aspect-ratio 및 scale 옵션 추가
  • 10.1: vnc: 클라이언트와 서버의 엔디안니스가 다를 때 비타이트 VNC 인코딩의 업데이트 인코딩은 고정됩니다
  • 10.1: vnc: 클라이언트와 서버의 엔디안니스가 다를 때 8/16-bp 업데이트 인코딩이 수정됩니다
  • 10.1: vnc: 마이그레이션 후 디스플레이 일시 중지 문제 수정

GDBStub

  • 10.0: linux 사용자 프로세스는 -g <port>,suspend=n을 사용하여 연결을 연기할 수 있습니다.
  • 10.1: 비 gdb 클라이언트에서 사용하는 qGDBServerVersion에 대한 지원 추가

TCG Plugins

  • 10.0: 코어 플러그인 코드는 이제 한 번만 빌드됩니다.
  • 10.1: ips 플러그인은 양자 인수당 구성 가능한 확장 및 지침을 얻었습니다
  • 10.1: 레지스터 값을 작성하는 새로운 함수
  • 10.1: 가상 주소에 쓰기 위한 새로운 기능(주의 사항 참조)
  • 10.1: 하드웨어 주소를 읽고 쓰는 새로운 기능(주의 사항 참조)
  • 10.1: patcher라는 새로운 테스트 플러그인
  • 10.1: 이제 sparc64 및 알파 타겟에서 플러그인으로 레지스터 세부 정보를 내보낼 수 있습니다

Migration

  • 10.0: s390x (#2704) 및 multifd 기능을 사용한 9.0 이전 버전에서 9.1 이후 버전으로의 마이그레이션 (#2720) 에서 발생하는 회귀 문제가 해결되었습니다.
  • 10.0: 일시 중지된 VM과 관련된 오래된 버그가 수정되었습니다 (#686).
  • 10.0: 라이브 업데이트를 지원하는 새로운 마이그레이션 모드 “cpr-transfer” (문서 )
  • 10.1: RDMA 실시간 마이그레이션이 ipv6를 지원하기 시작합니다
  • 10.1: 순차적 메모리 액세스(예: 비디오 스트리밍)에서 포스트카피 선점 모드 최적화
  • 10.1: 멀티플렉싱 및 포스트카피 기능을 모두 활성화하는 초기 지원(멀티플렉싱은 지금까지 프리카피 중에만 활성화됨)
  • 10.1: TCP 제로 복사 전송이 활성화된 경우 VFIO 멀티플렉싱 실시간 마이그레이션 수정
  • 10.1: 불필요한 LOG_CLEAR 작업을 방지하여 다운타임 최적화 사전 복사

Monitor

QMP

  • 10.1: blockdev-mirror는 희소 파일을 이미 0으로 읽히는 대상으로 미러링하는 데 사용할 수 있는 새로운 부울 플래그  target-is-zero를 얻었습니다. 이 플래그를 사용하지 않더라도 미러링은 소스의 일부가 0으로 읽히는 작업을 덜 수행하도록 최적화되었습니다.
  • 10.1: blockdev-backup은 쓰기 전 복사 작업 중 IO 오류가 발생할 때 사용자가 어떻게 행동할지 지정할 수 있는 새로운 옵션인 on-cbw-error를 얻었습니다.

Network

  • QEMU는 이제 Unix 소켓에서 NBD를 사용할 때 더 큰 버퍼를 배치하려고 시도하여 처리량을 크게 향상시킵니다. MacOS에서는 이 기능이 즉시 작동하지만 Linux에서는 시스템 관리자가 다음과 같은 변경 사항을 수행해야 합니다:
$ cat /etc/sysctl.d/net-mem-max.conf
net.core.wmem_max = 2097152
$ sudo sysctl -p /etc/sysctl.d/net-mem-max.conf

Block device backends and tools

  • 10.0: Linux AIO 및 io_uring 백엔드는 이제 일반 쓰기 후 fdatasync() 호출 로 에뮬레이션하는 대신 FUA 쓰기 요청에 RWF_DSYNC 플래그를 사용할 수 있습니다 . 이를 통해 쓰기 캐시가 비활성화된 게스트 디스크( cache=writethrough 및 cache=directsync 설정으로 인해 이러한 구성이 발생함)의 성능이 크게 향상될 수 있으며, 특히 호스트 디스크가 이미 write-through 캐시 모드로 작동 중인 경우 더욱 그렇습니다.
  • 10.0: 이제 사용자는 노드의 활성 또는 비활성 여부를 능동적으로 관리할 수 있습니다. 특히 qemu-storage-daemon 기반 백엔드를 사용하여 안전한 라이브 마이그레이션을 수행하는 데 필수적입니다. 또한, 이전에는 이미지를 활성화하는 유일한 방법이었던 VM을 재개하지 않고도 일시 중지된 VM의 라이브 마이그레이션 대상에서 블록 장치 작업을 시작할 수 있습니다.
  • 10.0: Azure에서 내보낸 VHD 이미지를 보다 정확하게 처리하도록 vpc 블록 드라이버가 수정되었습니다.

Block jobs

  • 10.1: 비활성 블록 커밋은 희소성을 유지하도록 최적화되었습니다
  • 10.1: blockdev-mirror는 블록이 전혀 없는 상태에서 작업을 덜 수행하도록 최적화되었습니다
  • 10.1: blockdev-mirror 및 blockdev-backup은 새로운 옵션을 얻었습니다. QMP 섹션 참조

runtime

  • 10.0: 넷링크 및 멀티캐스트에 관한 향상된 네트워킹 에뮬레이션

사용자-모드 에뮬레이션

Guest agent

10.0: fsfreeze 명령: FS 목록에서 바인드 마운트 건너뛰기

10.0: ‘guest-get-load’ 명령 구현(Linux 전용)

10.0: 채널이 초기화되기 전에 데몬화하지 마세요: 이것은 QGA가 daemonize 옵션으로 실패할 때 종료 코드를 변경합니다.

10.0: 로깅 오류의 동결 후크 스크립트 논리를 최적화합니다: 파일 로그를 사용할 수 없는 경우 syslog에 기록합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

libvirt: Guest migration

출처 : https://libvirt.org/migration.html 호스트 간 게스트 마이그레이션은 여러 가지 가능한 솔루션이 있는 복잡한 문제이며, 각 솔루션에는 장점과 단점이…