가상화 관리 가이드
가상 환경 관리
초록
1장. 서버 모범 사례 링크 복사링크가 클립보드에 복사되었습니다!
- 강제 모드에서 SELinux를 실행합니다. setenforce 명령을 사용하여 SELinux를 강제 모드로 설정합니다.
setenforce 1
# setenforce 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AutoFS, NFS ,NFS,FTP,HTTP,NIS,telnetd 와 같은 불필요한 서비스를 제거하거나 비활성화합니다.
- 서버의 플랫폼 관리에 필요한 최소 사용자 계정 수만 추가하고 불필요한 사용자 계정을 제거합니다.
- 호스트에서 필수 애플리케이션이 실행되지 않도록 합니다. 호스트에서 애플리케이션을 실행하면 가상 시스템 성능에 영향을 줄 수 있으며 서버 안정성에 영향을 미칠 수 있습니다. 서버에 충돌이 발생할 수 있는 모든 애플리케이션도 서버의 모든 가상 시스템을 작동 중단시킵니다.
- 가상 시스템 설치 및 이미지에 중앙 위치를 사용합니다. 가상 머신 이미지는
/var/lib/libvirt/images/에 저장해야 합니다. 가상 머신 이미지에 다른 디렉터리를 사용하는 경우 디렉토리를 SELinux 정책에 추가하고 설치를 시작하기 전에 레이블을 다시 지정해야 합니다. 공유 가능한 공유 가능, 중앙 위치에서 네트워크 스토리지를 사용하는 것이 좋습니다.
2장. sVirt 링크 복사링크가 클립보드에 복사되었습니다!
비가상화 환경
가상화되지 않은 환경에서는 호스트 물리적 시스템이 서로 분리되어 있으며 각 호스트 물리적 시스템에는 웹 서버 또는 DNS 서버와 같은 서비스로 구성된 자체 포함 환경이 있습니다. 이러한 서비스는 자체 사용자 공간과 물리적 시스템의 커널 및 물리적 하드웨어와 직접 통신하여 네트워크에 직접 서비스를 제공합니다. 다음 이미지는 가상화되지 않은 환경을 나타냅니다.
- ??????
- 사용자 공간 - 모든 사용자 모드 애플리케이션과 일부 드라이버가 실행되는 메모리 영역입니다.
- ???
- 웹 앱(웹 애플리케이션 서버) - 브라우저를 통해 액세스할 수 있는 웹 콘텐츠를 제공합니다.
- ??????
- 호스트 커널 - 호스트 물리적 시스템의 권한 있는 커널, 커널 확장 및 대부분의 장치 드라이버를 실행하기 위해 엄격하게 예약되어 있습니다.
- ???
- DNS 서버 - 사용자가 IP 주소 대신 논리 이름을 사용하여 웹 페이지에 액세스할 수 있도록 허용하는 DNS 레코드를 저장합니다.
가상화된 환경
가상화 환경에서 호스트 물리적 시스템에 상주하는 단일 커널에서 여러 가상 운영 체제를 실행할 수 있습니다. 다음 이미지는 가상화된 환경을 나타냅니다.
2.1. 보안 및 가상화 링크 복사링크가 클립보드에 복사되었습니다!
2.2. KnativeServing 라벨링 링크 복사링크가 클립보드에 복사되었습니다!
ps -eZ | grep qemu system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
# ps -eZ | grep qemu
system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
ls -lZ /var/lib/libvirt/images/* system_u:object_r:svirt_image_t:s0:c87,c520 image1
# ls -lZ /var/lib/libvirt/images/*
system_u:object_r:svirt_image_t:s0:c87,c520 image1
| SELinux Context | 유형 / 설명 |
|---|---|
| system_u:system_r:svirt_t:MCS1 | 게스트 가상 머신 프로세스. MCS1은 임의의 MCS 필드입니다. 대략 500,000개의 레이블이 지원됩니다. |
| system_u:object_r:svirt_image_t:MCS1 | 게스트 가상 머신 이미지. MCS 필드가 동일한 svirt_t 프로세스만 이러한 이미지를 읽고 쓸 수 있습니다. |
| system_u:object_r:svirt_image_t:s0 | 게스트 가상 머신 공유 읽기/쓰기 콘텐츠. 모든 svirt_t 프로세스는 svirt_image_t:s0 파일에 쓸 수 있습니다. |
3장. 가상 머신 복제 링크 복사링크가 클립보드에 복사되었습니다!
- 복제본은 단일 가상 시스템의 인스턴스입니다. 복제본은 동일한 가상 머신의 네트워크를 설정하는 데 사용할 수 있으며 다른 대상에 배포할 수도 있습니다.
- 템플릿 은 복제용 소스로 사용하도록 설계된 가상 머신의 인스턴스입니다. 템플릿에서 여러 복제본을 생성하고 각 복제를 약간 수정할 수 있습니다. 이는 시스템에서 이러한 변경의 영향을 확인하는 데 유용합니다.
- 플랫폼 수준 정보 및 구성에는 가상화 솔루션에서 가상 머신에 할당한 모든 사항이 포함됩니다. 예를 들면 NIC(네트워크 인터페이스 카드) 및 해당 MAC 주소가 있습니다.
- 게스트 운영 체제 수준 정보 및 구성에는 가상 머신 내에서 구성된 모든 항목이 포함됩니다. 예를 들면 SSH 키가 있습니다.
- 애플리케이션 수준 정보 및 구성에는 가상 머신에 설치된 애플리케이션에서 구성하는 모든 내용이 포함됩니다. 예를 들면 활성화 코드 및 등록 정보가 있습니다.참고이 장에서는 정보 및 접근 방식이 각 애플리케이션에 고유하므로 애플리케이션 수준 제거에 대한 정보는 포함되지 않습니다.
3.1. 클로닝을 위해 가상 머신 준비 링크 복사링크가 클립보드에 복사되었습니다!
절차 3.1. 복제를 위한 가상 머신 준비
가상 머신 설정
- 복제본 또는 템플릿에 사용할 가상 머신을 빌드합니다.
- 복제본에 필요한 소프트웨어를 설치합니다.
- 운영 체제에 대한 고유하지 않은 설정을 구성합니다.
- 고유하지 않은 애플리케이션 설정을 구성합니다.
네트워크 구성 제거
- 다음 명령을 사용하여 영구 udev 규칙을 제거합니다.
rm -f /etc/udev/rules.d/70-persistent-net.rules
# rm -f /etc/udev/rules.d/70-persistent-net.rulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고udev 규칙이 제거되지 않으면 첫 번째 NIC 이름은 eth0 대신 eth1일 수 있습니다. - ifcfg 스크립트에서
/etc/sysconfig/network-scripts/ifcfg-eth[x]를 다음과 같이 편집하여 고유한 네트워크 세부 정보를 제거합니다.- HWADDR 및 정적 행 제거참고HWADDR이 새 게스트의 MAC 주소와 일치하지 않으면 ifcfg가 무시됩니다. 따라서 파일에서 HWADDR을 제거하는 것이 중요합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - DHCP 구성이 HWADDR 또는 고유한 정보가 포함되지 않은 상태로 남아 있는지 확인합니다.
DEVICE=eth[x] BOOTPROTO=dhcp ONBOOT=yes
DEVICE=eth[x] BOOTPROTO=dhcp ONBOOT=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일에 다음 행이 포함되어 있는지 확인합니다.
DEVICE=eth[x] ONBOOT=yes
DEVICE=eth[x] ONBOOT=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 다음 파일이 있는 경우 해당 파일에 동일한 콘텐츠가 포함되어 있는지 확인합니다.
/etc/sysconfig/networking/devices/ifcfg-eth[x]/etc/sysconfig/networking/profiles/default/ifcfg-eth[x]
참고NetworkManager 또는 특수 설정을 가상 시스템과 함께 사용한 경우 추가 고유 정보가 ifcfg 스크립트에서 제거되었는지 확인합니다.
등록 세부 정보 제거
- 다음 중 하나를 사용하여 등록 세부 정보를 제거합니다.
- RHN(Red Hat Network)에 등록된 게스트 가상 머신의 경우 다음 명령을 실행합니다.
rm /etc/sysconfig/rhn/systemid
# rm /etc/sysconfig/rhn/systemidCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Subscription Manager (RHSM)가 등록된 게스트 가상 머신의 경우:
- 원래 가상 머신을 사용하지 않는 경우 다음 명령을 실행합니다.
subscription-manager unsubscribe --all subscription-manager unregister subscription-manager clean
# subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 원래 가상 시스템을 사용하는 경우 다음 명령만 실행합니다.
subscription-manager clean
# subscription-manager cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고원래 RHSM 프로파일은 포털에 남아 있습니다.
기타 고유한 세부 정보 제거
- 다음 명령을 사용하여 sshd 공개/개인 키 쌍을 제거합니다.
rm -rf /etc/ssh/ssh_host_*
# rm -rf /etc/ssh/ssh_host_*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고ssh 키를 제거하면 ssh 클라이언트의 문제가 이러한 호스트를 신뢰하지 않습니다. - 여러 시스템에서 실행되는 경우 충돌을 일으킬 수 있는 다른 애플리케이션별 식별자 또는 구성을 제거합니다.
다음 부팅 시 구성 마법사를 실행하도록 가상 머신 구성
- 다음 중 하나를 수행하여 부팅될 때 관련 구성 마법사를 실행하도록 가상 머신을 구성합니다.
- Red Hat Enterprise Linux 6 이하의 경우 다음 명령을 사용하여 .unconfigured라는 루트 파일 시스템에 빈 파일을 생성합니다.
touch /.unconfigured
# touch /.unconfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Enterprise Linux 7의 경우 다음 명령을 실행하여 첫 번째 부팅 및 초기 설정 마법사를 활성화하십시오.
sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot systemctl enable firstboot-graphical systemctl enable initial-setup-graphical
# sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot # systemctl enable firstboot-graphical # systemctl enable initial-setup-graphicalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
참고다음 부팅 시 실행되는 마법사는 가상 머신에서 제거된 구성에 따라 다릅니다. 또한 복제본의 첫 번째 부팅 시 호스트 이름을 변경하는 것이 좋습니다.
3.2. 가상 머신 복제 링크 복사링크가 클립보드에 복사되었습니다!
3.2.1. virt-clone을 사용하여 게스트 복제 링크 복사링크가 클립보드에 복사되었습니다!
--original 만 필요합니다. 전체 옵션 목록을 보려면 다음 명령을 입력합니다.
virt-clone --help
# virt-clone --help
예 3.1. virt-clone 을 사용하여 게스트 복제
virt-clone --original demo --auto-clone
# virt-clone --original demo --auto-clone
예 3.2. virt-clone 을 사용하여 게스트 복제
virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/xen/images/newdemo.img --file /var/lib/xen/images/newdata.img
# virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/xen/images/newdemo.img --file /var/lib/xen/images/newdata.img
3.2.2. virt-manager를 사용하여 게스트 복제 링크 복사링크가 클립보드에 복사되었습니다!
절차 3.2. virt-manager를 사용하여 가상 머신 복제
virt-manager를 엽니다.
virt-manager 를 시작합니다. (애플리케이션) 메뉴 및 (시스템 도구) 하위 메뉴에서 애플리케이션을 시작합니다. 또는 root로 virt-manager 명령을 실행합니다.가상 머신 관리자 의 게스트 가상 머신 목록에서 복제할 게스트 가상 머신을 선택합니다.복제할 guest 가상 머신을 마우스 오른쪽 버튼으로 클릭하고 을 선택합니다. Clone Virtual Machine(가상 시스템 복제) 창이 열립니다.그림 3.1. 가상 머신 창 복제
복제 구성
- 복제본 이름을 변경하려면 복제본에 새 이름을 입력합니다.
- 네트워킹 구성을 변경하려면 세부 정보를 클릭합니다.복제본에 새 MAC 주소를 입력합니다.OK를 클릭합니다.
그림 3.2. MAC 주소 창 변경
- 복제된 게스트 가상 머신의 각 디스크에 대해 다음 옵션 중 하나를 선택합니다.
이 디스크 복제- 복제된 게스트 가상 머신에 대해 디스크가 복제됩니다.디스크를 게스트 가상 머신 이름과공유 - 복제된 게스트 가상 머신에서 디스크를 공유합니다.세부 정보- 디스크의 새 경로를 선택할 수 있는 변경 스토리지 경로 창을 엽니다.그림 3.3.
스토리지 경로창 변경
게스트 가상 머신 복제
Clone (복제)을 클릭합니다.
4장. KVM 실시간 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
- 부하 분산 - 호스트 물리적 시스템이 과부하되거나 다른 호스트 물리적 시스템이 활용도가 낮은 사용량을 사용하여 게스트 가상 시스템을 호스트할 수 있습니다.
- 하드웨어 독립성 - 호스트 물리적 시스템에서 하드웨어 장치를 업그레이드, 추가 또는 제거해야 하는 경우 게스트 가상 머신을 다른 호스트 물리적 시스템으로 안전하게 재배치할 수 있습니다. 즉, 게스트 가상 머신은 하드웨어 개선을 위해 다운타임이 발생하지 않습니다.
- 에너지 절약 - 게스트 가상 머신은 다른 호스트 물리적 시스템에 재배포될 수 있으므로 전력을 절약하고 사용 기간에 비용을 절감할 수 있습니다.
- 지리적 마이그레이션 - 대기 시간이 낮거나 심각한 상황에서 게스트 가상 머신을 다른 위치로 이동할 수 있습니다.
4.1. 실시간 마이그레이션 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
마이그레이션 요구 사항
- 다음 프로토콜 중 하나를 사용하여 공유 스토리지에 설치된 게스트 가상 머신:
- 파이버 채널 기반 LUN
- iSCSI
- FCoE
- NFS
- GFS2
- SCSI RDMA 프로토콜(SCSI RCP): Infiniband 및 10GbE iWARP 어댑터에 사용되는 블록 내보내기 프로토콜
- 마이그레이션 플랫폼 및 버전은 표 4.1. “실시간 마이그레이션 호환성” 테이블에 대해 확인해야 합니다. 또한 Red Hat Enterprise Linux 6는 공유 스토리지에서 raw 및 qcow2 이미지를 사용하여 게스트 가상 시스템의 실시간 마이그레이션을 지원합니다.
- 두 시스템 모두 적절한 TCP/IP 포트가 열려 있어야 합니다. 방화벽을 사용하는 경우 자세한 포트 정보는 에서 확인할 https://access.redhat.com/site/documentation/ 수 있는 Red Hat Enterprise Linux Virtualization Security 가이드 를 참조하십시오.
- 공유 스토리지 매체를 내보내는 개별 시스템입니다. 마이그레이션에 사용되는 두 호스트 물리적 시스템 중 하나에 스토리지가 없어야 합니다.
- 공유 스토리지는 소스 및 대상 시스템의 동일한 위치에 마운트해야 합니다. 마운트된 디렉터리 이름은 동일해야 합니다. 이미지를 다른 경로를 사용하여 유지할 수 있지만 권장되지는 않습니다. virt-manager를 사용하여 마이그레이션을 수행하려는 경우 경로 이름이 동일해야 합니다. 그러나 virsh를 사용하여 마이그레이션을 수행하려는 경우 마이그레이션을 수행할 때 --xml 옵션 또는 pre-hooks와 함께 다른 네트워크 구성 및 마운트 디렉토리를 사용할 수 있습니다. 공유 스토리지가 없어도 --copy-storage-all (더 이상 사용되지 않음) 옵션을 사용하여 마이그레이션이 성공할 수 있습니다. prehooks 에 대한 자세한 내용은 libvirt.org 를 참조하고 XML 옵션에 대한 자세한 내용은 20장. 도메인 XML 조작 을 참조하십시오.
- 공용 bridge+tap 네트워크의 기존 게스트 가상 시스템에서 마이그레이션을 시도하는 경우 소스 및 대상 호스트 물리적 시스템이 동일한 네트워크에 있어야 합니다. 그렇지 않으면 마이그레이션 후 게스트 가상 머신 네트워크가 작동하지 않습니다.
- Red Hat Enterprise Linux 5 및 6에서는 KVM 게스트 가상 머신의 기본 캐시 모드가
none으로 설정되어 일치하지 않는 디스크 상태를 방지합니다. 캐시 옵션을none(예: virsh attach-disk 캐시 사용)으로 설정하면O_DIRECT플래그( Open syscall을 호출할 때)를 사용하여 모든 게스트 가상 시스템의 파일이 열리 므로 호스트 물리적 시스템의 캐시를 우회하고 게스트 가상 시스템에서 캐싱만 제공합니다. 캐시 모드를none으로 설정하면 잠재적인 불일치 문제를 방지하고 가상 시스템을 실시간으로 마이그레이션할 수 있습니다. 캐시를none으로 설정하는 방법에 대한 자세한 내용은 13.3절. “게스트에 스토리지 장치 추가” 을 참조하십시오.
libvirtd 서비스가 활성화되어 있는지 확인합니다(#service libvirtd 시작). 또한 효과적으로 마이그레이션하는 기능은 /etc/libvirt/libvirtd.conf 설정 파일의 매개 변수 설정에 따라 달라집니다.
절차 4.1. libvirtd.conf 구성
libvirtd.conf를 열려면 root로 명령을 실행해야 합니다.vim /etc/libvirt/libvirtd.conf
# vim /etc/libvirt/libvirtd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요에 따라 매개변수를 변경하고 파일을 저장합니다.
libvirtd서비스를 다시 시작합니다.service libvirtd restart
# service libvirtd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 실시간 마이그레이션 및 Red Hat Enterprise Linux 버전 호환성 링크 복사링크가 클립보드에 복사되었습니다!
| 마이그레이션 방법 | 릴리스 유형 | 예제 | 실시간 마이그레이션 지원 | 참고 |
|---|---|---|---|---|
| forward | 메이저 릴리스 | 5.x → 6.y | 지원되지 않음 | |
| forward | 마이너 릴리스 | 5.x → 5.y (y>x, x>=4) | 모두 지원됨 | 모든 문제가 보고되어야 합니다. |
| forward | 마이너 릴리스 | 6.x → 6.y (y>x, x>=0) | 모두 지원됨 | 모든 문제가 보고되어야 합니다. |
| 이전 | 메이저 릴리스 | 6.x → 5.y | 지원되지 않음 | |
| 이전 | 마이너 릴리스 | 5.x → 5.y (x>y,y>=4) | 지원됨 | 알려진 문제는 마이그레이션 문제 해결 에서 참조하십시오. |
| 이전 | 마이너 릴리스 | 6.x → 6.y (x>y, y>=0) | 지원됨 | 알려진 문제는 마이그레이션 문제 해결 에서 참조하십시오. |
마이그레이션 문제 해결
- SPICE 관련 문제 - Red Hat Enterprise Linux 6.0 → 6.1에서 마이그레이션할 때 SPICE에 호환되지 않는 변경 사항이 있음을 확인했습니다. 이러한 경우 클라이언트는 연결을 끊은 다음 다시 연결하여 오디오 및 비디오의 일시적인 손실을 초래할 수 있습니다. 이는 일시적인 것이며 모든 서비스가 다시 시작됩니다.
- USB 문제 - Red Hat Enterprise Linux 6.2는 마이그레이션 지원을 포함한 USB 기능을 추가했지만 USB 장치를 재설정하고 장치를 통해 실행되는 애플리케이션을 중단시키는 특정 경고가 발생하지 않았습니다. 이 문제는 Red Hat Enterprise Linux 6.4에서 해결되었으며 향후 버전에서는 발생하지 않아야 합니다. 6.4 이전 버전에서 이러한 문제가 발생하지 않도록하기 위해 USB 장치를 사용하는 동안 마이그레이션을 유도합니다.
- 마이그레이션 프로토콜 문제 - 이전 마이그레이션이 "알리지 않은 섹션 오류"로 끝나는 경우 마이그레이션 프로세스를 반복하면 일시적인 오류일 수 있으므로 마이그레이션 프로세스를 반복할 수 있습니다. 그렇지 않은 경우 문제를 보고하십시오.
네트워크 스토리지 구성
공유 스토리지를 구성하고 공유 스토리지에 게스트 가상 머신을 설치합니다.
4.4. virsh를 통한 실시간 KVM 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
virsh migrate --live GuestName DestinationURL
# virsh migrate --live GuestName DestinationURL
--live 옵션이 제거될 수 있습니다. 추가 옵션은 4.4.2절. “virsh migrate 명령에 대한 추가 옵션” 에 나열됩니다.
GuestName 매개변수는 마이그레이션할 게스트 가상 머신의 이름을 나타냅니다.
DestinationURL 매개변수는 대상 호스트 물리적 시스템의 연결 URL입니다. 대상 시스템은 동일한 하이퍼바이저를 사용하고 libvirt 가 실행되고 있는 동일한 버전의 Red Hat Enterprise Linux를 실행해야 합니다.
DestinationURL 매개변수는 다른 의미가 있습니다.
- 일반 마이그레이션:
DestinationURL은 소스 게스트 가상 머신에 표시된 대로 대상 호스트 물리적 시스템의 URL입니다. - 피어 투 피어 마이그레이션:
DestinationURL은 소스 호스트 물리적 시스템에서 표시된 대로 대상 호스트 물리적 시스템의 URL입니다.
/etc/hosts 파일에 있는 대상 호스트 물리적 시스템에 대한 항목이 필요합니다. 다음 예에 표시된 대로 이 파일에서 대상 호스트 물리적 시스템의 IP 주소 및 호스트 이름을 입력합니다. 이 예에서는 대상 호스트 물리적 시스템의 IP 주소와 호스트 이름을 대체합니다.
10.0.0.20 host2.example.com
10.0.0.20 host2.example.com
예: virsh를 사용한 실시간 마이그레이션
이 예에서는 host1.example.com 에서 host2.example.com 으로 마이그레이션합니다. 환경의 호스트 물리적 시스템 이름을 변경합니다. 이 예에서는 guest1-rhel6-64 라는 가상 머신을 마이그레이션합니다.
게스트 가상 머신이 실행 중인지 확인
소스 시스템host1.example.com에서guest1-rhel6-64가 실행 중인지 확인합니다.virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 running
[root@host1 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 가상 머신 마이그레이션
다음 명령을 실행하여 게스트 가상 머신을 대상host2.example.com으로 실시간 마이그레이션합니다. libvirt에 전체 액세스 권한이 필요함을 확인하기 위해 대상 URL의 끝에/system을 추가합니다.virsh migrate --live guest1-rhel6-64 qemu+ssh://host2.example.com/system
# virsh migrate --live guest1-rhel6-64 qemu+ssh://host2.example.com/systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 명령을 입력하면 대상 시스템의 루트 암호를 입력하라는 메시지가 표시됩니다.wait
마이그레이션은 게스트 가상 시스템의 로드 및 크기에 따라 다소 시간이 걸릴 수 있습니다. virsh 는 오류만 보고합니다. 게스트 가상 시스템은 완전히 마이그레이션될 때까지 소스 호스트 물리적 시스템에서 계속 실행됩니다.참고마이그레이션 중에 완료 백분율 표시 수는 프로세스가 완료되기 전에 여러 번 감소할 수 있습니다. 이는 마이그레이션을 시작한 후 변경된 소스 메모리 페이지를 다시 복사해야 하므로 전체 진행 상황을 다시 계산하기 때문입니다. 따라서 이 동작이 예상되며 마이그레이션에 문제가 표시되지 않습니다.게스트 가상 머신이 대상 호스트에 도착했는지 확인합니다.
대상 시스템host2.example.com에서guest1-rhel6-64가 실행 중인지 확인합니다.virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 running
[root@host2 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
virsh dumpxml Guest1 > Guest1.xml virsh -c qemu+ssh://<target-system-FQDN> define Guest1.xml virsh undefine Guest1
virsh dumpxml Guest1 > Guest1.xml
virsh -c qemu+ssh://<target-system-FQDN> define Guest1.xml
virsh undefine Guest1
4.4.1. virsh로 마이그레이션에 대한 추가 팁 링크 복사링크가 클립보드에 복사되었습니다!
- 절차 4.1. “libvirtd.conf 구성” 에 설명된 대로 libvirtd.conf 파일을 엽니다.
- 처리 제어 섹션을 찾습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow max_clients및max_workers매개 변수 설정을 변경합니다. 두 매개변수 모두에서 숫자가 동일해야 합니다.max_clients는 마이그레이션당 2개의 클라이언트를 사용하고max_workers는 종료 단계에서 수행 단계에서 대상의 작업자 1명과 대상의 작업자 1개를 소스에 사용합니다.중요max_clients및max_workers매개 변수 설정은 libvirtd 서비스에 대한 모든 게스트 가상 머신 연결에 적용됩니다. 즉, 동일한 게스트 가상 머신을 사용하고 동시에 마이그레이션을 수행하는 모든 사용자는max_clients및max_workers매개 변수 설정에 설정된 제한으로도 보류됩니다. 따라서 동시 실시간 마이그레이션을 수행하기 전에 최대값을 주의 깊게 고려해야 합니다.- 파일을 저장하고 서비스를 다시 시작합니다.참고시작되었지만 아직 인증되지 않은 ssh 세션이 너무 많기 때문에 마이그레이션 연결이 끊어지는 경우가 있을 수 있습니다. 기본적으로
sshd는 언제든지 "사전 인증됨"에 있는 세션만 10개를 허용합니다. 이 설정은 sshd 구성 파일의MaxStartups매개변수(/etc/ssh/sshd_config)에 의해 제어되며 일부 조정이 필요할 수 있습니다. DoS 공격을 방지하기 위해 제한 사항이 배치되고 일반적으로 리소스를 과도하게 사용할 수 있으므로 이 매개변수를 조정하는 작업은 주의해야 합니다. 이 값을 너무 높게 설정하면 목적을 무효화합니다. 이 매개변수를 변경하려면/etc/ssh/sshd_config파일을 편집하고 MaxStartups 행의 시작 위치에서 # 을 제거하고,10(기본값)을 더 높은 숫자로 변경합니다. 파일을 저장하고sshd서비스를 다시 시작하십시오. 자세한 내용은sshd_config매뉴얼 페이지를 참조하십시오.
4.4.2. virsh migrate 명령에 대한 추가 옵션 링크 복사링크가 클립보드에 복사되었습니다!
--live 외에도 virsh migrate는 다음 옵션을 허용합니다.
--direct- 직접 마이그레이션에 사용--p2p- 피어 투 피어 마이그레이션에 사용--tunnelled- 터널링된 마이그레이션에 사용--persistent- 대상 호스트 물리적 시스템의 영구 상태로 도메인을 유지합니다.--undefinesource- 소스 호스트 물리적 시스템에서 게스트 가상 머신 제거--suspend- 대상 호스트 물리적 머신의 일시 정지 상태로 둡니다.--change-protection- 마이그레이션이 진행되는 동안 도메인에 호환되지 않는 구성 변경이 수행되지 않도록 강제 적용합니다. 하이퍼바이저에서 이 옵션을 암시적으로 활성화하지만 하이퍼바이저에 변경 보호 지원이 없는 경우 이 옵션을 명시적으로 사용하여 마이그레이션을 거부할 수 있습니다.--unsafe- 모든 안전 절차를 무시하고 마이그레이션을 강제 실행합니다.--verbose- 발생 시 마이그레이션 진행 상황을 표시합니다.--abort-on-error- 마이그레이션 프로세스 중에 소프트 오류(예: I/O 오류)가 발생하는 경우 마이그레이션을 취소합니다.--migrateuri- 일반적으로 생략된 마이그레이션 URI입니다.--domain[string]- 도메인 이름, ID 또는 uuid--desturi[string]- 클라이언트(정상 마이그레이션) 또는 source(p2p 마이그레이션)에서 표시된 대로 대상 호스트 물리적 시스템의 연결 URI--migrateuri- 마이그레이션 URI, 일반적으로 생략할 수 있습니다.--timeout[seconds]- 실시간 마이그레이션 카운터가 N초를 초과하면 게스트 가상 머신이 강제로 일시 중지됩니다. 실시간 마이그레이션에서만 사용할 수 있습니다. 제한 시간이 시작되면 일시 중단된 게스트 가상 머신에서 마이그레이션이 계속됩니다.--DNAME [string] - 마이그레이션 중에 게스트 가상 머신의 이름을 새 이름으로 변경합니다(지원되는 경우)--XML - 표시된 파일 이름은 기본 스토리지에 액세스하는 소스와 대상 간의 이름 지정 차이점과 같이 도메인 XML의 호스트별 부분에 대한 더 큰 변경 집합을 제공하기 위해 대상에 사용할 대체 XML 파일을 제공하는 데 사용할 수 있습니다. 이 옵션은 일반적으로 생략됩니다.
4.5. virt-manager로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
virt-manager를 엽니다.
virt-manager 를 엽니다. 메인 메뉴 모음에서 → → 를 선택하여 virt-manager 를 시작합니다.그림 4.1. virt-Manager 메인 메뉴
대상 호스트 물리적 머신에 연결
메뉴를 클릭하여 대상 호스트 물리적 시스템에 연결한 다음 를 클릭합니다.그림 4.2. 연결 추가 창을 엽니다.
연결 추가
연결 추가 창이 나타납니다.그림 4.3. 대상 호스트 물리적 머신에 연결 추가
다음 세부 정보를 입력합니다.- 하이퍼바이저: 을 선택합니다.
- 방법: 연결 방법을 선택합니다.
- username: 원격 호스트 물리적 머신의 사용자 이름을 입력합니다.
- hostname: 원격 호스트 물리적 머신의 호스트 이름을 입력합니다.
버튼을 클릭합니다. 이 예에서는 SSH 연결이 사용되므로 다음 단계에서 지정된 사용자의 암호를 입력해야 합니다.그림 4.4. 암호 입력
게스트 가상 머신 마이그레이션
소스 호스트 물리적 시스템 내의 게스트 목록을 열고(호스트 이름의 왼쪽에 있는 작은 삼각형을 클릭) 마이그레이션할 게스트(이 예제에서는guest1-rhel 6-64)를 마우스 오른쪽 버튼으로 클릭하고 을 클릭합니다.그림 4.5. 마이그레이션할 게스트 선택
(새 호스트) 필드에서 드롭다운 목록을 사용하여 guest 가상 머신을 마이그레이션할 호스트 물리적 시스템을 선택하고 마이그레이션을 .그림 4.6. 대상 호스트 물리적 시스템 선택 및 마이그레이션 프로세스 시작
진행률 창이 나타납니다.그림 4.7. 진행률 창
virt-manager 가 대상 호스트에서 실행 중인 새로 마이그레이션된 게스트 가상 머신을 표시합니다. 이제 소스 호스트 물리적 시스템에서 실행 중인 게스트 가상 머신이 Shutoff 상태에 나열됩니다.그림 4.8. 대상 호스트 물리적 머신에서 실행 중인 마이그레이션된 게스트 가상 머신
선택 사항 - 호스트 물리적 머신의 스토리지 세부 정보 보기
메뉴에서 연결 세부 정보를 클릭하면 정보 창이 표시됩니다.탭을 클릭합니다. 대상 호스트 물리적 시스템의 iSCSI 대상 세부 정보가 표시됩니다. 마이그레이션된 게스트 가상 머신은 스토리지를 사용하여 로 나열됩니다.그림 4.9. 스토리지 세부 정보
이 호스트는 다음 XML 구성으로 정의되었습니다.그림 4.10. 대상 호스트 물리적 머신의 XML 구성
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5장. 원격 게스트 관리 링크 복사링크가 클립보드에 복사되었습니다!
5.1. SSH를 사용한 원격 관리 링크 복사링크가 클립보드에 복사되었습니다!
- 가상 머신 관리를 위해 원격 시스템에 root가 로그인해야 합니다.
- 초기 연결 설정 프로세스가 느릴 수 있습니다.
- 모든 호스트 또는 게스트에서 사용자의 키를 취소하는 표준 또는 간단한 방법은 없습니다.
- SSH는 원격 머신 수가 많으면 제대로 확장되지 않습니다.
- openssh
- openssh-askpass
- openssh-clients
- openssh-server
virt-manager에 대한 암호 없는 또는 암호 관리 SSH 액세스 구성
다음 지침은 처음부터 시작 중이며 SSH 키가 아직 설정되어 있지 않다고 가정합니다. SSH 키를 설정하고 다른 시스템에 복사한 경우 이 절차를 건너뛸 수 있습니다.
선택 사항: 사용자 변경
필요한 경우 사용자를 변경합니다. 이 예에서는 로컬 root 사용자를 사용하여 다른 호스트 및 로컬 호스트를 원격으로 관리합니다.su -
$ su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 키 쌍 생성
virt-manager 가 사용되는 시스템에서 공개 키 쌍을 생성합니다. 이 예에서는~/.ssh/디렉터리의 기본 키 위치를 사용합니다.ssh-keygen -t rsa
# ssh-keygen -t rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 원격 호스트에 키 복사
암호 없이 원격 로그인하거나 암호를 사용하는 경우 SSH 키를 관리 중인 시스템에 배포해야 합니다. ssh-copy-id 명령을 사용하여 제공된 시스템 주소(예:root@host2.example.com)에서 root 사용자에게 키를 복사합니다.ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2.example.com root@host2.example.com's password:
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2.example.com root@host2.example.com's password:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 ssh root@host2.example.com 명령을 사용하여 머신에 로그인하고.ssh/authorized_keys파일을 확인하여 예기치 않은 키가 추가되지 않았는지 확인합니다.필요에 따라 다른 시스템에 대해 반복합니다.선택사항: ssh-agent에 암호를 추가합니다.
아래 지침은 기존 ssh-agent에 암호를 추가하는 방법을 설명합니다. ssh-agent가 실행되고 있지 않으면 실행되지 않습니다. 오류 또는 충돌을 방지하려면 SSH 매개 변수가 올바르게 설정되어 있는지 확인합니다. 자세한 내용은 Red Hat Enterprise Linux 배포 가이드 를 참조하십시오.필요한 경우 SSH 키의 암호를 ssh-agent 에 추가합니다. 로컬 호스트에서 다음 명령을 사용하여 암호 없이 로그인할 수 있도록 암호를 추가합니다.ssh-add ~/.ssh/id_rsa
# ssh-add ~/.ssh/id_rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 키가 원격 시스템에 추가됩니다.
libvirt 데몬(libvirtd)
libvirt 데몬은 가상 머신을 관리하기 위한 인터페이스를 제공합니다. 관리를 필요로 하는 모든 원격 호스트에 libvirtd 데몬이 설치되어 실행되고 있어야 합니다.
ssh root@somehost chkconfig libvirtd on service libvirtd start
$ ssh root@somehost
# chkconfig libvirtd on
# service libvirtd start
libvirtd 및 SSH 가 구성된 후 가상 시스템에 원격으로 액세스하고 관리할 수 있어야 합니다. 이 시점에서 VNC 를 사용하여 게스트에 액세스할 수도 있습니다.
virt-manager를 사용하여 원격 호스트에 액세스
virt-manager GUI 도구를 사용하여 원격 호스트를 관리할 수 있습니다. 암호 없이 로그인할 수 있으려면 SSH 키는 virt-manager를 실행하는 사용자에 속해야 합니다.
- virt-manager를 시작합니다.
- -> 메뉴를 엽니다.
그림 5.1. 연결 메뉴 추가
- 드롭다운 메뉴를 사용하여 하이퍼바이저 유형을 선택하고, 확인란을 클릭하여 Connection (이 경우 SSH를 통한 원격 터널)를 열고 원하는 입력한 다음 클릭합니다.
5.2. TLS 및 SSL을 통한 원격 관리 링크 복사링크가 클립보드에 복사되었습니다!
절차 5.1. TLS 관리를 위한 인증 기관(CA) 키 생성
- 시작하기 전에 certtool 유틸리티가 설치되었는지 확인합니다. 그렇지 않은 경우:
yum install gnutls-utils
# yum install gnutls-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 개인 키를 생성합니다.
certtool --generate-privkey > cakey.pem
# certtool --generate-privkey > cakey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 키가 생성되면 다음 단계는 서명 파일을 작성하여 키를 자체 서명할 수 있도록 하는 것입니다. 이렇게 하려면 서명 세부 정보가 있는 파일을 생성하고 이름을
ca.info로 지정합니다. 이 파일에는 다음이 포함되어야 합니다.vim ca.info
# vim ca.infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow cn = Name of your organization ca cert_signing_key
cn = Name of your organization ca cert_signing_keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 자체 서명 키를 생성합니다.
certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
# certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 파일이 생성되면 rm 명령을 사용하여 ca.info 파일을 삭제할 수 있습니다. 생성 프로세스에서 발생하는 파일의 이름은cacert.pem입니다. 이 파일은 공개 키(certificate)입니다. 로드된 파일cakey.pem은 개인 키입니다. 이 파일은 공유 공간에 보관해서는 안 됩니다. 이 키를 비공개로 유지합니다. /etc/pki/CA/cacert.pem디렉터리의 모든 클라이언트 및 서버에cacert.pem인증 인증 인증서 파일을 설치하여 CA에서 발급한 인증서를 신뢰할 수 있도록 합니다. 이 파일의 내용을 보려면 다음을 실행합니다.certtool -i --infile cacert.pem
# certtool -i --infile cacert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이는 CA를 설정하는 데 필요한 모든 것입니다. 클라이언트 및 서버의 인증서를 발급하려면 CA의 개인 키를 안전하게 보관해야 합니다.
절차 5.2. 서버 인증서 발급
qemu://mycommonname/system 을 사용하여 서버에 연결하므로 CN 필드가 동일해야 합니다.
- 서버에 대한 개인 키를 만듭니다.
certtool --generate-privkey > serverkey.pem
# certtool --generate-privkey > serverkey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow server.info.info라는 템플릿 파일을 먼저 생성하여 CA의 개인 키 서명을 생성합니다. CN이 서버의 호스트 이름과 동일하게 설정되어 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 인증서를 생성합니다.
certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pem
# certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 그러면 두 개의 파일이 생성됩니다.
- serverkey.pem - 서버의 개인 키
- servercert.pem - 서버의 공개 키
개인 키의 위치를 비밀로 유지합니다. 파일의 내용을 보려면 다음 명령을 수행합니다.certtool -i --inifile servercert.pem
# certtool -i --inifile servercert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 파일을 열 때CN=매개변수는 이전에 설정한 CN과 동일해야 합니다. 예를 들면mycommonname입니다. - 다음 위치에 두 파일을 설치합니다.
serverkey.pem- 서버의 개인 키입니다. 이 파일을 다음 위치에 배치합니다./etc/pki/libvirt/private/serverkey.pemservercert.pem- 서버의 인증서입니다. 서버의 다음 위치에 설치합니다./etc/pki/libvirt/servercert.pem
절차 5.3. 클라이언트 인증서 발급
- 모든 클라이언트(예: virt-manager와 같은 libvirt에 연결된 모든 프로그램)의 경우 X.509 Distinguished Name(DN)을 적절한 이름으로 설정해야 합니다. 이는 기업 차원에서 결정해야 합니다.예를 들어 다음 정보가 사용됩니다.
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_clientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 프로세스는 절차 5.2. “서버 인증서 발급” 와 매우 유사하지만 다음과 같은 예외가 명시되어 있습니다. - 다음 명령을 사용하여 개인 키를 만듭니다.
certtool --generate-privkey > clientkey.pem
# certtool --generate-privkey > clientkey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 먼저
client.info.info라는 템플릿 파일을 생성하여 CA의 개인 키 서명을 생성합니다. 파일에는 다음 내용이 포함되어야 합니다(지역/위치를 반영하도록 필드를 사용자 지정해야 함).Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 인증서에 서명합니다.
certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem
# certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 클라이언트 머신에 인증서를 설치합니다.
cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem cp clientcert.pem /etc/pki/libvirt/clientcert.pem
# cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem # cp clientcert.pem /etc/pki/libvirt/clientcert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 전송 모드 링크 복사링크가 클립보드에 복사되었습니다!
TLS(Transport Layer Security)
SSL 3.1(Transport Layer Security TLS 1.0)이 인증되고 암호화된 TCP/IP 소켓은 일반적으로 공용 포트 번호에서 수신 대기합니다. 이를 사용하려면 클라이언트 및 서버 인증서를 생성해야 합니다. 표준 포트는 16514입니다.
UNIX 소켓
UNIX 도메인 소켓은 로컬 시스템에서만 액세스할 수 있습니다. 소켓은 암호화되지 않으며 인증을 위해 UNIX 권한 또는 SELinux를 사용합니다. 표준 소켓 이름은 /var/run/libvirt/libvirt-sock 및 /var/run/libvirt/libvirt-sock-ro 입니다(읽기 전용 연결의 경우).
SSH
SSH(Secure Shell 프로토콜) 연결을 통해 전송. Netcat( nc 패키지)이 설치되어 있어야 합니다. libvirt 데몬(libvirtd)이 원격 시스템에서 실행되고 있어야 합니다. SSH 액세스를 위해 포트 22를 열어야 합니다. 일종의 SSH 키 관리(예: ssh-agent 유틸리티)를 사용해야 합니다. 그렇지 않으면 암호를 입력하라는 메시지가 표시됩니다.
ext
ext 매개 변수는 libvirt 범위를 벗어나는 방법으로 원격 시스템에 연결할 수 있는 모든 외부 프로그램에 사용됩니다. 이 매개변수는 지원되지 않습니다.
TCP
암호화되지 않은 TCP/IP 소켓. 프로덕션 용도는 권장되지 않지만 일반적으로 비활성화되어 있지만 신뢰할 수 있는 네트워크를 통해 테스트하거나 사용할 수 있습니다. 기본 포트는 16509입니다.
원격 URI
URI(Uniform Resource Identifier)는 virsh 및 libvirt 에서 원격 호스트에 연결하는 데 사용됩니다. URI를 virsh 명령의 --connect 매개 변수와 함께 사용하여 원격 호스트에서 단일 명령 또는 마이그레이션을 실행할 수도 있습니다. 원격 URI는 일반 로컬 URI를 사용하고 호스트 이름 또는 전송 이름을 추가하여 구성됩니다. 'remote'의 URI 체계를 사용하는 특수한 경우 는 원격 libvirtd 서버에 최적의 하이퍼바이저 드라이버를 검색하도록 지시합니다. 로컬 연결에 대해 NULL URI를 전달하는 것과 같습니다.
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
- qemu://hostname/
- xen://hostname/
- xen+ssh://hostname/
원격 관리 매개변수의 예
- SSH 전송 및 SSH 사용자 이름
virtuser를 사용하여host2라는 원격 KVM 호스트에 연결합니다. 각각에 대한 연결 명령은 [< name>] [-readonly] 입니다. 여기서 < name >은 여기에 설명된 대로 유효한 URI입니다. virsh connect 명령에 대한 자세한 내용은 다음을 참조하십시오. 14.1.5절. “연결”qemu+ssh://virtuser@hot2/
qemu+ssh://virtuser@hot2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - TLS를 사용하여
host2라는 호스트의 원격 KVM 하이퍼바이저에 연결합니다.qemu://host2/
qemu://host2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
테스트 예
- 비표준 UNIX 소켓을 사용하여 로컬 KVM 하이퍼바이저에 연결합니다. 이 경우 UNIX 소켓의 전체 경로는 명시적으로 제공됩니다.
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sockCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 포트 5000에서 IP 주소가 10.1.1.10인 서버에 암호화되지 않은 TCP/IP 연결을 사용하여 libvirt 데몬에 연결합니다. 기본 설정으로 테스트 드라이버를 사용합니다.
test+tcp://10.1.1.10:5000/default
test+tcp://10.1.1.10:5000/defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 URI 매개변수
추가 매개 변수를 원격 URI에 추가할 수 있습니다. 표 5.1. “추가 URI 매개변수” 아래 표는 인식된 매개변수를 다룹니다. 다른 모든 매개변수는 무시됩니다. 매개 변수 값은 URI로 이스케이프되어야 합니다(즉, 매개 변수 및 특수 문자가 URI 형식으로 변환되기 전에 물음표(?)를 추가합니다.
| 이름 | 전송 모드 | 설명 | 사용 예 |
|---|---|---|---|
| name | 모든 모드 | 이름이 원격 virConnectOpen 기능에 전달되었습니다. 이름은 일반적으로 원격 URI에서 전송, 호스트 이름, 포트 번호, 사용자 이름 및 추가 매개 변수를 제거하여 구성되지만, 매우 복잡한 경우 이름을 명시적으로 제공하는 것이 더 좋습니다. | name=qemu:///system |
| command | SSH 및 ext | 외부 명령 ext 전송에는 이 작업이 필요합니다. ssh의 경우 기본값은 ssh입니다. PATH가 명령에 대해 검색됩니다. | command=/opt/openssh/bin/ssh |
| socket | Unix 및 ssh | 기본값을 재정의하는 UNIX 도메인 소켓의 경로입니다. ssh 전송의 경우 원격 netcat 명령에 전달됩니다(넷cat 참조). | socket=/opt/libvirt/run/libvirt/libvirt-sock |
| netcat | ssh |
netcat 명령을 사용하여 원격 시스템에 연결할 수 있습니다. 기본 netcat 매개변수는 nc 명령을 사용합니다. SSH 전송의 경우 libvirt는 아래 양식을 사용하여 SSH 명령을 구성합니다.
command -p port [-l username] hostname
Netcat -U socket
포트,username 및 hostname 매개 변수는 원격 URI의 일부로 지정할 수 있습니다. 명령,netcat 및 socket 은 다른 추가 매개 변수에서 제공됩니다.
| netcat=/opt/netcat/bin/nc |
| no_verify | tls | 0이 아닌 값으로 설정하면 클라이언트 인증서가 비활성화됩니다. 클라이언트의 인증서 또는 IP 주소를 서버 확인을 비활성화하려면 libvirtd 구성을 변경해야 합니다. | no_verify=1 |
| no_tty | ssh | 0이 아닌 값으로 설정하면 원격 머신에 자동으로 로그인할 수 없는 경우 암호를 요청하는 ssh가 중지됩니다. . 터미널 에 액세스할 수 없는 경우 이 값을 사용합니다. | no_tty=1 |
6장. KVM으로 과다 할당 링크 복사링크가 클립보드에 복사되었습니다!
6.1. 메모리 과다 할당 링크 복사링크가 클립보드에 복사되었습니다!
6.2. 가상화된 CPU 오버 커밋 링크 복사링크가 클립보드에 복사되었습니다!
7장. KSM 링크 복사링크가 클립보드에 복사되었습니다!
qemu-kvm 프로세스의 메모리만 상속합니다. 게스트 가상 머신이 실행되면 게스트가 동일한 운영 체제 또는 애플리케이션을 실행할 때 게스트 가상 머신 운영 체제 이미지의 콘텐츠를 공유할 수 있습니다.
/sys/kernel/mm/ksm/merge_across_nodes 튜닝 가능 항목을 0 으로 변경합니다. 커널 메모리 회계 통계는 대량의 교차 노드 병합 후 결국 서로 모순될 수 있습니다. 따라서 KSM 데몬에서 대량의 메모리를 병합한 후 numad가 혼동될 수 있습니다. 시스템에 사용 가능한 메모리가 많은 경우 KSM 데몬을 끄고 비활성화하여 더 높은 성능을 얻을 수 있습니다. NUMA에 대한 자세한 내용은 Red Hat Enterprise Linux 성능 튜닝 가이드 를 참조하십시오.
ksm서비스는 KSM 커널 스레드를 시작하고 중지합니다.ksmtuned서비스는 동일한 페이지 병합을 동적으로 관리하면서ksm을 제어하고 조정합니다.ksmtuned서비스는ksm을 시작하고 메모리 공유가 필요하지 않은 경우ksm서비스를 중지합니다.ksmtuned서비스에 새 게스트가 생성 또는 삭제될 때 실행할retune매개변수가 있어야 합니다.
KSM 서비스
ksm 서비스는 qemu-kvm 패키지에 포함되어 있습니다. KSM은 Red Hat Enterprise Linux 6에서 기본적으로 꺼져 있습니다. 그러나 Red Hat Enterprise Linux 6를 KVM 호스트 물리적 시스템으로 사용하는 경우 ksm/ksmtuned 서비스를 통해 켜질 수 있습니다.
ksm 서비스가 시작되지 않으면 KSM은 2000 페이지만 공유합니다. 이 기본값은 낮으며 제한된 메모리 저장 이점을 제공합니다.
ksm 서비스가 시작되면 KSM은 호스트 물리적 시스템 기본 메모리의 절반까지 공유합니다. KSM이 더 많은 메모리를 공유할 수 있도록 ksm 서비스를 시작합니다.
service ksm start Starting ksm: [ OK ]
# service ksm start
Starting ksm: [ OK ]
ksm 서비스는 기본 시작 시퀀스에 추가할 수 있습니다. chkconfig 명령을 사용하여 ksm 서비스를 영구적으로 만듭니다.
chkconfig ksm on
# chkconfig ksm on
KSM Tuning Service
ksmtuned 서비스에는 옵션이 없습니다. ksmtuned 서비스 루프는 ksm 을 조정합니다. 게스트 가상 머신을 만들거나 삭제할 때 ksmtuned 서비스는 libvirt에서 알림을 받습니다.
service ksmtuned start Starting ksmtuned: [ OK ]
# service ksmtuned start
Starting ksmtuned: [ OK ]
retune 매개변수를 사용하여 ksmtuned 서비스를 조정할 수 있습니다. retune 매개변수는 ksmtuned 에 튜닝 기능을 수동으로 실행하도록 지시합니다.
제한- 활성화 임계값(KB)입니다. 모든qemu-kvm프로세스의 합계에 추가된 증가 값이 총 시스템 메모리를 초과하는 경우 KSM 주기가 트리거됩니다.이 매개변수는KSM_THRES_COEF에 정의된 백분율의 kbytes와 동일합니다.
/etc/ksmtuned.conf 파일은 ksmtuned 서비스의 구성 파일입니다. 아래의 파일 출력은 기본 ksmtuned.conf 파일입니다.
KSM 변수 및 모니터링
KSM은 모니터링 데이터를 /sys/kernel/mm/ksm/ 디렉토리에 저장합니다. 이 디렉터리의 파일은 커널에 의해 업데이트되며 KSM 사용량 및 통계에 대한 정확한 기록입니다.
/etc/ksmtuned.conf 파일의 설정 가능한 변수이기도 합니다.
/sys/kernel/mm/ksm/ 파일
- full_scans
- 전체 검사 실행.
- pages_shared
- 총 페이지 공유.
- pages_sharing
- 현재 공유된 페이지입니다.
- pages_to_scan
- 페이지를 스캔하지 않습니다.
- pages_unshared
- 페이지가 더 이상 공유되지 않습니다.
- pages_volatile
- 휘발성 페이지 수입니다.
- run
- KSM 프로세스가 실행 중인지 여부
- sleep_millisecs
- 수면 밀리초입니다.
DEBUG=1 행이 /etc/ksmtuned.conf 파일에 추가되는 경우 KSM 튜닝 활동은 /var/log/ksmtuned 로그 파일에 저장됩니다. 로그 파일 위치는 LOGFILE 매개 변수를 사용하여 변경할 수 있습니다. 로그 파일 위치 변경은 권장되지 않으며 SELinux 설정을 특별한 설정이 필요할 수 있습니다.
KSM 비활성화
KSM에는 특정 환경 또는 물리적 머신 시스템에 비해 너무 커질 수 있는 성능 오버헤드가 있습니다.
ksmtuned 및 ksm 서비스를 중지하여 비활성화할 수 있습니다. 서비스를 중지하면 KSM이 비활성화되지만 다시 시작한 후에는 유지되지 않습니다.
chkconfig ksm off chkconfig ksmtuned off
# chkconfig ksm off
# chkconfig ksmtuned off
8장. 고급 게스트 가상 시스템 관리 링크 복사링크가 클립보드에 복사되었습니다!
8.1. 제어 그룹(cgroups) 링크 복사링크가 클립보드에 복사되었습니다!
8.2. 대규모 페이지 지원 링크 복사링크가 클립보드에 복사되었습니다!
소개
x86 CPU는 일반적으로 4kB 페이지의 메모리를 처리하지만 대규모 페이지라는 더 큰 페이지를 사용할 수 있습니다. TLB(Transaction Lookaside Buffer) 에 대해 CPU 캐시 적중을 늘려 성능을 개선하기 위해 KVM 게스트를 대규모 페이지 메모리 지원과 함께 배포할 수 있습니다. 대규모 페이지는 특히 대규모 메모리 및 메모리 집약적 워크로드의 경우 성능을 크게 향상시킬 수 있습니다. Red Hat Enterprise Linux 6은 대규모 페이지 사용을 통해 페이지 크기를 늘려 많은 양의 메모리를 보다 효과적으로 관리할 수 있습니다.
투명한 대규모 페이지
THP( 투명한 대규모 페이지 )는 애플리케이션에 필요한 TLB 항목을 줄이는 커널 기능입니다. 모든 여유 메모리를 캐시로 사용할 수도 있으므로 성능이 향상됩니다.
qemu.conf 파일의 특별한 구성이 필요하지 않습니다. 대규모 페이지는 /sys/kernel/mm/redhat_transparent_hugepage/enabled 가 항상 로 설정된 경우 기본적으로 사용됩니다.
hugetlbfs 기능을 사용하지 않습니다. 그러나 hugetlbfs를 사용하지 않는 경우 KVM은 일반 4kB 페이지 크기 대신 투명한 대규모 페이지를 사용합니다.
8.3. Hyper-V Hypervisor에서 Red Hat Enterprise Linux를 게스트 가상 머신으로 실행 링크 복사링크가 클립보드에 복사되었습니다!
- 업그레이드된 VMBUS 프로토콜 - VMBUS 프로토콜이 Windows 8 수준으로 업그레이드되었습니다. 이 작업의 일환으로 이제 게스트에서 사용 가능한 모든 가상 CPU에서 VMBUS 인터럽트를 처리할 수 있습니다. 또한 Red Hat Enterprise Linux 게스트 가상 머신과 Windows 호스트 물리적 머신 간의 신호 지정 프로토콜이 최적화되었습니다.
- 합성 프레임 버퍼 드라이버 - Red Hat Enterprise Linux 데스크탑 사용자를 위해 향상된 그래픽 성능과 뛰어난 해상도를 제공합니다.
- 실시간 가상 머신 백업 지원 - 라이브 Red Hat Enterprise Linux 게스트 가상 머신에 대한 중단없는 백업 지원
- 고정된 크기의 Linux VHD를 동적 확장 - 라이브 마운트 크기 Red Hat Enterprise Linux VHDs를 확장할 수 있습니다.
8.4. 게스트 가상 머신 메모리 할당 링크 복사링크가 클립보드에 복사되었습니다!
바이트의b또는 바이트KBfor kilobytes (10 또는 1,000 바이트 블록)kibibytes의 경우 kibibytes 1024바이트의 K 또는KiBMBfor megabytes (106 또는 1,000,000 바이트 블록)- 메비바이트의 경우 m 또는
MiB(20 또는 blocks 1,048,576 바이트) GBfor gigabytes (109 또는 1,000,000,000 바이트 블록)- 기비바이트의 경우
G또는GiB(230 또는 1,073,741,824 바이트) TBfor terabytes (1012 또는 1,000,000 바이트 블록)- tebibytes의 경우 t or
TiB(240 또는 1,099,511,627,776 바이트)
메모리 단위 에 따라 결정됩니다. 기본값은 kibibytes(KiB) 단위로 지정된 값이 1024바이트의 2개 또는 블록으로 곱한 단위입니다.
dumpCore 를 사용하여 게스트 가상 머신의 메모리를 생성된 코어dump(dumpCore='on')에 포함해야 하는지 여부를 제어하는 데 사용할 수 있습니다(dumpCore='off'). 기본 설정은 에 있으므로 매개변수가 off 로 설정되지 않은 경우 게스트 가상 머신 메모리가 coredump 파일에 포함됩니다.
currentMemory 속성은 게스트 가상 머신에 대한 실제 메모리 할당을 결정합니다. 이 값은 최대 할당보다 작을 수 있으며, 이를 통해 게스트 가상 머신 메모리를 즉시 늘릴 수 있습니다. 이 값을 생략하면 기본값은 memory 요소와 동일한 값입니다. unit 속성은 메모리와 동일하게 작동합니다.
8.5. 게스트 가상 머신 자동 시작 링크 복사링크가 클립보드에 복사되었습니다!
TestServer 를 설정하여 호스트 물리적 시스템이 부팅될 때 자동으로 시작됩니다.
virsh autostart TestServer Domain TestServer marked as autostarted
# virsh autostart TestServer
Domain TestServer marked as autostarted
--disable 매개 변수를 사용합니다.
virsh autostart --disable TestServer Domain TestServer unmarked as autostarted
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
8.6. 게스트 가상 머신에 대한 SMART 디스크 모니터링 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
service smartd stop chkconfig --del smartd
# service smartd stop
# chkconfig --del smartd
8.7. VNC 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
~/.vnc/xstartup 파일을 만든 다음 편집하여 vncserver 가 시작될 때마다 GNOME 세션을 시작합니다. vncserver 스크립트를 처음 실행하는 경우 VNC 세션에 사용하려는 암호를 요청합니다. vnc 서버 파일에 대한 자세한 내용은 Red Hat Enterprise Linux 설치 가이드 를 참조하십시오.
8.8. 새로운 고유 MAC 주소 생성 링크 복사링크가 클립보드에 복사되었습니다!
macgen.py 로 저장합니다. 이제 해당 디렉토리에서 ./macgen.py 를 사용하여 스크립트를 실행할 수 있으며 새 MAC 주소를 생성합니다. 샘플 출력은 다음과 같습니다.
./macgen.py 00:16:3e:20:b0:11
$ ./macgen.py
00:16:3e:20:b0:11
8.8.1. 게스트 가상 머신용 새 MAC을 생성하는 또 다른 방법 링크 복사링크가 클립보드에 복사되었습니다!
echo 'import virtinst.util ; print\ virtinst.util.uuidToString(virtinst.util.randomUUID())' | python echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
# echo 'import virtinst.util ; print\
virtinst.util.uuidToString(virtinst.util.randomUUID())' | python
# echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
8.9. 게스트 가상 머신 응답 시간 개선 링크 복사링크가 클립보드에 복사되었습니다!
- 메모리 과다 할당.
- 프로세서 사용량이 높은 오버 커밋된 메모리
- 다른 ( qemu-kvm 프로세스가 아님) 호스트 물리적 시스템에서 프로세스를 사용 중이거나 정지했습니다.
8.10. libvirt를 사용한 가상 머신 타이머 관리 링크 복사링크가 클립보드에 복사되었습니다!
<clock> 요소는 게스트 가상 시스템 시계가 호스트 물리적 시스템 클럭과 어떻게 동기화되는지 결정하는 데 사용됩니다. clock 요소에는 다음과 같은 속성이 있습니다.
오프셋은 게스트 가상 머신 클럭이 호스트 실제 머신 클럭에서 오프셋되는 방식을 결정합니다. offset 속성에는 다음과 같은 가능한 값이 있습니다.Expand 표 8.1. 특성 값 오프셋 값 설명 utc 부팅 시 게스트 가상 머신 클럭이 UTC에 동기화됩니다. 현지 시간 게스트 가상 머신 클럭은 부팅될 때 호스트 물리적 시스템의 구성된 시간대(있는 경우)에 동기화됩니다. timezone 게스트 가상 머신 클럭은 timezone특성으로 지정된 지정된 시간대에 동기화됩니다.변수 게스트 가상 머신 클럭은 UTC의 임의의 오프셋에 동기화됩니다. UTC를 기준으로 하는 delta는 조정특성을 사용하여 초 단위로 지정됩니다. 게스트 가상 머신은 시간 경과에 따라 RTC(Real Time Clock)를 자유롭게 조정할 수 있으며 다음 재부팅 시에도 적용됩니다. 이는utc모드와 달리, 각 재부팅 시 RTC 조정이 손실됩니다.참고값 utc 는 기본적으로 가상 머신에서 클럭 오프셋으로 설정됩니다. 그러나 게스트 가상 머신 클럭이 localtime 값으로 실행되는 경우 게스트 가상 머신 클럭을 호스트 물리적 시스템 클럭과 동기화하려면 클럭 오프셋을 다른 값으로 변경해야 합니다.timezone속성은 게스트 가상 시스템 클럭에 사용되는 시간대를 결정합니다.조정속성은 게스트 가상 머신 클럭 동기화를 위해 delta를 제공합니다. UTC를 기준으로 하는 시간(초)입니다.
예 8.1. 항상 UTC와 동기화
<clock offset="utc" />
<clock offset="utc" />
예 8.2. 항상 호스트 실제 시스템 시간대와 동기화
<clock offset="localtime" />
<clock offset="localtime" />
예 8.3. 임의의 시간대에 동기화
<clock offset="timezone" timezone="Europe/Paris" />
<clock offset="timezone" timezone="Europe/Paris" />
예 8.4. UTC + 임의의 오프셋과 동기화
<clock offset="variable" adjustment="123456" />
<clock offset="variable" adjustment="123456" />
8.10.1. 클럭을 위한 타이머 하위 요소 링크 복사링크가 클립보드에 복사되었습니다!
이름만 필요하며 다른 모든 속성은 선택 사항입니다.
name 속성은 사용할 시간 소스의 유형을 지시하며 다음 중 하나일 수 있습니다.
| 값 | 설명 |
|---|---|
| pit | Custom Interval timer - 주기적인 인터럽트가 있는 타이머입니다. |
| rtc | 실시간 시계 - 주기적인 인터럽트를 사용하여 지속적으로 실행되는 타이머입니다. |
| tsc | Time Stamp counter - 재설정 이후의 틱 수를 계산하고, 인터럽트가 없습니다. |
| kvmclock | KVM 클럭 - KVM 게스트 가상 머신에 권장되는 클럭 소스입니다. KVM pvclock 또는 kvm-clock을 사용하면 게스트 가상 머신이 호스트 물리적 시스템의 월 시계 시간을 읽을 수 있습니다. |
8.10.2. track 링크 복사링크가 클립보드에 복사되었습니다!
track 속성은 타이머를 통해 추적되는 항목을 지정합니다. 이름 값 rtc 에만 유효합니다.
| 값 | 설명 |
|---|---|
| boot | 이전 호스트 물리적 머신 옵션에 해당하며 지원되지 않는 추적 옵션입니다. |
| 게스트 | RTC는 항상 게스트 가상 머신 시간을 추적합니다. |
| wall | RTC는 항상 호스트 시간을 추적합니다. |
8.10.3. tickpolicy 링크 복사링크가 클립보드에 복사되었습니다!
tickpolicy 특성은 게스트 가상 머신에 눈금을 전달하는 데 사용되는 정책을 할당합니다. 다음 값이 허용됩니다.
| 값 | 설명 |
|---|---|
| delay | 계속 정상적으로 전달하십시오(추적이 지연됨). |
| catchup | 더 높은 비율로 가져와 차지할 수 있습니다. |
| 병합 | 하나의 진드기는 하나의 진드로 병합되었습니다. |
| 삭제 | 누락된 모든 틱은 모두 삭제됩니다. |
8.10.4. 빈도, 모드 및 현재 링크 복사링크가 클립보드에 복사되었습니다!
빈도 속성은 고정 빈도를 설정하는 데 사용되며 Hz로 측정됩니다. 이 속성은 name 요소에 tsc 값이 있는 경우에만 관련이 있습니다. 다른 모든 타이머는 고정 빈도(pit,rtc) 에서 작동합니다.
mode 는 시간 소스가 게스트 가상 머신에 노출되는 방식을 결정합니다. 이 속성은 이름 값 tsc 와만 관련이 있습니다. 다른 모든 타이머는 항상 에뮬레이션됩니다. 명령은 < timer name='tsc' frequency='NNN' mode='auto|native|emulate|smpsafe'/ > 와 같습니다. 모드 정의는 표에 제공됩니다.
| 값 | 설명 |
|---|---|
| auto | TSC가 불안정한 경우 네이티브 TSC 액세스를 허용하십시오. |
| 실제 하드웨어에 적용 | 항상 네이티브 TSC 액세스를 허용합니다. |
| 에뮬레이션 | 항상 에뮬레이트해야 합니다. |
| smpsafe | 항상 에뮬레이션 TSC 및 상호 잠금 가속화 |
present 는 게스트 가상 머신에 표시되는 기본 타이머 세트를 재정의하는 데 사용됩니다.
| 값 | 설명 |
|---|---|
| 제공됨 | 게스트 가상 머신에 표시되는 이 타이머를 강제 적용합니다. |
| 제공되지 않음 | 게스트 가상 머신에 이 타이머를 강제로 표시하지 않도록 합니다. |
8.10.5. Clock Synchronization 사용 예 링크 복사링크가 클립보드에 복사되었습니다!
예 8.5. RTC 및 PIT 타이머를 사용하여 로컬 시간에 클럭 동기화
<clock offset="localtime"> <timer name="rtc" tickpolicy="catchup" track="guest virtual machine" /> <timer name="pit" tickpolicy="delay" /> </clock>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup" track="guest virtual machine" />
<timer name="pit" tickpolicy="delay" />
</clock>
- 게스트 가상 머신에는 CPU가 하나만 있을 수 있습니다.
- APIC 타이머를 비활성화해야 합니다 (noapictimer" 명령줄 옵션 사용)
- NoHZ 모드는 게스트에서 비활성화해야 합니다 (nohz=off" 명령줄 옵션 사용)
- 높은 해상도 타이머 모드를 게스트에서 비활성화해야 합니다 ('highres=off" 명령줄 옵션 사용)
- PIT 클럭 소스는 높은 해상도의 타이머 모드 또는 NoHz 모드와 호환되지 않습니다.
8.11. PMU를 사용하여 게스트 가상 머신 성능 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
yum install perf.
# yum install perf.
8.12. 게스트 가상 머신 전원 관리 링크 복사링크가 클립보드에 복사되었습니다!
pm 은 S3(suspend-to-disk) 및 S4(suspend-to-mem) ACPI sleep 상태에 대한 BIOS 지원을 비활성화('yes') 또는 비활성화합니다. 아무것도 지정하지 않으면 하이퍼바이저는 기본값으로 유지됩니다.
9장. 게스트 가상 머신 장치 구성 링크 복사링크가 클립보드에 복사되었습니다!
- 에뮬레이션된 장치는 실제 하드웨어를 모방하는 순수한 가상 장치이므로 수정되지 않은 게스트 운영 체제가 표준 인 박스 드라이버를 사용하여 작업할 수 있습니다. Red Hat Enterprise Linux 6는 최대 216 virtio 장치를 지원합니다.
- virtio 장치는 가상 머신에서 최적으로 작동하도록 설계된 순전히 가상 장치입니다. virtio 장치는 에뮬레이션된 장치와 유사하지만 Linux 이외의 가상 시스템에는 기본적으로 필요한 드라이버가 포함되어 있지 않습니다. Virtual Machine Manager(virt-manager) 및 RHV-H(Red Hat Virtualization Hypervisor)와 같은 가상화 관리 소프트웨어는 지원되는 비 Linux 게스트 운영 체제에 이러한 드라이버를 자동으로 설치합니다. Red Hat Enterprise Linux 6는 최대700개의scsi 디스크를 지원합니다.
- 할당된 장치는 가상 머신에 노출되는 물리적 장치입니다. 이 방법은 'passthrough'라고도 합니다. 장치 할당을 통해 가상 머신은 다양한 작업을 위해 PCI 장치에 독점적으로 액세스할 수 있으며 PCI 장치는 게스트 운영 체제에 물리적으로 연결된 것처럼 표시 및 작동할 수 있습니다. Red Hat Enterprise Linux 6는 가상 머신당 최대 32개의 할당된 장치를 지원합니다.
/etc/libvirt/qemu.conf에서 재정의할 수 있는 /etc/security/limits.conf 에서 구성됨). 다른 제한 요소에는 가상 버스에서 사용할 수 있는 슬롯 수와 sysctl이 설정한 오픈 파일에 대한 시스템 전체 제한이 포함됩니다.
vfio_iommu_type1 모듈에 allow_unsafe_interrupts 옵션을 사용하여 PCI 장치 할당을 허용하도록 선택할 수 있습니다. 이 작업은 다음을 포함하는 /etc/modprobe.d 에 .conf 파일(예: local.conf)을 추가하여 영구적으로 수행할 수 있습니다.
options vfio_iommu_type1 allow_unsafe_interrupts=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
9.1. PCI 장치 링크 복사링크가 클립보드에 복사되었습니다!
절차 9.1. PCI 장치 할당을 위한 Intel 시스템 준비
Intel VT-d 사양 활성화
Intel VT-d 사양에서는 가상 머신에 물리적 장치를 직접 할당하는 하드웨어 지원을 제공합니다. 이러한 사양은 Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하는 데 필요합니다.BIOS에서 Intel VT-d 사양을 활성화해야 합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 사용하지 않도록 설정되어 있습니다. 이러한 사양을 참조하는 데 사용되는 조건은 제조업체마다 다를 수 있습니다. 적절한 약관에 대해서는 시스템 제조업체 설명서를 참조하십시오.커널에서 Intel VT-d 활성화
/etc/sysconfig/grub파일에 있는 GRUB_CMDLINX_LINUX 행 끝에intel_iommu=on매개 변수를 추가하여 커널에서 Intel VT-d를 활성화합니다.아래 예제는 Intel VT-d가 활성화된 수정된grub파일입니다.GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/ rhcrashkernel-param || :) rhgb quiet intel_iommu=on"
GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/ rhcrashkernel-param || :) rhgb quiet intel_iommu=on"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일 다시 생성
다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.grub2-mkconfig -o /etc/grub2.cfg
grub2-mkconfig -o /etc/grub2.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow UEFI 기반 호스트를 사용하는 경우 대상 파일은/etc/grub2-efi.cfg여야 합니다.사용할 준비가
시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 시스템이 PCI 장치 할당을 수행할 수 있습니다.
절차 9.2. PCI 장치 할당을 위한 AMD 시스템 준비
AMD IOMMU 사양 활성화
Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하려면 AMD IOMMU 사양이 필요합니다. BIOS에서 이러한 사양을 활성화해야 합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 사용하지 않도록 설정되어 있습니다.IOMMU 커널 지원 활성화
/etc/sysconfig/grub에 있는 GRUB_CMDLINX_LINUX 행의 끝에amd_iommu=on을 추가하여 부팅 시 AMD IOMMU 사양을 활성화합니다.구성 파일 다시 생성
다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.grub2-mkconfig -o /etc/grub2.cfg
grub2-mkconfig -o /etc/grub2.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow UEFI 기반 호스트를 사용하는 경우 대상 파일은/etc/grub2-efi.cfg여야 합니다.사용할 준비가
시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 시스템이 PCI 장치 할당을 수행할 수 있습니다.
9.1.1. virsh를 사용하여 PCI 장치 할당 링크 복사링크가 클립보드에 복사되었습니다!
pci_0000_01_00_0 과 함께 PCIe 네트워크 컨트롤러를 사용하고 guest1-rhel6-64 라는 완전히 가상화된 게스트 시스템을 사용합니다.
절차 9.3. virsh를 사용하여 게스트 가상 머신에 PCI 장치 할당
장치 확인
먼저 가상 머신에 장치 할당을 위해 지정된 PCI 장치를 식별합니다. lspci 명령을 사용하여 사용 가능한 PCI 장치를 나열합니다. grep 을 사용하여 lspci 의 출력을 구체화할 수 있습니다.이 예에서는 다음 출력에서 강조 표시된 이더넷 컨트롤러를 사용합니다.lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 이더넷 컨트롤러는 짧은 식별자00:19.0과 함께 표시됩니다. 이 PCI 장치를 가상 시스템에 할당하려면 virsh 에서 사용하는 전체 식별자를 찾아야 합니다.이를 위해 virsh nodedev-list 명령을 사용하여 호스트 시스템에 연결된 특정 유형(pci)의 모든 장치를 나열합니다. 그런 다음 사용하려는 장치의 짧은 식별자에 매핑되는 문자열의 출력을 확인합니다.이 예제에서는 짧은 식별자가00:19.0인 이더넷 컨트롤러에 매핑되는 문자열을 강조 표시합니다. 이 예제에서는:및.문자는 전체 식별자에서 밑줄로 교체됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용하려는 장치에 매핑되는 PCI 장치 번호를 기록합니다. 이는 다른 단계에서 필요합니다.장치 정보 검토
domain, bus 및 function에 대한 정보는 virsh nodedev-dumpxml 명령 출력에서 확인할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고IOMMU 그룹은 IOMMU의 관점에서 장치의 가시성 및 분리에 따라 결정됩니다. 각 IOMMU 그룹은 하나 이상의 장치를 포함할 수 있습니다. 여러 장치가 있는 경우 IOMMU 그룹 내의 모든 엔드 포인트를 게스트에 할당하려면 그룹 내의 모든 장치에 대해 클레임해야 합니다. 이 작업은 게스트에 추가 엔드포인트를 할당하거나 virsh nodedev-detach 를 사용하여 호스트 드라이버에서 분리하여 수행할 수 있습니다. 단일 그룹 내에 포함된 장치는 여러 게스트 간에 분할하거나 호스트와 게스트 간에 분할할 수 없습니다. PCIe 루트 포트, 스위치 포트 및 브리지와 같은 비 엔드 포인트 장치는 호스트 드라이버에서 분리되지 않아야 하며 끝점 할당을 방해하지 않습니다.IOMMU 그룹 내의 장치는 virsh nodedev-dumpxml 출력의 iommuGroup 섹션을 사용하여 결정할 수 있습니다. 그룹의 각 멤버는 별도의 "address" 필드를 통해 제공됩니다. 이 정보는 다음을 사용하여 sysfs에서 찾을 수도 있습니다.출력 예는 다음과 같습니다.ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/
$ ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그룹에 0000.01.00.0만 할당하려면 게스트를 시작하기 전에 사용하지 않은 끝점을 호스트에서 분리해야 합니다.0000:01:00.0 0000:01:00.1
0000:01:00.0 0000:01:00.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh nodedev-detach pci_0000_01_00_1
$ virsh nodedev-detach pci_0000_01_00_1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필수 구성 세부 정보 확인
구성 파일에 필요한 값에 대해서는 virsh nodedev-dumpxml pci_0000_00_19_0 명령의 출력을 참조하십시오.예제 장치의 값은 bus = 0, slot = 25이고 function = 0입니다. 10진수 구성은 다음 세 가지 값을 사용합니다.bus='0' slot='25' function='0'
bus='0' slot='25' function='0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 세부 정보 추가
virsh edit 를 실행하여 가상 시스템 이름을 지정하고 <source> 섹션에 장치 항목을 추가하여 PCI 장치를 게스트 가상 머신에 할당합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 virsh attach-device 를 실행하여 가상 시스템 이름과 게스트의 XML 파일을 지정합니다.virsh attach-device guest1-rhel6-64 file.xml
virsh attach-device guest1-rhel6-64 file.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 가상 머신 시작
virsh start guest1-rhel6-64
# virsh start guest1-rhel6-64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.2. virt-manager를 사용하여 PCI 장치 할당 링크 복사링크가 클립보드에 복사되었습니다!
절차 9.4. virt-manager를 사용하여 게스트 가상 머신에 PCI 장치 할당
하드웨어 설정 열기
게스트 가상 머신을 열고 을 클릭하여 가상 머신에 새 장치를 추가합니다.그림 9.1. 가상 머신 하드웨어 정보 창
PCI 장치 선택
왼쪽의 하드웨어 목록에서 PCI Host Device 를 선택합니다.사용되지 않는 PCI 장치를 선택합니다. 다른 게스트에서 사용 중인 PCI 장치를 선택하면 오류가 발생할 수 있습니다. 이 예에서는 스페어 82576 네트워크 장치가 사용됩니다. 완료 를 클릭하여 설정을 완료합니다.그림 9.2. 가상 하드웨어 추가 마법사
새 장치 추가
설정이 완료되었으며 게스트 가상 머신이 이제 PCI 장치에 직접 액세스할 수 있습니다.그림 9.3. 가상 머신 하드웨어 정보 창
9.1.3. virt-install을 사용한 PCI 장치 할당 링크 복사링크가 클립보드에 복사되었습니다!
--host-device 매개 변수를 사용합니다.
절차 9.5. virt-install을 사용하여 가상 머신에 PCI 장치 할당
장치 확인
게스트 가상 머신에 장치 할당을 위해 지정된 PCI 장치를 식별합니다.lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh nodedev-list 명령은 시스템에 연결된 모든 장치를 나열하고 각 PCI 장치를 문자열로 식별합니다. 출력을 PCI 장치로만 제한하려면 다음 명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow PCI 장치 번호를 기록합니다. 다른 단계에는 숫자가 필요합니다.도메인, 버스 및 기능에 대한 정보는 virsh nodedev-dumpxml 명령 출력에서 확인할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고IOMMU 그룹에 여러 끝점이 있고 모든 엔드포인트가 게스트에 할당되지 않은 경우 게스트를 시작하기 전에 다음 명령을 실행하여 호스트에서 다른 끝점을 수동으로 분리해야 합니다.virsh nodedev-detach pci_0000_00_19_1
$ virsh nodedev-detach pci_0000_00_19_1Copy to Clipboard Copied! Toggle word wrap Toggle overflow IOMMU 그룹에 대한 자세한 내용은 참고 의 9.1.1절. “virsh를 사용하여 PCI 장치 할당” 를 참조하십시오.장치 추가
virsh nodedev 명령의 PCI 식별자 출력을--host-device매개 변수의 값으로 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설치 완료
게스트 설치를 완료합니다. PCI 장치를 게스트에 연결해야 합니다.
9.1.4. 할당된 PCI 장치 분리 링크 복사링크가 클립보드에 복사되었습니다!
절차 9.6. virsh를 사용하여 게스트에서 PCI 장치 분리
장치 분리
다음 명령을 사용하여 게스트의 XML 파일에서 PCI 장치를 제거하여 게스트에서 PCI 장치를 분리합니다.virsh detach-device name_of_guest file.xml
# virsh detach-device name_of_guest file.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 장치를 호스트에 다시 연결합니다(선택 사항)
장치가관리모드에 있는 경우 이 단계를 건너뜁니다. 장치가 자동으로 호스트로 반환됩니다.장치가관리모드를 사용하지 않는 경우 다음 명령을 사용하여 PCI 장치를 호스트 머신에 다시 연결합니다.virsh nodedev-reattach device
# virsh nodedev-reattach deviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어pci_0000_01_00_0장치를 호스트에 다시 연결하려면 다음을 수행합니다.virsh nodedev-reattach pci_0000_01_00_0
virsh nodedev-reattach pci_0000_01_00_0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 호스트용으로 장치를 사용할 수 있습니다.
절차 9.7. virt-manager를 사용하여 게스트에서 PCI 장치 분리
가상 하드웨어 세부 정보 화면을 엽니다.
virt-manager 에서 장치가 포함된 가상 머신을 두 번 클릭합니다. 가상 하드웨어 세부 정보 표시 버튼을 선택하여 가상 하드웨어 목록을 표시합니다.그림 9.4. 가상 하드웨어 세부 정보 버튼
장치 선택 및 제거
왼쪽 패널의 가상 장치 목록에서 분리할 PCI 장치를 선택합니다.그림 9.5. 분리할 PCI 장치 선택
(제거) 버튼을 클릭하여 확인합니다. 이제 호스트용으로 장치를 사용할 수 있습니다.
9.1.5. PCI 브리지 생성 링크 복사링크가 클립보드에 복사되었습니다!
9.1.6. PCI 패스스루 링크 복사링크가 클립보드에 복사되었습니다!
<소스> 요소에 의해 지정됨)는 먼저 장치의 MAC 주소를 구성된 값으로 설정하고 선택적으로 지정된 <가상 포트 요소를 사용하여 장치를 802.1Qbhable 스위치와 연결한 후 type='direct' 네트워크 장치에 대해 지정한 가상> 포트의 예를 참조하십시오. 표준 단일 포트 PCI 이더넷 카드 드라이버 설계의 제한으로 인해 - SR-IOV(Single Root I/O Virtualization) 가상 기능(VF) 장치만 이러한 방식으로 할당할 수 있습니다. 표준 단일 포트 PCI 또는 PCIe 이더넷 카드를 게스트에 할당하려면 기존 <hostdev> 장치 정의를 사용합니다.
<type='hostdev'> 인터페이스에는 name 속성이 "vfio"로 설정된 선택적 드라이버 하위 요소가 있을 수 있습니다. 레거시 KVM 장치 할당을 사용하려면 name을 "kvm"으로 설정할 수 있습니다(또는 < <driver> ='kvm이 현재 기본값이므로 드라이버> 요소를 생략하기만 하면 됩니다.
<hostdev> 장치의 기능과 매우 유사합니다. 이 방법은 통과된 장치에 대한 MAC 주소와 <가상 포트를> 지정할 수 있다는 점입니다. 이러한 기능이 필요하지 않은 경우, SR-IOV를 지원하지 않는 표준 단일 포트 PCI, PCIe 또는 USB 네트워크 카드가 있는 경우(따라서 게스트 도메인에 할당된 후 재설정 중에 구성된 MAC 주소가 손실됨) 또는 0.9.11 이전 버전의 libvirt를 사용하는 경우 표준 <hostdev> 를 사용하여 장치를 <인터페이스 유형/dev 유형> 대신 게스트에 할당해야 합니다.
그림 9.6. PCI 장치 할당의 경우 XML
9.1.7. SR-IOV 장치를 사용하여 PCI 할당(Passthrough) 구성 링크 복사링크가 클립보드에 복사되었습니다!
<hostdev> 요소를 사용하여 기존 방식으로 게스트 가상 머신에 할당할 수 있지만 SR-IOV VF 네트워크 장치에는 영구적인 MAC 주소가 없으므로 호스트 물리적 머신이 재부팅될 때마다 게스트 가상 머신의 네트워크 설정을 다시 구성해야 하는 문제가 발생합니다. 이 문제를 해결하려면 VF를 호스트 물리적 머신에 할당하기 전에 MAC 주소를 설정해야 하며 게스트 가상 머신이 부팅될 때마다 이 주소를 설정해야 합니다. 이 MAC 주소와 다른 옵션을 할당하려면 절차 9.8. “SR-IOV에서 PCI 장치를 할당하기 위해 MAC 주소, vLAN 및 가상 포트 구성” 에 설명된 절차를 참조하십시오.
절차 9.8. SR-IOV에서 PCI 장치를 할당하기 위해 MAC 주소, vLAN 및 가상 포트 구성
<mac>,<vlan>, <virtualport> 요소가 <hostdev> 용으로 유효하지 않으므로 MAC 주소 할당, vLAN 태그 ID 할당 또는 가상 포트 할당과 같은 기능별 항목에는 <hostdev> 요소를 사용할 수 없습니다. <인터페이스 용으로 유효하므로 새 인터페이스> 유형에 대한 지원이 추가되었습니다(<인터페이스 type='hostdev'>). 이 새 인터페이스 장치 유형은 <인터페이스> 및 <hostdev> 의 하이브리드 역할을 합니다. 따라서 PCI 장치를 게스트 가상 머신에 할당하기 전에 libvirt 는 표시된 네트워크별 하드웨어/슬래버스(예: MAC 주소 설정, vLAN 태그 설정, 802.1Qbh 스위치)를 게스트 가상 머신의 XML 구성 파일에서 초기화합니다. vLAN 태그 설정에 대한 자세한 내용은 18.14절. “vLAN 태그 설정” 을 참조하십시오.
게스트 가상 머신 종료
virsh shutdown 명령( 14.9.1절. “게스트 가상 머신 종료”참조)을 사용하여 guestVM 이라는 게스트 가상 머신을 종료합니다.virsh shutdown guestVM
# virsh shutdown guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 정보 수집
<인터페이스 type='hostdev'>를 사용하려면 SR-IOV 가능 네트워크 카드, Intel VT-d 또는 AMD IOMMU 확장 기능을 지원하는 물리적 머신 하드웨어를 호스트해야 하며, 할당할 VF의 PCI 주소를 알아야 합니다.편집을 위해 XML 파일을 엽니다.
# virsh save-image-edit 명령을 실행하여 편집할 XML 파일을 엽니다(자세한 내용은 14.8.10절. “도메인 XML 구성 파일 편집” 참조). 게스트 가상 머신을 이전 실행 상태로 복원하려는 경우--running이 사용됩니다. 이 예제의 구성 파일의 이름은 게스트 가상 머신의 이름이 guestVM 이므로 guestVM.xml 입니다.virsh save-image-edit guestVM.xml --running
# virsh save-image-edit guestVM.xml --runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow guestVM.xml 이 기본 편집기에서 열립니다.XML 파일 편집
구성 파일(guestVM.xml)을 다음과 유사한<장치>항목을 갖도록 업데이트합니다.그림 9.7. hostdev 인터페이스 유형의 샘플 도메인 XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MAC 주소를 제공하지 않으면 다른 유형의 인터페이스 장치와 마찬가지로 MAC 주소가 자동으로 생성됩니다. 또한<virtualport>요소는 802.11Qgh 하드웨어 스위치 (802.11Qbg (a.k.a))에 연결하는 경우에만 사용됩니다. "VEPA") 스위치는 현재 지원되지 않습니다.게스트 가상 머신 다시 시작
virsh start 명령을 실행하여 첫 번째 단계에서 종료한 게스트 가상 머신을 재시작합니다(예: guestVM을 게스트 가상 시스템의 도메인 이름으로 사용). 자세한 내용은 14.8.1절. “정의된 도메인 시작” 를 참조하십시오.virsh start guestVM
# virsh start guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 가상 머신이 시작되면 실제 호스트 시스템의 어댑터에 의해 제공된 네트워크 장치가 구성된 MAC 주소와 함께 표시됩니다. 이 MAC 주소는 게스트 가상 시스템 및 호스트 물리적 시스템 재부팅 시 변경되지 않은 상태로 유지됩니다.
9.1.8. SR-IOV 가상 함수 풀에서 PCI 장치 할당 설정 링크 복사링크가 클립보드에 복사되었습니다!
- 지정된 VF는 게스트 가상 머신이 시작될 때마다 사용할 수 있어야 합니다. 즉, 관리자가 각 VF를 단일 게스트 가상 머신에 영구적으로 할당해야 합니다(또는 게스트 가상 머신이 시작될 때마다 사용되지 않는 VF의 PCI 주소를 지정하도록 모든 게스트 가상 머신의 구성 파일 수정).
- 게스트 가상 시스템이 다른 호스트 물리적 시스템으로 이동하는 경우 호스트 물리적 시스템은 PCI 버스의 동일한 위치에 동일한 하드웨어가 있어야 합니다(또는 다시 시작 전에 게스트 가상 머신 구성을 수정해야 함).
절차 9.9. 장치 풀 생성
게스트 가상 머신 종료
virsh shutdown 명령( 14.9절. “게스트 가상 시스템의 종료, 재부팅 및 종료”참조)을 사용하여 guestVM 이라는 게스트 가상 머신을 종료합니다.virsh shutdown guestVM
# virsh shutdown guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일 생성
선택한 편집기를 사용하면/tmp디렉터리에 XML 파일(예: passthrough.xml )이 생성됩니다.pf dev='eth3'을 자체 SR-IOV 장치의 netdev 이름으로 교체해야 합니다.다음은 호스트 물리적 머신의 "eth3'에 있는 PF(물리 기능) 를 사용하여 SR-IOV 어댑터에 대한 모든 VF 풀을 사용할 수 있도록 하는 네트워크 정의 예제입니다.그림 9.8. 네트워크 정의 도메인 XML 샘플
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 XML 파일 로드
다음 명령을 실행하여 /tmp/passthrough.xml 을 이전 단계에서 생성한 XML 파일의 이름 및 위치로 바꿉니다.virsh net-define /tmp/passthrough.xml
# virsh net-define /tmp/passthrough.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 다시 시작
passthrough.xml 을 이전 단계에서 생성한 XML 파일의 이름으로 교체하여 다음을 실행합니다.virsh net-autostart passthrough # virsh net-start passthrough
# virsh net-autostart passthrough # virsh net-start passthroughCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 가상 머신 다시 시작
virsh start 명령을 실행하여 첫 번째 단계에서 종료한 게스트 가상 머신을 재시작합니다(예: guestVM을 게스트 가상 시스템의 도메인 이름으로 사용). 자세한 내용은 14.8.1절. “정의된 도메인 시작” 를 참조하십시오.virsh start guestVM
# virsh start guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 장치에 대한 패스스루 시작
단일 장치만 표시되지만 libvirt는 해당 PF와 연결된 모든 VF 목록을 자동으로 파생시킵니다. 그러면 다음과 같이 게스트 가상 머신이 도메인 XML의 인터페이스 정의로 처음 시작될 때 libvirt가 자동으로 파생됩니다.그림 9.9. 인터페이스 네트워크 정의를 위한 샘플 도메인 XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 검증
네트워크를 사용하는 첫 번째 게스트를 시작한 후 virsh net-dumpxml passthrough 명령을 실행하여 확인할 수 있습니다. 다음과 유사한 출력을 얻을 수 있습니다.그림 9.10. XML 덤프 파일 패스스루 콘텐츠
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. USB 장치 링크 복사링크가 클립보드에 복사되었습니다!
9.2.1. 게스트 가상 머신에 USB 장치 할당 링크 복사링크가 클립보드에 복사되었습니다!
- USB 패스스루 사용 - 이 경우 장치는 게스트 가상 머신을 호스팅하는 호스트 물리적 머신에 물리적으로 연결되어 있어야 합니다. 이 경우에는 SPICE가 필요하지 않습니다. 명령줄 또는 virt-manager 를 사용하여 호스트의 USB 장치를 게스트로 전달할 수 있습니다. 가상화 관리자 지침은 15.3.1절. “게스트 가상 머신에 USB 장치 연결” 를 참조하십시오.참고virt-manager 를 핫플러그 또는 연결 해제 장치에 사용해서는 안 됩니다. USB 장치를 핫 플러그/또는 핫 플러그 해제하려면 절차 14.1. “게스트 가상 머신에서 사용할 USB 장치 핫플러그” 을 참조하십시오.
- USB 리디렉션 사용 - 데이터 센터에서 실행 중인 호스트 물리적 시스템이 있는 경우 USB 리디렉션이 가장 적합합니다. 사용자는 로컬 머신 또는 씬 클라이언트에서 게스트 가상 머신에 연결합니다. 이 로컬 머신에는 SPICE 클라이언트가 있습니다. 사용자는 모든 USB 장치를 씬 클라이언트에 연결할 수 있으며 SPICE 클라이언트는 씬 클라이언트에서 실행되는 게스트 가상 시스템에서 사용할 수 있도록 장치를 데이터 센터의 호스트 물리적 시스템으로 리디렉션합니다. virt-manager 를 사용하여 USB 리디렉션에 대한 지침은 15.3.1절. “게스트 가상 머신에 USB 장치 연결” 를 참조하십시오. USB 리디렉션은 TCP 프로토콜을 사용할 수 없습니다( BZ#1085318참조).
9.2.2. USB 장치 리디렉션에서 제한 설정 링크 복사링크가 클립보드에 복사되었습니다!
-device usb-redir 에 전달합니다. filter 속성은 필터 규칙으로 구성된 문자열을 사용하며, 규칙의 형식은 다음과 같습니다.
<class>:<vendor>:<product>:<version>:<allow>
<class>:<vendor>:<product>:<version>:<allow>
-1 을 사용하여 특정 필드에 대한 값을 수락하도록 지정합니다. |를 구분 기호로 사용하여 동일한 명령줄에서 여러 규칙을 사용할 수 있습니다.
예 9.1. Windows 게스트 가상 시스템으로 리디렉션 제한의 예
- Windows 7 게스트 가상 머신을 준비합니다.
- 게스트 가상 머신의 domain xml 파일에 다음 코드 발췌를 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - guest 가상 머신을 시작하고 다음을 실행하여 설정 변경 사항을 확인합니다.
#ps -ef | grep $guest_name
#ps -ef | grep $guest_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3
-device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - USB 장치를 호스트 물리적 머신에 연결하고 virt-manager 를 사용하여 게스트 가상 머신에 연결합니다.
- 메뉴에서 클릭합니다. "호스트 정책에서 일부 USB 장치를 차단함"라는 메시지가 표시됩니다. 확인 을 클릭하여 확인하고 계속합니다.Click to confirm and continue.필터가 적용됩니다.
- 필터가 USB 장치 공급 업체 및 제품을 올바르게 확인하려면 USB 리디렉션을 허용하도록 게스트 가상 시스템의 도메인 XML에서 다음과 같이 변경합니다.
<redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter><redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신을 재시작한 다음 virt-viewer 를 사용하여 게스트 가상 머신에 연결합니다. 이제 USB 장치가 트래픽을 게스트 가상 머신으로 리디렉션합니다.
9.3. 장치 컨트롤러 구성 링크 복사링크가 클립보드에 복사되었습니다!
그림 9.11. 가상 컨트롤러의 도메인 XML 예
<컨트롤러 유형> 이 있으며 다음 중 하나여야 합니다.
- IDE
- fdc
- scsi
- SATA
- usb
- CCID
- virtio-serial
- pci
<컨트롤러> 요소에는 필수 특성 <컨트롤러 인덱스> 가 있으며, 이는 버스 컨트롤러가 발생하는 순서를 설명하는 10진수 정수입니다( <address> elements의 컨트롤러 특성에 사용). <controller type ='virtio-serial'> 에 두 개의 추가 선택적 속성(명명 포트 및 벡터)이 있는 경우 컨트롤러를 통해 연결할 수 있는 장치 수를 제어합니다. Red Hat Enterprise Linux 6는 장치당 32 벡터를 초과하는 사용을 지원하지 않습니다. 벡터를 더 많이 사용하면 게스트 가상 머신을 마이그레이션할 때 오류가 발생합니다.
<controller type ='scsi'> 의 경우 다음과 같은 값을 가질 수 있는 선택적 특성 모델 모델이 있습니다.
- auto
- buslogic
- ibmvscsi
- lsilogic
- lsisas1068
- lsisas1078
- virtio-scsi
- vmpvscsi
<controller type ='usb'> 의 경우 다음과 같은 값을 가질 수 있는 선택적 특성 모델 모델이 있습니다.
- piix3-uhci
- piix4-uhci
- ehci
- ich9-ehci1
- ich9-uhci1
- ich9-uhci2
- ich9-uhci3
- vt82c686b-uhci
- pci-ohci
- nec-xhci
<model='none'> 을 사용할 수 있습니다. .
<주소는> 컨트롤러의 마스터 버스와의 정확한 관계를 9.4절. “장치 주소 설정” 에 표시된 대로 지정할 수 있습니다.
<드라이버는 드라이버> 특정 옵션을 지정할 수 있습니다. 현재는 컨트롤러의 대기열 수를 지정하는 특성 대기열만 지원합니다. 최상의 성능을 위해 vCPU 수와 일치하는 값을 지정하는 것이 좋습니다.
<마스터> 컨트롤러와의 정확한 관계를 지정하기 위한 선택적 하위 요소 마스터가 있습니다. 파트너 컨트롤러는 마스터와 동일한 버스에 있으므로 companion index 값이 동일해야 합니다.
그림 9.12. USB 컨트롤러의 도메인 XML 예
모델 속성이 있습니다.
- pci-root
- pcie-root
- pci-bridge
- dmi-to-pci-bridge
pci-root 및 pcs ie-root)에는 64비트 PCI 홀트가 있어야 하는 pcihole64 요소 또는 pcihole64 의단위 속성(KB)을 지정하는 pcihole64 요소가 있습니다. 일부 게스트 가상 머신 (예: Windows Server 2003)은 단위가 비활성화 되지 않는 한 ( unit ='0'으로 설정) 충돌을 일으킬 수 있습니다.
index='0' 인 pci-root 컨트롤러가 자동으로 추가되어 PCI 장치를 사용해야 합니다. pci-root에는 주소가 없습니다. PCI 브리지는 model='pci-root' 에서 제공하는 하나의 버스에 배치할 장치가 너무 많거나 0보다 큰 PCI 버스 번호가 지정된 경우 자동으로 추가됩니다. PCI 브리지를 수동으로 지정할 수도 있지만 주소는 이미 지정된 PCI 컨트롤러에서 제공하는 PCI 버스만 참조해야 합니다. PCI 컨트롤러 인덱스에서 간격을 남겨 두면 구성이 유효하지 않을 수 있습니다. 다음 XML 예제를 <devices> 섹션에 추가할 수 있습니다.
그림 9.13. PCI 브리지의 도메인 XML 예
index='0 을 사용하는pcie-root 컨트롤러가 도메인 구성에 자동 추가됩니다.pcie-root는 주소가 없지만 31 슬롯(수적으로 1-31)을 제공하는 데도 사용할 수 있습니다. PCie-root 컨트롤러가 있는 시스템에서 표준 PCI 장치를 연결하기 위해 model='dmi-to-pci-bridge' 가 있는 pci 컨트롤러가 자동으로 추가됩니다. dmi-to-pci-bridge 컨트롤러 플러그 인은 PCIe 슬롯에 플러그인하고(pcie-root에서 제공하는 대로) 31 표준 PCI 슬롯을 제공합니다(hot-pluggable). 게스트 시스템에 핫플러그 가능한 PCI 슬롯을 사용하기 위해 pci-bridge 컨트롤러도 자동으로 생성되고 자동 생성된 dmi-to-pci-bridge 컨트롤러 슬롯 중 하나에 연결됩니다. PCI 주소가 있는 모든 게스트 장치도 이 pci-bridge 장치에 배치됩니다.
그림 9.14. PCIe(PCI express)의 도메인 XML 예
9.4. 장치 주소 설정 링크 복사링크가 클립보드에 복사되었습니다!
<주소> 하위 요소가 있습니다. 입력 시 주소(또는 주소 내의 선택적 속성)를 생략하면 libvirt 에서 적절한 주소를 생성합니다. 그러나 레이아웃을 추가로 제어해야 하는 경우 명시적 주소가 필요합니다. <address> 요소를 포함한 도메인 XML 장치 예제는 그림 9.6. “PCI 장치 할당의 경우 XML” 를 참조하십시오.
유형이 있습니다. 지정된 장치에 사용할 주소 중 일부는 장치 및 게스트 가상 머신의 아키텍처가 제한됩니다. 예를 들어, <디스크> 장치는 type='drive' 를 사용하지만 <콘솔> 장치는 i686 또는 x86_64 게스트 가상 머신 아키텍처 에서 type='pci' 을 사용합니다. 각 주소 유형에는 장치가 표에 설명된 대로 배치되는 버스 위치를 제어하는 추가 선택적 속성이 있습니다.
| 주소 유형 | 설명 |
|---|---|
| type='pci' | PCI 주소에는 다음과 같은 추가 속성이 있습니다.
|
| type='drive' | 드라이브 주소에는 다음과 같은 추가 속성이 있습니다.
|
| type='virtio-serial' | 각 virtio-serial 주소에는 다음과 같은 추가 속성이 있습니다.
|
| type='ccid' | 스마트 카드의 경우 CCID 주소에는 다음과 같은 추가 속성이 있습니다.
|
| type='usb' | USB 주소에는 다음과 같은 추가 속성이 있습니다.
|
| type='isa' | ISA 주소에는 다음과 같은 추가 속성이 있습니다.
|
9.5. 게스트 가상 머신의 스토리지 컨트롤러 관리 링크 복사링크가 클립보드에 복사되었습니다!
- virtio-scsi 컨트롤러를 통해 가상 하드 드라이브 또는 CD를 연결합니다.
- QEMU scsi-block 장치를 통해 호스트에서 게스트로 물리적 SCSI 장치를 전달합니다.
- 게스트당 수백 개의 장치를 사용할 수 있습니다. virtio-blk의 28 장치 제한을 개선할 수 있습니다.
절차 9.10. 가상 SCSI 컨트롤러 생성
- 게스트 가상 머신(
Guest1)의 구성을 표시하고 기존 SCSI 컨트롤러를 찾습니다.virsh dumpxml Guest1 | grep controller.*scsi
# virsh dumpxml Guest1 | grep controller.*scsiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 장치 컨트롤러가 있는 경우 명령은 다음과 유사한 하나 이상의 행을 출력합니다.<controller type='scsi' model='virtio-scsi' index='0'/>
<controller type='scsi' model='virtio-scsi' index='0'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전 단계에서 장치 컨트롤러가 표시되지 않은 경우 다음 단계를 사용하여 새 파일에서 하나의 설명에 생성하고 가상 머신에 추가합니다.
- 새 파일에 <
controller>요소를 작성하여 장치 컨트롤러를 생성하고 XML 확장자로 이 파일을 저장합니다.virtio-scsi-controller.xml(예:<controller type='scsi' model='virtio-scsi'/>
<controller type='scsi' model='virtio-scsi'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow virtio-scsi-controller.xml에서 방금 생성한 장치 컨트롤러를 게스트 가상 머신(예: 1)과 연결합니다.virsh attach-device --config Guest1 ~/virtio-scsi-controller.xml
# virsh attach-device --config Guest1 ~/virtio-scsi-controller.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서--config옵션은 디스크에 대해 수행하는 것과 동일하게 작동합니다. 자세한 내용은 절차 13.2. “게스트에 물리적 블록 장치 추가” 를 참조하십시오.
- 새 SCSI 디스크 또는 CD-ROM을 추가합니다. 새 디스크는 13.3.1절. “ 게스트에 파일 기반 스토리지 추가” 및 13.3.2절. “게스트에 하드 드라이브 및 기타 블록 장치 추가” 섹션의 방법을 사용하여 추가할 수 있습니다. SCSI 디스크를 만들려면 sd 로 시작하는 대상 장치 이름을 지정합니다.
virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img sdb --cache none
# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img sdb --cache noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 가상 머신의 드라이버 버전에 따라 실행 중인 게스트 가상 머신에 의해 새 디스크가 즉시 감지되지 않을 수 있습니다. Red Hat Enterprise Linux 스토리지 관리 가이드 의 단계를 따르십시오.
9.6. RNG(random Number Generator) 장치 링크 복사링크가 클립보드에 복사되었습니다!
virtio-rng 는 게스트 가상 머신의 운영 체제에 RNG 데이터를 제공하는 가상 RNG(random number generator) 장치로 요청 시 게스트 가상 머신에 새로운 엔트로피를 제공합니다.
virtio-rng 가 활성화된 경우 /dev/hwrng/.의 게스트 가상 시스템에 chardev가 생성됩니다. 그러면 이 chardev를 열고 호스트 물리적 시스템에서 엔트로피를 가져올 수 있습니다. 게스트 가상 머신의 애플리케이션이 투명하게 virtio-rng 장치의 임의성을 사용할 수 있도록 하려면 게스트 가상 머신의 커널 엔트로피 풀로 /dev/hwrng/ 의 입력을 릴레이해야 합니다. 이 위치의 정보가 rgnd 데몬(rng-tools 내에 포함된 포함)과 연결된 경우 이 작업을 수행할 수 있습니다.
/dev/random 파일로 라우팅됩니다. 이 프로세스는 Red Hat Enterprise Linux 6 게스트 가상 시스템에서 수동으로 수행됩니다.
rngd -b -r /dev/hwrng/ -o /dev/random/
# rngd -b -r /dev/hwrng/ -o /dev/random/
viorng 드라이버를 설치해야 합니다. 가상 RNG 장치가 설치되면 Microsoft에서 제공하는 CNG(crypto 차세대) API를 사용하여 작동합니다. 드라이버가 설치되면 virtrng 장치가 RNG 공급자 목록에 나타납니다.
절차 9.11. 명령줄 툴을 사용하여 virtio-rng 구현
- 게스트 가상 머신을 종료합니다.
- 터미널 창에서 virsh edit domain-name 명령을 사용하여 원하는 게스트 가상 시스템에 대한 XML 파일을 엽니다.
- 다음을 포함하도록
<devices>요소를 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10장. QEMU-img 및 QEMU 게스트 에이전트 링크 복사링크가 클립보드에 복사되었습니다!
/usr/share/doc/qemu-*/README.systemtap 을 참조하십시오.
10.1. qemu-img 사용 링크 복사링크가 클립보드에 복사되었습니다!
확인
디스크 이미지 파일 이름에 대해 일관성 검사를 수행합니다.
qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
# qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
qcow2 및 vdi 형식만 일관성 검사를 지원합니다.
-r 누수 s 클러스터 누수와 함께 사용하면 모든 종류의 오류가 수정됩니다. 이 경우 잘못된 수정 사항을 선택하거나 이미 발생한 손상 문제를 숨길 위험이 있습니다.
커밋
지정된 파일(파일이름)에 기록된 변경 사항을 qemu-img commit 명령을 사용하여 파일의 기본 이미지에 커밋합니다. 필요한 경우 파일의 형식 유형(형식)을 지정합니다.
qemu-img commit [-f format] [-t cache] filename
# qemu-img commit [-f format] [-t cache] filename
convert
convert 옵션은 하나의 인식된 이미지 형식을 다른 이미지 형식으로 변환하는 데 사용됩니다.
qemu-img convert [-c] [-p] [-f format] [-t cache] [-O output_format] [-o options] [-S sparse_size] filename output_filename
# qemu-img convert [-c] [-p] [-f format] [-t cache] [-O output_format] [-o options] [-S sparse_size] filename output_filename
p 매개 변수는 명령의 진행 상황(선택 사항 및 모든 명령의 경우 아님)을 표시하며, -S 옵션을 사용하면 디스크 이미지에 포함된 스파스 파일을 생성할 수 있습니다. 스파스 파일은 모든 용도의 표준 파일처럼 작동합니다. 단, 0만 포함된 물리 블록(nothing)을 제외하면 됩니다. 운영 체제에서 이 파일을 볼 때 실제로는 아무것도 사용하지 않더라도 실제 디스크 공간이 존재하는 것으로 취급되며 실제 디스크 공간을 차지합니다. 이는 디스크가 디스크 공간보다 많은 디스크 공간을 차지하는 것처럼 게스트 가상 머신에 대한 디스크를 만들 때 특히 유용합니다. 예를 들어 10Gb인 디스크 이미지에서 -S를 50Gb로 설정하면 10Gb의 디스크 공간만 실제로 사용되고 있지만 10Gb의 디스크 공간 크기는 60Gb로 나타납니다.
output_format 형식을 사용하여 디스크 이미지 파일 이름을 디스크 이미지 output_ filename 으로 변환합니다. 디스크 이미지는 선택적으로 -c 옵션으로 압축하거나, -o encryption 를 설정하여 -o 옵션으로 암호화할 수 있습니다. o 매개 변수와 함께 사용할 수 있는 옵션은 선택한 형식과 다릅니다.
qcow2 형식만 암호화 또는 압축을 지원합니다. qcow2 암호화는 보안 128비트 키와 함께 AES 형식을 사용합니다. qcow2 압축은 읽기 전용이므로 압축된 섹터를 qcow2 형식에서 변환하면 압축되지 않은 데이터로 새 형식으로 작성됩니다.
create
크기 및 포맷 의 새 디스크 이미지 파일 이름을 생성합니다.
qemu-img create [-f format] [-o options] filename [size][preallocation]
# qemu-img create [-f format] [-o options] filename [size][preallocation]
-o backing_file=filename 로 지정하면 이미지는 자체와 기본 이미지 간의 차이점만 기록합니다. commit 명령을 사용하지 않는 한 백업 파일은 수정되지 않습니다. 이 경우 크기를 지정할 필요가 없습니다.
-o preallocation=off|meta|full|falloc 입니다. 사전 할당된 메타데이터가 있는 이미지는 이미지보다 큽니다. 그러나 이미지 크기가 증가하는 경우 이미지가 증가함에 따라 성능이 향상됩니다.
전체 할당을 사용하면 이미지가 큰 데 시간이 오래 걸릴 수 있습니다. 전체 할당과 시간이 필요한 경우, falloc 를 사용하면 시간을 절약할 수 있습니다.
정보
info 매개 변수는 디스크 이미지 파일 이름에 대한 정보를 표시합니다. info 옵션의 형식은 다음과 같습니다.
qemu-img info [-f format] filename
# qemu-img info [-f format] filename
qcow2 이미지에서 가져온 공간 수를 표시합니다. 이 작업은 qemu-img 를 실행하여 수행됩니다. 사용 중인 이미지가 qemu-img check 명령과 함께 qemu-img info 명령의 출력과 일치하는지 확인할 수 있습니다. 10.1절. “qemu-img 사용” 에서 참조하십시오.
map
# qemu-img 맵 [-f format] [--output=output_format] 파일 이름 명령은 이미지 파일 이름의 메타데이터와 백업 파일 체인을 덤프합니다. 특히 이 명령은 백업 파일 체인에 할당하는 최상위 파일과 함께 지정된 파일의 모든 섹터의 할당 상태를 덤프합니다. 예를 들어 c.qcow2 → b.qcow2 → a.qcow2와 같은 체인이 있는 경우 a.qcow2가 원래 파일인 경우 b.qcow2 및 c.qcow2는 b.qcow2의 delta 파일입니다. 이 체인이 생성되면 일반 이미지 데이터를 저장하고 파일에 어떤 파일에 있는지와 파일 내에 있는 위치에 대한 정보를 저장합니다. 이러한 정보를 이미지 메타데이터라고 합니다. f 형식 옵션은 지정된 이미지 파일의 형식입니다. raw, qcow2, vhdx 및 vmdk와 같은 형식을 사용할 수 있습니다. 사용 가능한 출력 옵션은 human 및 json 입니다.
사용자가기본 설정입니다. 이 형식은 사람의 눈에 더 쉽게 읽을 수 있도록 설계되어 있으므로 이 형식을 구문 분석해서는 안 됩니다. 명확성과 단순성을 위해 기본사람형식은 파일의 0이 아닌 영역만 덤프합니다. 파일의 알려진 0 부분은 완전히 생략되며 체인 전체에 할당되지 않은 부분에도 적용됩니다. 명령을 실행하면 qemu-img 출력이 데이터를 읽을 수 있는 파일과 파일의 오프셋을 식별합니다. 출력은 네 개의 열이 있는 테이블로 표시됩니다. 처음 3 개는 16진수입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - JSON 또는 JSON(JavaScript Object Notation)은 사람이 읽을 수 있지만 프로그래밍 언어이므로 구문 분석하도록 설계되었습니다.
예를 들어 구문 분석기에서 "qemu-img 맵"의 출력을 구문 분석하려면--output=json옵션을 사용해야 합니다.qemu-img map -f qcow2 --output=json /tmp/test.qcow2 [{ "start": 0, "length": 131072, "depth": 0, "zero": false, "data": true, "offset": 327680}, { "start": 131072, "length": 917504, "depth": 0, "zero": true, "data": false},# qemu-img map -f qcow2 --output=json /tmp/test.qcow2 [{ "start": 0, "length": 131072, "depth": 0, "zero": false, "data": true, "offset": 327680}, { "start": 131072, "length": 917504, "depth": 0, "zero": true, "data": false},Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 형식에 대한 자세한 내용은 qemu-img(1) 매뉴얼 페이지를 참조하십시오.
Rebase
이미지의 백업 파일을 변경합니다.
qemu-img rebase [-f format] [-t cache] [-p] [-u] -b backing_file [-F backing_format] filename
# qemu-img rebase [-f format] [-t cache] [-p] [-u] -b backing_file [-F backing_format] filename
qcow2 형식만 백업 파일 변경(리베이스)을 지원합니다.
크기 조정
크기 크기로 생성된 것처럼 디스크 이미지 파일 이름을 변경합니다. 버전에 관계없이 원시 형식의 이미지만 크기를 조정할 수 있습니다. Red Hat Enterprise Linux 6.1 이상에서는 qcow2 형식의 이미지를 확장(하지만 축소할 수 없음)할 수 있는 기능이 추가되었습니다.
qemu-img resize filename size
# qemu-img resize filename size
증가 하려는 바이트 수를 접두사로 추가하거나 - 는 해당 바이트 수만큼 디스크 이미지 크기를 줄입니다. 단위 접미사를 추가하면 킬로바이트(K), 메가바이트(M), 기가바이트(G) 또는 테라바이트(T)로 이미지 크기를 설정할 수 있습니다.
qemu-img resize filename [+|-]size[K|M|G|T]
# qemu-img resize filename [+|-]size[K|M|G|T]
스냅샷
이미지의 기존스냅샷(파일이름)을 나열, 적용, 생성 또는 삭제합니다.
qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
# qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
지원되는 형식
QEMU-img 는 다음 형식 중 하나로 파일을 변환하도록 설계되었습니다.
-
raw - 원시 디스크 이미지 형식(기본값). 가장 빠른 파일 기반 형식일 수 있습니다. 파일 시스템이 허점이 있는 경우(예: Windows의 Linux 또는 NTFS에서 ext2 또는 ext3의 ext3에서) 기록된 섹터만 공간을 예약합니다. qemu-img 정보를 사용하여 Unix/Linux에서 이미지 또는 ls -ls 에서 사용하는 실제 크기를 가져옵니다. 원시 이미지는 최적의 성능을 제공하지만 원시 이미지에서 매우 기본적인 기능만 사용할 수 있습니다(예: 스냅샷을 사용할 수 없음).
-
qcow2 - QEMU 이미지 형식: 최상의 기능을 갖춘 가장 유연한 형식인 QEMU 이미지 형식입니다. 이 도구를 사용하면 선택적 AES 암호화, zlib 기반 압축, 여러 VM 스냅샷 지원 및 소형 이미지(Windows의 비NTFS 파일 시스템)를 지원하지 않는 파일 시스템에서 유용합니다. 이 확장 기능 세트는 성능 비용으로 제공됩니다.
원시 또는 qcow2 형식으로 변환하기 위해 다음 형식을 인식하고 지원합니다. 이미지 형식은 일반적으로 자동으로 탐지됩니다. 이러한 형식을 raw 또는 qcow2 로 변환하는 것 외에도 raw 또는 qcow2 에서 원래 형식으로 변환할 수 있습니다.
- Bochs
- 디스크 이미지 형식입니다.
- cloop
- Linux Compressed loop 이미지, 예를 들어 Knoppix CD-ROM과 같이 직접 압축된 CD-ROM 이미지를 재사용할 수 있는 경우에만 유용합니다.
- cow
- User Mode Linux Copy On Write 이미지 형식입니다. cow 형식은 이전 버전과의 호환성을 위해서만 포함됩니다. Windows에서는 작동하지 않습니다.
- dmg
- Mac 디스크 이미지 형식입니다.
- nbd
- 네트워크 블록 장치.
- parallels
- 가상화 디스크 이미지 형식을 병렬로 지원합니다.
- QCOW
- 이전 QEMU 이미지 형식. 이전 버전과의 호환성을 위해서만 포함되어 있습니다.
- vdi
- Oracle VM350 하드 디스크 이미지 형식입니다.
- vmdk
- VMware 호환 이미지 형식(버전 1 및 2에 대한 읽기-쓰기 지원 및 버전 3에 대한 읽기 전용 지원).
- vpc
- Windows 가상 PC 디스크 이미지 형식입니다. 또한
vhd또는 Microsoft 가상 하드 디스크 이미지 형식이라고 합니다. - vvfat
- 가상 VFAT 디스크 이미지 형식입니다.
10.2. QEMU 게스트 에이전트 링크 복사링크가 클립보드에 복사되었습니다!
10.2.1. 게스트 에이전트 설치 및 활성화 링크 복사링크가 클립보드에 복사되었습니다!
10.2.2. 게스트 에이전트와 호스트 간의 통신 설정 링크 복사링크가 클립보드에 복사되었습니다!
절차 10.1. 게스트 에이전트와 호스트 간 통신 설정
게스트 XML을 엽니다.
QEMU 게스트 에이전트 구성으로 게스트 XML을 엽니다. 파일을 열려면 게스트 이름이 필요합니다. 호스트 시스템에서 # virsh list 명령을 사용하여 인식할 수 있는 게스트를 나열합니다. 이 예에서 게스트 이름은 rhel6 입니다.virsh edit rhel6
# virsh edit rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 XML 파일 편집
XML 파일에 다음 요소를 추가하고 변경 사항을 저장합니다.그림 10.1. 게스트 XML을 편집하여 QEMU 게스트 에이전트 구성
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트에서 QEMU 게스트 에이전트 시작
아직 수행하지 않은 경우 yum install qemu-guest-agent 를 사용하여 게스트 가상 머신에서 게스트 에이전트를 다운로드하여 설치합니다. 설치가 완료되면 다음과 같이 서비스를 시작합니다.service start qemu-guest-agent
# service start qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.3. QEMU 게스트 에이전트 사용 링크 복사링크가 클립보드에 복사되었습니다!
- qemu-guest-agent 는 클라이언트가 채널에 연결되어 있는지 여부를 탐지할 수 없습니다.
- 클라이언트에서 qemu-guest-agent 의 연결이 끊어졌는지 또는 백엔드에 다시 연결되었는지 여부를 감지할 수 있는 방법은 없습니다.
- virtio-serial 장치가 재설정되고 qemu-guest-agent 가 채널에 연결되지 않은 경우(일반적으로 재부팅 또는 핫 플러그로 인해) 클라이언트의 데이터가 삭제됩니다.
- qemu-guest-agent 가 virtio-serial 장치 재설정에 따라 채널에 연결된 경우 클라이언트의 데이터가 대기열에 추가되면(및 사용 가능한 버퍼가 소진되면 제한됨) qemu-guest-agent 가 계속 실행 중인지 여부와 관계없이 제한될 수 있습니다.
10.2.4. libvirt와 함께 QEMU 게스트 에이전트 사용 링크 복사링크가 클립보드에 복사되었습니다!
- virsh shutdown --mode=agent - 이 종료 방법은 QEMU 게스트 에이전트와 함께 사용되는 virsh shutdown --mode=acpi 보다 더 안정적입니다. 에이전트가 없으면 libvirt에서 ACPI 종료 이벤트 삽입에 의존하지만 일부 게스트에서는 해당 이벤트를 무시하므로 종료되지 않습니다.virsh reboot 에 대해 동일한 구문과 함께 사용할 수 있습니다.
- virsh snapshot-create --quiesce - 게스트가 스냅샷이 생성되기 전에 I/O를 안정적인 상태로 플러시할 수 있으므로 fsck를 수행하거나 부분 데이터베이스 트랜잭션을 손실하지 않고도 스냅샷을 사용할 수 있습니다. 게스트 에이전트는 게스트 공동 작업을 제공하여 높은 수준의 디스크 콘텐츠 안정성을 허용합니다.
- virsh setvcpus --guest - 게스트를 종료하여 CPU를 오프라인 상태로 전환합니다.
- virsh dompmsuspend - 게스트 운영 체제의 전원 관리 기능을 사용하여 실행 중인 게스트를 정상적으로 종료합니다.
10.2.5. 게스트 가상 머신 디스크 백업 생성 링크 복사링크가 클립보드에 복사되었습니다!
- 파일 시스템 애플리케이션/데이터베이스에서 작업 버퍼를 가상 디스크에 플러시하고 클라이언트 연결 수락을 중지합니다.
- 애플리케이션은 데이터 파일을 일관된 상태로 전환
- 기본 후크 스크립트 반환
- QEMU-ga 파일 시스템 및 관리 스택이 정지하는 경우 스냅샷 사용
- 스냅샷이 확인됨
- 파일 시스템 기능 재개
/etc/qemu-ga/fsfreeze-hook.d/.에서 표 10.1. “QEMU 게스트 에이전트 패키지 콘텐츠” 에 나열된 restorecon -FvvR 명령을 실행할 수 있습니다.
| 파일 이름 | 설명 |
|---|---|
/etc/rc.d/init.d/qemu-ga | QEMU 게스트 에이전트의 서비스 제어 스크립트(start/stop)입니다. |
/etc/sysconfig/qemu-ga | QEMU 게스트 에이전트의 구성 파일은 /etc/rc.d/init.d/qemu-ga 제어 스크립트에서 읽습니다. 설정은 쉘 스크립트 주석이 있는 파일에 설명되어 있습니다. |
/usr/bin/qemu-ga | QEMU 게스트 에이전트 바이너리 파일. |
/usr/libexec/qemu-ga/ | 후크 스크립트의 루트 디렉터리입니다. |
/usr/libexec/qemu-ga/fsfreeze-hook | 기본 후크 스크립트. 여기서는 수정할 필요가 없습니다. |
/usr/libexec/qemu-ga/fsfreeze-hook.d/ | 개별 애플리케이션별 후크 스크립트의 디렉터리입니다. 게스트 시스템 관리자는 후크 스크립트를 이 디렉터리에 수동으로 복사하고, 적절한 파일 모드 비트를 확인한 다음, 이 디렉터리에서 restorecon -FvvR 을 실행해야 합니다. |
/usr/share/qemu-kvm/qemu-ga/ | 샘플 스크립트가 있는 디렉터리(예: 용도만 해당). 여기에 포함된 스크립트는 실행되지 않습니다. |
/usr/libexec/qemu-ga/fsfreeze-hook 는 자체 메시지와 애플리케이션별 스크립트의 표준 출력 및 오류 메시지를 다음 로그 파일에서 기록합니다. /var/log/qemu-ga/fsfreeze-hook.log. 자세한 내용은 wiki.qemu.org 또는 libvirt.org 의 qemu-guest-agent wiki 페이지를 참조하십시오.
10.3. Windows 게스트에서 QEMU 게스트 에이전트 실행 링크 복사링크가 클립보드에 복사되었습니다!
- Windows XP 서비스 팩 3 (VSS는 지원되지 않음)
- Windows Server 2003 R2 - x86 및 AMD64 (VSS는 지원되지 않음)
- Windows Server 2008
- Windows Server 2008 R2
- Windows 7 - x86 및 AMD64
- Windows Server 2012
- Windows Server 2012 R2
- Windows 8 - x86 및 AMD64
- Windows 8.1 - x86 및 AMD64
절차 10.2. Windows 게스트에서 QEMU 게스트 에이전트 구성
Red Hat Enterprise Linux 호스트 머신 준비
Red Hat Enterprise Linux 호스트 물리적 머신에 다음 패키지가 설치되어 있는지 확인합니다.- virtio-win (
/usr/share/virtio-win/에 있음)
Windows 게스트에서 드라이버를 복사하려면 다음 명령을 사용하여 qxl 드라이버에 대한*.iso파일을 만듭니다.mkisofs -o /var/lib/libvirt/images/virtiowin.iso /usr/share/virtio-win/drivers
# mkisofs -o /var/lib/libvirt/images/virtiowin.iso /usr/share/virtio-win/driversCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 게스트 준비
드라이버를 업데이트하려면*.iso를 Windows 게스트에 마운트하여 게스트에 virtio-serial driver를 설치합니다. 게스트를 시작한 다음, 표시된 대로 드라이버 .iso 파일을 게스트에 연결합니다( hdb라는 디스크를 사용).virsh attach-disk guest /var/lib/libvirt/images/virtiowin.iso hdb
# virsh attach-disk guest /var/lib/libvirt/images/virtiowin.iso hdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 을 사용하여 드라이버를 설치하려면 다음 메뉴로 이동합니다.- virtio-win 드라이버를 설치하려면 > > 선택합니다.
Windows 게스트 XML 구성 파일 업데이트
Windows 게스트의 게스트 XML 파일은 Red Hat Enterprise Linux 호스트 머신에 있습니다. 이 파일에 액세스하려면 Windows 게스트 이름이 필요합니다. 호스트 시스템에서 # virsh list 명령을 사용하여 인식할 수 있는 게스트를 나열합니다. 이 예에서 게스트 이름은 win7x86입니다.# virsh edit win7x86 명령을 사용하여 XML 파일에 다음 요소를 추가하고 변경 사항을 저장합니다. 이 예에서 win7x86.agent 라는 호스트에서 소스 소켓 이름은 고유해야 합니다.그림 10.2. Windows 게스트 XML을 편집하여 QEMU 게스트 에이전트 구성
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 게스트 재부팅
Windows 게스트를 재부팅하여 변경 사항을 적용합니다.virsh reboot win7x86
# virsh reboot win7x86Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 게스트에서 QEMU 게스트 에이전트 준비
Windows 게스트에서 게스트 에이전트를 준비하려면 다음을 수행합니다.최신 virtio-win 패키지 설치
Red Hat Enterprise Linux 호스트 물리적 시스템 터미널 창에서 다음 명령을 실행하여 설치할 파일을 찾습니다. 아래에 표시된 파일은 시스템이 찾은 것과 정확히 동일하지 않을 수 있지만 최신 공식 버전이어야 합니다.rpm -qa|grep virtio-win virtio-win-1.6.8-5.el6.noarch rpm -iv virtio-win-1.6.8-5.el6.noarch
# rpm -qa|grep virtio-win virtio-win-1.6.8-5.el6.noarch # rpm -iv virtio-win-1.6.8-5.el6.noarchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 설치가 완료되었는지 확인합니다.
virtio-win 패키지 설치가 완료되면/usr/share/virtio-win/guest-agent/폴더를 확인하고 qemu-ga-x64.msi 또는 qemu-ga-x86.msi라는 파일을 찾을 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow .msi 파일 설치
Windows 게스트(예:win7x86)에서 qemu-ga-x64.msi를 두 번 클릭하여 qemu-ga-x86.msi를 설치합니다. 설치가 완료되면 시스템 관리자 내에서 Windows 게스트에 qemu-ga 서비스로 표시됩니다. 이 동일한 관리자를 사용하여 서비스 상태를 모니터링할 수 있습니다.
10.3.1. Windows 게스트의 QEMU 게스트 에이전트와 함께 libvirt 명령 사용 링크 복사링크가 클립보드에 복사되었습니다!
- virsh shutdown --mode=agent - 이 종료 방법은 QEMU 게스트 에이전트와 함께 사용되는 virsh shutdown --mode=acpi 보다 더 안정적입니다. 에이전트가 없으면 libvirt에서 ACPI 종료 이벤트 삽입에 의존하지만 일부 게스트에서는 해당 이벤트를 무시하므로 종료되지 않습니다.virsh reboot 에 대해 동일한 구문과 함께 사용할 수 있습니다.
- virsh snapshot-create --quiesce - 게스트가 스냅샷이 생성되기 전에 I/O를 안정적인 상태로 플러시할 수 있으므로 fsck를 수행하거나 부분 데이터베이스 트랜잭션을 손실하지 않고도 스냅샷을 사용할 수 있습니다. 게스트 에이전트는 게스트 공동 작업을 제공하여 높은 수준의 디스크 콘텐츠 안정성을 허용합니다.
- virsh dompmsuspend - 게스트 운영 체제의 전원 관리 기능을 사용하여 실행 중인 게스트를 정상적으로 종료합니다.
10.4. 장치 리디렉션에서 제한 설정 링크 복사링크가 클립보드에 복사되었습니다!
-device usb-redir 에 전달합니다. filter 속성은 필터 규칙으로 구성된 문자열을 사용합니다. 규칙 형식은 다음과 같습니다.
<class>:<vendor>:<product>:<version>:<allow>
<class>:<vendor>:<product>:<version>:<allow>
-1 을 사용하여 특정 필드에 대한 값을 수락하도록 지정합니다. |를 구분 기호로 사용하여 동일한 명령줄에서 여러 규칙을 사용할 수 있습니다. 장치가 필터 규칙과 일치하지 않으면 리디렉션이 허용되지 않습니다.
예 10.1. Windows 게스트 가상 머신으로 리디렉션 제한
- Windows 7 게스트 가상 머신을 준비합니다.
- 게스트 가상 머신의 XML 파일에 다음 코드 발췌를 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - guest 가상 머신을 시작하고 다음을 실행하여 설정 변경 사항을 확인합니다.
ps -ef | grep $guest_name
# ps -ef | grep $guest_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3
-device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - USB 장치를 호스트 물리적 시스템에 연결하고 virt-viewer 를 사용하여 게스트 가상 머신에 연결합니다.
- 메뉴에서 클릭합니다. "호스트 정책에서 일부 USB 장치를 차단함"라는 메시지가 표시됩니다. 확인 을 클릭하여 확인하고 계속합니다.Click to confirm and continue.필터가 적용됩니다.
- 필터가 USB 장치 공급 업체 및 제품을 올바르게 확인하려면 USB 리디렉션을 허용하도록 호스트 물리적 시스템의 도메인 XML에서 다음과 같이 변경합니다.
<redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter><redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신을 재시작한 다음 virt-viewer 를 사용하여 게스트 가상 머신에 연결합니다. 이제 USB 장치가 트래픽을 게스트 가상 머신으로 리디렉션합니다.
10.5. 가상 NIC에 연결된 호스트 물리적 머신 또는 네트워크 브리지 변경 링크 복사링크가 클립보드에 복사되었습니다!
- 다음과 유사한 구성으로 게스트 가상 머신을 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 인터페이스 업데이트를 위해 XML 파일을 준비합니다.
cat br1.xml
# cat br1.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신을 시작하고 게스트 가상 머신의 네트워크 기능을 확인하고 게스트 가상 머신의 vnetX가 표시된 브리지에 연결되어 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 새 인터페이스 매개변수로 게스트 가상 머신의 네트워크를 업데이트합니다.
virsh update-device test1 br1.xml Device updated successfully
# virsh update-device test1 br1.xml Device updated successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신에서 서비스 네트워크를 다시 시작합니다. 게스트 가상 머신은 virbr1의 새 IP 주소를 가져옵니다. 게스트 가상 시스템의 vnet0이 새 브릿지(virbr1)에 연결되어 있는지 확인합니다.
brctl show bridge name bridge id STP enabled interfaces virbr0 8000.5254007da9f2 yes virbr0-nic virbr1 8000.525400682996 yes virbr1-nic vnet0
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.5254007da9f2 yes virbr0-nic virbr1 8000.525400682996 yes virbr1-nic vnet0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11장. 스토리지 개념 링크 복사링크가 클립보드에 복사되었습니다!
11.1. 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
- virtio-blk = 2^63 바이트 또는 8 Exabytes( raw 파일 또는 디스크를 사용)
- Ext4 = ~ 16TB (4KB 블록 크기 사용)
- XFS = ~8 Exabytes
- qcow2 및 호스트 파일 시스템은 매우 큰 이미지 크기를 시도할 때 자체 메타데이터 및 확장성을 평가/tuned해야 합니다. 원시 디스크를 사용하면 확장성 또는 최대 크기에 영향을 줄 수 있는 레이어가 줄어듭니다.
/var/lib/libvirt/images/ 디렉터리를 기본 스토리지 풀로 사용합니다. 기본 스토리지 풀을 다른 스토리지 풀로 변경할 수 있습니다.
- 로컬 스토리지 풀 - 로컬 스토리지 풀이 호스트 물리적 시스템 서버에 직접 연결됩니다. 로컬 스토리지 풀에는 로컬 디렉터리, 직접 연결된 디스크, 물리적 파티션 및 LVM 볼륨 그룹이 포함됩니다. 이러한 스토리지 볼륨은 게스트 가상 머신 이미지를 저장하거나 게스트 가상 머신에 추가 스토리지로 연결됩니다. 로컬 스토리지 풀이 호스트 물리적 머신 서버에 직접 연결되므로 마이그레이션 또는 게스트 가상 머신 수가 필요하지 않은 개발, 테스트 및 소규모 배포에 유용합니다. 로컬 스토리지 풀은 실시간 마이그레이션을 지원하지 않으므로 로컬 스토리지 풀은 여러 프로덕션 환경에 적합하지 않습니다.
- Networked(공유) 스토리지 풀 - 네트워크로 연결된 스토리지 풀에는 표준 프로토콜을 사용하여 네트워크를 통해 공유하는 스토리지 장치가 포함됩니다. 네트워크 스토리지는 virt-manager를 사용하여 호스트 물리적 시스템 간에 가상 머신을 마이그레이션할 때 필요하지만 virsh로 마이그레이션할 때 선택 사항입니다. 네트워크 스토리지 풀은 libvirt에서 관리합니다. 네트워크 스토리지 풀에 지원되는 프로토콜은 다음과 같습니다.
- 파이버 채널 기반 LUN
- iSCSI
- NFS
- GFS2
- InfiniBand 및 10GbE iWARP 어댑터에 사용되는 블록 내보내기 프로토콜인 SCSI RCP(SCSI RCP)입니다.
11.2. volumes 링크 복사링크가 클립보드에 복사되었습니다!
볼륨 참조
특정 볼륨을 참조하려면 다음 세 가지 접근 방법을 사용할 수 있습니다.
- 볼륨 및 스토리지 풀의 이름
- 볼륨은 해당 볼륨이 속한 스토리지 풀의 식별자와 함께 이름으로 참조할 수 있습니다. virsh 명령줄에서
--poolstorage_pool volume_name 형식을 사용합니다.예를 들어 guest_images 풀의 firstimage 볼륨입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 호스트 물리적 머신 시스템의 스토리지 전체 경로
- 볼륨은 파일 시스템의 전체 경로에 의해 참조될 수도 있습니다. 이 방법을 사용하는 경우 풀 식별자를 포함할 필요가 없습니다.예를 들어, secondimage.img 라는 볼륨이 호스트 물리적 머신 시스템에 /images/secondimage.img 로 표시됩니다. 이미지를 /images/secondimage.img 라고 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 고유한 볼륨 키
- 가상화 시스템에서 볼륨이 처음 생성되면 고유 식별자가 생성되어 할당됩니다. 고유 식별자는 볼륨 키 라고 합니다. 이 볼륨 키 형식은 사용된 스토리지에 따라 다릅니다.LVM과 같은 블록 기반 스토리지와 함께 사용하는 경우 볼륨 키는 다음 형식을 따를 수 있습니다.
c3pKz4-qPVc-Xf7M-7WNM-WJc8-qSiz-mtvpGn
c3pKz4-qPVc-Xf7M-7WNM-WJc8-qSiz-mtvpGnCopy to Clipboard Copied! Toggle word wrap Toggle overflow 파일 기반 스토리지와 함께 사용하는 경우 볼륨 키가 볼륨 스토리지의 전체 경로 사본일 수 있습니다./images/secondimage.img
/images/secondimage.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어, Wlvnf7-a4a3-Tlje-lje-lJDa-9eak-PZBv-LoZuUr 의 볼륨 키가 있는 볼륨:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Vol-name
- 볼륨 경로 또는 볼륨 키와 함께 제공되는 경우 볼륨 이름을 반환합니다.
virsh vol-name /dev/guest_images/firstimage firstimage virsh vol-name Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr
# virsh vol-name /dev/guest_images/firstimage firstimage # virsh vol-name Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUrCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Vol-path
- 볼륨 키와 함께 제공된 경우 볼륨 경로를 반환하거나 스토리지 풀 식별자와 볼륨 이름을 반환합니다.
virsh vol-path Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr /dev/guest_images/firstimage virsh vol-path --pool guest_images firstimage /dev/guest_images/firstimage
# virsh vol-path Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr /dev/guest_images/firstimage # virsh vol-path --pool guest_images firstimage /dev/guest_images/firstimageCopy to Clipboard Copied! Toggle word wrap Toggle overflow - vol-key 명령
- 볼륨 경로가 제공된 경우 볼륨 키를 반환하거나 스토리지 풀 식별자와 볼륨 이름을 반환합니다.
virsh vol-key /dev/guest_images/firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr virsh vol-key --pool guest_images firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr
# virsh vol-key /dev/guest_images/firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr # virsh vol-key --pool guest_images firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUrCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12장. 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
예 12.1. NFS 스토리지 풀
/path/to/share 는 /vm_data에 마운트되어야 함). 풀이 시작되면 libvirt는 시스템 관리자가 로그인한 것처럼 NFS .example.com:/path/to/share /vmdata 와 마찬가지로 지정된 디렉터리에 공유를 마운트합니다. 풀이 autostart로 구성된 경우 libvirt는 libvirt를 시작할 때 지정된 디렉터리에 NFS 공유가 마운트되도록 합니다.
12.1. 디스크 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
/dev/sdb)에 대한 쓰기 액세스 권한이 부여되지 않아야 합니다. 파티션(예: /dev/sdb1) 또는 LVM 볼륨 사용.
12.1.1. virsh를 사용하여 디스크 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
디스크에 GPT 디스크 레이블 만들기
디스크는 GUID 파티션 테이블 (GPT) 디스크 레이블을 사용하여 레이블을 다시 지정해야 합니다. GPT 디스크 레이블을 사용하면 각 장치에 최대 128개의 파티션을 만들 수 있습니다. GPT 파티션 테이블은 MS-DOS 파티션 테이블보다 훨씬 더 많은 파티션에 대한 파티션 데이터를 저장할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 구성 파일 생성
새 장치에 필요한 스토리지 풀 정보를 포함하는 임시 XML 텍스트 파일을 생성합니다.파일은 아래 표시된 형식이어야 하며 다음 필드를 포함해야 합니다.- <name>guest_images_disk</name>
name매개변수는 스토리지 풀의 이름을 결정합니다. 이 예에서는 아래 예제에서 guest_images_disk 라는 이름을 사용합니다.- <device path='/dev/sdb'/>
path속성이 있는device매개변수는 스토리지 장치의 장치 경로를 지정합니다. 이 예에서는 /dev/sdb 장치를 사용합니다.- <target> <path>/dev</path></target>
경로하위 매개 변수가 있는 파일 시스템대상매개 변수는 이 스토리지 풀을 사용하여 생성된 볼륨을 연결할 호스트 물리적 머신 파일 시스템의 위치를 결정합니다.예를 들면 sdb1, sdb2, sdb3입니다. 아래 예제와 같이 /dev/ 를 사용하면 이 스토리지 풀에서 생성된 볼륨에 /dev /sdb1, /dev/sdb2, / dev/sdb3로 액세스할 수 있음을 의미합니다.- <format type='gpt'/>
format매개 변수는 파티션 테이블 유형을 지정합니다. 이 예에서는 아래 예제의 gpt 를 사용하여 이전 단계에서 만든 GPT 디스크 레이블 유형과 일치합니다.
텍스트 편집기를 사용하여 스토리지 풀 장치의 XML 파일을 생성합니다.예 12.2. 디스크 기반 스토리지 장치 스토리지 풀
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 장치 연결
이전 단계에서 만든 XML 구성 파일과 함께 virsh pool-define 명령을 사용하여 스토리지 풀 정의를 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 시작
virsh pool-start 명령을 사용하여 스토리지 풀을 시작합니다. 풀이 virsh pool-list --all 명령으로 시작되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 시작 켜기
스토리지 풀에 대해autostart를 켭니다. autostart는 서비스가 시작될 때 스토리지 풀을 시작하도록libvirtd서비스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 구성 확인
스토리지 풀이 올바르게 생성되었고 크기가 올바르게 보고되었는지, 상태 보고서가실행중으로 생성되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 임시 구성 파일을 제거합니다.
필요하지 않은 경우 임시 스토리지 풀 XML 구성 파일을 제거합니다.rm ~/guest_images_disk.xml
# rm ~/guest_images_disk.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.2. virsh를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다.
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 스토리지 풀의 정의 제거
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. 파티션 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
/dev/sdc)가 500GB, ext4 포맷 파티션(/dev/sdc1)으로 분할되어 있습니다. 아래 절차를 사용하여 스토리지 풀을 설정합니다.
12.2.1. virt-manager를 사용하여 파티션 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
절차 12.1. virt-manager를 사용하여 파티션 기반 스토리지 풀 생성
스토리지 풀 설정 열기
- virt-manager 그래픽 인터페이스의 기본 창에서 호스트 물리적 머신을 선택합니다.편집 메뉴를 열고 연결 세부정보를 선택합니다.
그림 12.1. 연결 세부 정보
- 연결 세부 정보 창의 스토리지 탭을 클릭합니다.
그림 12.2. 스토리지 탭
새 스토리지 풀 생성
새 풀 추가(1부)
+ 버튼을 누릅니다(추가 풀 버튼). Add a New Storage Pool 마법사가 표시됩니다.스토리지 의 이름을 선택합니다. 이 예에서는 이름이 guest_images_fs 를 사용합니다. 유형을 fs로 변경: 사전 포맷된 블록 장치.그림 12.3. 스토리지 풀 이름 및 유형
버튼을 눌러 계속합니다.새 풀 추가(2부)
,, 필드를 변경합니다.그림 12.4. 스토리지 풀 경로 및 형식
- 대상 경로
- 필드에 스토리지 풀의 소스 장치를 마운트할 위치를 입력합니다. 위치가 아직 없는 경우 virt-manager 는 디렉터리를 생성합니다.
- 형식
- 형식 목록에서 형식을 선택합니다.Select a format from the list. 선택한 형식으로 장치가 포맷됩니다.이 예에서는 기본 Red Hat Enterprise Linux 파일 시스템인 ext4 파일 시스템을 사용합니다.
- 소스 경로
- 소스 경로 필드에 장치를 입력합니다.이 예에서는 /dev/sdc1 장치를 사용합니다.
세부 사항을 확인하고 버튼을 눌러 스토리지 풀을 생성합니다.
새 스토리지 풀 확인
새 스토리지 풀이 몇 초 후에 왼쪽의 스토리지 목록에 나타납니다. 이 예제에서는 크기가 예상대로 458.20GB Free 로 보고되었는지 확인합니다. (상태) 필드가 새 스토리지 풀을 Active 로 보고하는지 확인합니다.스토리지 풀을 선택합니다. (자동 시작) 필드에서 (부팅 시) 확인란을 클릭합니다. 이렇게 하면libvirtd서비스가 시작될 때마다 스토리지 장치가 시작됩니다.그림 12.5. 스토리지 목록 확인
이제 스토리지 풀이 생성되고 연결 세부 정보 창을 닫습니다.
12.2.2. virt-manager를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다. 이를 수행하려면 중지할 스토리지 풀을 선택하고 스토리지 창 하단에 있는 빨간색 X 아이콘을 클릭합니다.
그림 12.6. 아이콘 중지
- bin can 아이콘을 클릭하여 스토리지 풀을 삭제합니다. 이 아이콘은 스토리지 풀을 먼저 중지한 경우에만 활성화됩니다.
12.2.3. virsh를 사용하여 파티션 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
/dev/sdb)으로 할당하지 마십시오. 게스트에 전체 디스크 또는 블록 장치에 대한 쓰기 액세스 권한이 부여되지 않아야 합니다. 파티션(예: /dev/sdb1)을 스토리지 풀에 할당하는 데 이 방법을 사용합니다.
절차 12.2. virsh를 사용하여 사전 포맷된 블록 장치 스토리지 풀 생성
스토리지 풀 정의 생성
virsh pool-define-as 명령을 사용하여 새 스토리지 풀 정의를 생성합니다. 사전 포맷된 디스크를 스토리지 풀로 정의하려면 세 가지 옵션을 제공해야 합니다.- 파티션 이름
name매개변수는 스토리지 풀의 이름을 결정합니다. 이 예에서는 아래 예제에서 guest_images_fs 라는 이름을 사용합니다.- device
path속성이 있는device매개변수는 스토리지 장치의 장치 경로를 지정합니다. 이 예에서는 /dev/sdc1 파티션을 사용합니다.- mountpoint
- 포맷된 장치가
마운트될 로컬 파일 시스템의 마운트 지점. 마운트 지점 디렉터리가 없는 경우 virsh 명령은 디렉터리를 생성할 수 있습니다.이 예에서는 /guest_images 디렉터리가 사용됩니다.
virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images" Pool guest_images_fs defined
# virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images" Pool guest_images_fs definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 새 풀과 마운트 지점이 생성됩니다.새 풀 확인
현재 스토리지 풀을 나열합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트 지점 만들기
virsh pool-build 명령을 사용하여 사전 포맷된 파일 시스템 스토리지 풀에 대한 마운트 지점을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 시작
virsh pool-start 명령을 사용하여 파일 시스템을 마운트 지점에 마운트하고 풀을 사용할 수 있도록 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 시작 켜기
기본적으로 virsh 로 정의된 스토리지 풀은libvirtd가 시작될 때마다 자동으로 시작하도록 설정되지 않습니다. 이 문제를 해결하려면 virsh pool-autostart 명령으로 자동으로 시작합니다. 이제libvirtd가 시작될 때마다 스토리지 풀이 자동으로 시작됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 확인
스토리지 풀이 올바르게 생성되고 보고된 크기가 예상대로 있고 상태가 running 로 보고되었는지 확인합니다. 파일 시스템의 마운트 지점에 장치가 마운트되었음을 나타내는 "lost+found" 디렉터리가 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.4. virsh를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다.
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요한 경우 스토리지 풀이 있는 디렉터리를 제거하려면 다음 명령을 사용합니다.
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 스토리지 풀의 정의 제거
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. 디렉터리 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
12.3.1. virt-manager를 사용하여 디렉터리 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
로컬 디렉터리 만들기
선택 사항: 스토리지 풀에 사용할 새 디렉터리 생성
스토리지 풀의 호스트 물리적 시스템에 디렉터리를 생성합니다. 이 예에서는 /guest 가상 machine_images 라는 디렉터리를 사용합니다.mkdir /guest_images
# mkdir /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 디렉터리 소유권 설정
디렉터리의 사용자 및 그룹 소유권을 변경합니다. 디렉터리는 root 사용자가 소유해야 합니다.chown root:root /guest_images
# chown root:root /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 디렉터리 권한 설정
디렉터리의 파일 권한을 변경합니다.chmod 700 /guest_images
# chmod 700 /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항 확인
권한이 수정되었는지 확인합니다. 출력에 올바르게 구성된 빈 디렉터리가 표시됩니다.ls -la /guest_images total 8 drwx------. 2 root root 4096 May 28 13:57 . dr-xr-xr-x. 26 root root 4096 May 28 13:57 ..
# ls -la /guest_images total 8 drwx------. 2 root root 4096 May 28 13:57 . dr-xr-xr-x. 26 root root 4096 May 28 13:57 ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow
SELinux 파일 컨텍스트 구성
새 디렉터리에 올바른 SELinux 컨텍스트를 구성합니다. 풀 이름과 디렉터리의 이름은 일치할 필요가 없습니다. 그러나 게스트 가상 머신을 종료하는 경우 libvirt는 컨텍스트를 기본값으로 다시 설정해야 합니다. 디렉터리의 컨텍스트에 따라 이 기본값이 결정됩니다. 게스트 가상 시스템이 종료될 때 이미지에 'virt_image_t'라는 레이블이 지정되고 호스트 물리적 시스템에서 실행되는 다른 프로세스와 격리되도록 virt_image_t 디렉터리에 레이블을 지정할 수 있습니다.semanage fcontext -a -t virt_image_t '/guest_images(/.*)?' restorecon -R /guest_images
# semanage fcontext -a -t virt_image_t '/guest_images(/.*)?' # restorecon -R /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 설정 열기
- virt-manager 그래픽 인터페이스의 기본 창에서 호스트 물리적 머신을 선택합니다.편집 메뉴를 열고 연결 세부정보를 선택합니다.
그림 12.7. 연결 세부 정보 창
- 연결 세부 정보 창의 스토리지 탭을 클릭합니다.
그림 12.8. 스토리지 탭
새 스토리지 풀 생성
새 풀 추가(1부)
+ 버튼을 누릅니다(추가 풀 버튼). Add a New Storage Pool 마법사가 표시됩니다.스토리지 의 이름을 선택합니다. 이 예에서는 guest_images 라는 이름을 사용합니다. 유형을 dir: Filesystem Directory 로 변경합니다.그림 12.9. 스토리지 풀의 이름
버튼을 눌러 계속합니다.새 풀 추가(2부)
필드를 변경합니다. 예를 들면 /guest_images 입니다.세부 사항을 확인하고 버튼을 눌러 스토리지 풀을 생성합니다.
새 스토리지 풀 확인
새 스토리지 풀이 몇 초 후에 왼쪽의 스토리지 목록에 나타납니다. 이 예제에서는 크기가 예상대로 36.41GB Free 로 보고되었는지 확인합니다. (상태) 필드가 새 스토리지 풀을 Active 로 보고하는지 확인합니다.스토리지 풀을 선택합니다. (자동 시작) 필드에서 (부팅 시) 확인란이 선택되었는지 확인합니다. 이렇게 하면libvirtd서비스가 시작될 때마다 스토리지 풀이 시작됩니다.그림 12.10. 스토리지 풀 정보 확인
이제 스토리지 풀이 생성되고 연결 세부 정보 창을 닫습니다.
12.3.2. virt-manager를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다. 이를 수행하려면 중지할 스토리지 풀을 선택하고 스토리지 창 하단에 있는 빨간색 X 아이콘을 클릭합니다.
그림 12.11. 아이콘 중지
- bin can 아이콘을 클릭하여 스토리지 풀을 삭제합니다. 이 아이콘은 스토리지 풀을 먼저 중지한 경우에만 활성화됩니다.
12.3.3. virsh를 사용하여 디렉터리 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 풀 정의 생성
virsh pool-define-as 명령을 사용하여 새 스토리지 풀을 정의합니다. 디렉터리 기반 스토리지 풀을 생성하는 데 필요한 두 가지 옵션이 있습니다.- 스토리지 풀의 이름입니다.이 예에서는 guest_images 라는 이름을 사용합니다. 이 예제에서 사용된 추가 virsh 명령은 모두 이 이름을 사용합니다.
- 게스트 이미지 파일을 저장하기 위한 파일 시스템 디렉터리 경로 입니다. 이 디렉터리가 없으면 virsh 를 생성합니다.이 예에서는 /guest_images 디렉터리를 사용합니다.
virsh pool-define-as guest_images dir - - - - "/guest_images" Pool guest_images defined
# virsh pool-define-as guest_images dir - - - - "/guest_images" Pool guest_images definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀이 나열되었는지 확인합니다.
스토리지 풀 오브젝트가 올바르게 생성되고 상태가비활성으로 보고되는지 확인합니다.virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images inactive no
# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images inactive noCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로컬 디렉터리 만들기
다음과 같이 virsh pool-build 명령을 사용하여 guest_images 디렉터리의 디렉터리 기반 스토리지 풀을 빌드합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 시작
virsh 명령 pool-start 를 사용하여 디렉토리 스토리지 풀을 활성화하여 풀 볼륨을 게스트 디스크 이미지로 사용할 수 있도록 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 시작 켜기
스토리지 풀에 대해autostart를 켭니다. autostart는 서비스가 시작될 때 스토리지 풀을 시작하도록libvirtd서비스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 구성 확인
스토리지 풀이 올바르게 생성되고 크기가 올바르게 보고되었으며 상태가running으로 보고되었는지 확인합니다. 게스트 가상 시스템이 실행 중이 아닌 경우에도 풀에 액세스할 수 있도록 하려면Persistent가yes로 보고되는지 확인합니다. 서비스가 시작될 때 풀이 자동으로 시작되도록 하려면Autostart가yes로 보고되는지 확인하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.4. virsh를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다.
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요한 경우 스토리지 풀이 있는 디렉터리를 제거하려면 다음 명령을 사용합니다.
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 스토리지 풀의 정의 제거
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. LVM 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
12.4.1. virt-manager를 사용하여 LVM 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: LVM 볼륨의 새 파티션 만들기
다음 단계에서는 새 하드 디스크 드라이브에 새 파티션 및 LVM 볼륨 그룹을 만드는 방법을 설명합니다.주의이 절차에서는 선택한 저장 장치에서 모든 데이터를 제거합니다.새 파티션 만들기
fdisk 명령을 사용하여 명령줄에서 새 디스크 파티션을 만듭니다. 다음 예제에서는 저장 장치/dev/sdb에서 전체 디스크를 사용하는 새 파티션을 생성합니다.fdisk /dev/sdb Command (m for help):
# fdisk /dev/sdb Command (m for help):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 파티션은n을 누릅니다.- 기본 파티션은
p를 누릅니다.Command action e extended p primary partition (1-4)
Command action e extended p primary partition (1-4)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 사용 가능한 파티션 번호를 선택합니다. 이 예에서는
1을 입력하여 첫 번째 파티션이 선택됩니다.Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Enter 키를 눌러 기본 첫 번째 실린더를
입력합니다.First cylinder (1-400, default 1):
First cylinder (1-400, default 1):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파티션의 크기를 선택합니다. 이 예에서는
Enter를 눌러 전체 디스크가 할당됩니다.Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):Copy to Clipboard Copied! Toggle word wrap Toggle overflow t를 눌러 파티션 유형을 설정합니다.Command (m for help): t
Command (m for help): tCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전 단계에서 만든 파티션을 선택합니다. 이 예에서 파티션 번호는
1입니다.Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Linux LVM 파티션에
8e를 입력합니다.Hex code (type L to list codes): 8e
Hex code (type L to list codes): 8eCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 디스크에 변경 사항을 쓰고 종료합니다.
Command (m for help): w Command (m for help): q
Command (m for help): w Command (m for help): qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 LVM 볼륨 그룹 만들기
vgcreate 명령을 사용하여 새 LVM 볼륨 그룹을 만듭니다. 이 예제에서는 guest_images_lvm 이라는 볼륨 그룹을 생성합니다.vgcreate guest_images_lvm /dev/sdb1 Physical volume "/dev/vdb1" successfully created Volume group "guest_images_lvm" successfully created
# vgcreate guest_images_lvm /dev/sdb1 Physical volume "/dev/vdb1" successfully created Volume group "guest_images_lvm" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이제 새 LVM 볼륨 그룹 guest_images_lvm 을 LVM 기반 스토리지 풀에 사용할 수 있습니다.스토리지 풀 설정 열기
- virt-manager 그래픽 인터페이스의 기본 창에서 호스트를 선택합니다.편집 메뉴를 열고 연결 세부정보를 선택합니다.
그림 12.12. 연결 세부 정보
- 스토리지 탭을 클릭합니다.
그림 12.13. 스토리지 탭
새 스토리지 풀 생성
마법사 시작
+ 버튼을 누릅니다(추가 풀 버튼). Add a New Storage Pool 마법사가 표시됩니다.스토리지 의 이름을 선택합니다. 예에서는 guest_images_lvm 을 사용합니다. 그런 다음 유형을 변경합니다 . LVM 볼륨 그룹, 및그림 12.14. LVM 스토리지 풀 추가
버튼을 눌러 계속합니다.새 풀 추가(2부)
필드를 변경합니다. 이 예에서는 /guest_images 를 사용합니다.필드를 입력한 다음 확인란을 선택합니다.- 필드를 사용하여 기존 LVM 볼륨 그룹을 선택하거나 새 볼륨 그룹의 이름으로 선택합니다. 기본 형식은
/dev/storage_pool_name 입니다.이 예에서는 /dev/guest_images_lvm 이라는 새 볼륨 그룹을 사용합니다. - 기존 LVM 볼륨 그룹이 필드는 선택 사항입니다.새 LVM 볼륨 그룹의 경우 소스 경로 필드에 스토리지 장치의 위치를 입력합니다. 이 예제에서는 빈 파티션 /dev/sdc 를 사용합니다.
- (빌드 풀) 확인란을 통해 virt-manager 에 새 LVM 볼륨 그룹을 만들도록 지시합니다. 기존 볼륨 그룹을 사용하는 경우 확인란을 선택하지 않아야 합니다.이 예에서는 빈 파티션을 사용하여 새 볼륨 그룹을 생성하므로 확인란을 선택해야 합니다.
그림 12.15. 대상 및 소스 추가
세부 사항을 확인하고 버튼 포맷을 LVM 볼륨 그룹을 선택하고 스토리지 풀을 만듭니다.포맷할 장치 확인
경고 메시지가 나타납니다.그림 12.16. 경고 메시지
예 버튼을 눌러 저장 장치의 모든 데이터를 지우고 스토리지 풀을 생성합니다.
새 스토리지 풀 확인
새 스토리지 풀이 몇 초 후에 왼쪽 목록에 나타납니다. 예제에서 세부 정보, 465.76GB의 여유가 있는지 확인하십시오. 또한 (상태) 필드가 새 스토리지 풀을 Active 로 보고하는지 확인합니다.일반적으로 확인란을 활성화하여 libvirtd에서 스토리지 풀이 자동으로 시작되도록 하는 것이 좋습니다.그림 12.17. LVM 스토리지 풀 세부 정보 확인
작업이 완료되면 호스트 세부 정보 대화 상자를 닫습니다.
12.4.2. virt-manager를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다. 이를 수행하려면 중지할 스토리지 풀을 선택하고 스토리지 창 하단에 있는 빨간색 X 아이콘을 클릭합니다.
그림 12.18. 아이콘 중지
- bin can 아이콘을 클릭하여 스토리지 풀을 삭제합니다. 이 아이콘은 스토리지 풀을 먼저 중지한 경우에만 활성화됩니다.
12.4.3. virsh를 사용하여 LVM 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
/dev/sdc)에서 guest_images_lvm 이라는 풀의 예를 사용합니다. 이는 예제일 뿐이며 설정이 적절하게 대체되어야 합니다.
절차 12.3. virsh를 사용하여 LVM 기반 스토리지 풀 생성
- 풀 이름 guest_images_lvm 을 정의합니다.
virsh pool-define-as guest_images_lvm logical - - /dev/sdc libvirt_lvm \ /dev/libvirt_lvm Pool guest_images_lvm defined
# virsh pool-define-as guest_images_lvm logical - - /dev/sdc libvirt_lvm \ /dev/libvirt_lvm Pool guest_images_lvm definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 지정된 이름에 따라 풀을 빌드합니다. 이미 기존 볼륨 그룹을 사용하는 경우 이 단계를 건너뜁니다.
virsh pool-build guest_images_lvm Pool guest_images_lvm built
# virsh pool-build guest_images_lvm Pool guest_images_lvm builtCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 풀을 초기화합니다.
virsh pool-start guest_images_lvm Pool guest_images_lvm started
# virsh pool-start guest_images_lvm Pool guest_images_lvm startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - vgs 명령을 사용하여 볼륨 그룹 정보를 표시합니다.
vgs VG #PV #LV #SN Attr VSize VFree libvirt_lvm 1 0 0 wz--n- 465.76g 465.76g
# vgs VG #PV #LV #SN Attr VSize VFree libvirt_lvm 1 0 0 wz--n- 465.76g 465.76gCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 자동으로 시작하도록 풀을 설정합니다.
virsh pool-autostart guest_images_lvm Pool guest_images_lvm marked as autostarted
# virsh pool-autostart guest_images_lvm Pool guest_images_lvm marked as autostartedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - virsh 명령을 사용하여 사용 가능한 풀을 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령은 이 풀 내에서 3개의 볼륨(volume1,volume2 및 volume3)을 생성하는 방법을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이 풀에서 사용 가능한 볼륨을 virsh 명령과 함께 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 두 명령(lvscan and lvs)은 새로 생성된 볼륨에 대한 추가 정보를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4. virsh를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트의 문제를 방지하려면 스토리지 풀을 중지하고 사용하는 리소스를 모두 해제하는 것이 가장 좋습니다.
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 필요한 경우 스토리지 풀이 있는 디렉터리를 제거하려면 다음 명령을 사용합니다.
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 스토리지 풀의 정의 제거
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. iSCSI 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
12.5.1. 소프트웨어 iSCSI 대상 구성 링크 복사링크가 클립보드에 복사되었습니다!
절차 12.4. iSCSI 대상 생성
필수 패키지 설치
scsi-target-utils 패키지 및 모든 종속 항목 설치yum install scsi-target-utils
# yum install scsi-target-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow tgtd 서비스 시작
tgtd 서비스는 물리적 시스템 SCSI 대상을 호스팅하고 iSCSI 프로토콜을 사용하여 물리적 머신 대상을 호스팅합니다. tgtd 서비스를 시작하고 chkconfig 명령을 사용하여 다시 시작한 후 서비스를 영구적으로 만듭니다.service tgtd start chkconfig tgtd on
# service tgtd start # chkconfig tgtd onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: LVM 볼륨 생성
LVM 볼륨은 iSCSI 백업 이미지에 유용합니다. LVM 스냅샷과 크기 조정은 게스트 가상 머신에 유용할 수 있습니다. 이 예제에서는 iSCSI를 사용하여 게스트 가상 머신을 호스트하기 위해 RAID5 어레이의 virtstore 라는 새 볼륨 그룹에 virtimage1 이라는 LVM 이미지를 생성합니다.RAID 배열 생성
소프트웨어 RAID5 어레이 생성은 Red Hat Enterprise Linux 배포 가이드에서 다룹니다.LVM 볼륨 그룹 만들기
vgcreate 명령을 사용하여 virtstore 라는 볼륨 그룹을 만듭니다.vgcreate virtstore /dev/md1
# vgcreate virtstore /dev/md1Copy to Clipboard Copied! Toggle word wrap Toggle overflow LVM 논리 볼륨 생성
lvcreate 명령을 사용하여 크기가 20GB인 virtstore 볼륨 그룹에 virtimage1 이라는 논리 볼륨 그룹을 생성합니다.lvcreate --size 20G -n virtimage1 virtstore
# lvcreate --size 20G -n virtimage1 virtstoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새로운 논리 볼륨 virtimage1 은 iSCSI에 사용할 준비가 되었습니다.
선택 사항: 파일 기반 이미지 생성
파일 기반 스토리지는 테스트용으로 충분하지만 프로덕션 환경 또는 중요한 I/O 활동에는 권장되지 않습니다. 이 선택적 절차에서는 iSCSI 대상에 대해 virtimage2.img 라는 파일 기반 이미지를 생성합니다.이미지에 대한 새 디렉터리 만들기
이미지를 저장할 새 디렉터리를 만듭니다. 디렉터리에 올바른 SELinux 컨텍스트가 있어야 합니다.mkdir -p /var/lib/tgtd/virtualization
# mkdir -p /var/lib/tgtd/virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지 파일 생성
크기가 10GB인 virtimage2.img 라는 이미지를 만듭니다.dd if=/dev/zero of=/var/lib/tgtd/virtualization/virtimage2.img bs=1M seek=10000 count=0
# dd if=/dev/zero of=/var/lib/tgtd/virtualization/virtimage2.img bs=1M seek=10000 count=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux 파일 컨텍스트 구성
새 이미지 및 디렉터리에 대해 올바른 SELinux 컨텍스트를 구성합니다.restorecon -R /var/lib/tgtd
# restorecon -R /var/lib/tgtdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새로운 파일 기반 이미지인 virtimage2.img 는 iSCSI에 사용할 수 있습니다.
대상 생성
/etc/tgt/targets.conf파일에 XML 항목을 추가하여 대상을 생성할 수 있습니다.target속성에는 IQN(iSCSI Qualified Name)이 필요합니다. IQN의 형식은 다음과 같습니다.iqn.yyyy-mm.reversed domain name:optional identifier text
iqn.yyyy-mm.reversed domain name:optional identifier textCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.- YYYY-mm 는 장치가 시작된 연도 및 월 (예: 2010-05)을 나타냅니다.
- 역방향 도메인 이름은 반대로 호스트 물리적 시스템 도메인 이름입니다(예: IQN의 server1.example.com 은 com.example.server1).
- 선택적 식별자 텍스트는 관리자가 장치 또는 하드웨어를 식별하는 데 도움이 되는 공백이 없는 텍스트 문자열입니다.
이 예제에서는 선택적 식별자 평가판 으로 server1.example.com 의 선택적 단계에서 생성된 두 가지 유형의 이미지에 대해 iSCSI 대상을 생성합니다. 다음을/etc/tgt/targets.conf파일에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 드라이버 유형을 iSCSI로 설정하는기본-driver iscsi줄이/etc/tgt/targets.conf파일에 포함되어 있는지 확인합니다. 드라이버는 기본적으로 iSCSI를 사용합니다.중요이 예제에서는 액세스 제어 없이 전역에서 액세스할 수 있는 대상을 생성합니다. 보안 액세스 구현에 대한 정보는 scsi-target-utils를 참조하십시오.tgtd 서비스 다시 시작
tgtd서비스를 다시 시작하여 구성 변경 사항을 다시 로드합니다.service tgtd restart
# service tgtd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow iptables 구성
iptables 를 사용하여 iSCSI 액세스를 위해 포트 3260을 엽니다.iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT service iptables save service iptables restart
# iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT # service iptables save # service iptables restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 대상 확인
tgt-admin --show 명령을 사용하여 설정이 성공했는지 확인하려면 새 대상을 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의ACL 목록은 all로 설정됩니다. 이렇게 하면 로컬 네트워크의 모든 시스템이 이 장치에 액세스할 수 있습니다. 프로덕션 환경에 대해 호스트 물리적 시스템 액세스 ACL을 설정하는 것이 좋습니다.선택 사항: 테스트 검색
새 iSCSI 장치를 검색할 수 있는지 테스트합니다.iscsiadm --mode discovery --type sendtargets --portal server1.example.com 127.0.0.1:3260,1 iqn.2010-05.com.example.server1:iscsirhel6guest
# iscsiadm --mode discovery --type sendtargets --portal server1.example.com 127.0.0.1:3260,1 iqn.2010-05.com.example.server1:iscsirhel6guestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 장치 연결 테스트
새 장치(iqn.2010-05.com.example.server1:iscsirhel6guest)를 연결하여 장치를 연결할 수 있는지 확인합니다.iscsiadm -d2 -m node --login scsiadm: Max file limits 1024 1024 Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.
# iscsiadm -d2 -m node --login scsiadm: Max file limits 1024 1024 Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 장치를 분리합니다.iscsiadm -d2 -m node --logout scsiadm: Max file limits 1024 1024 Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260 Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.
# iscsiadm -d2 -m node --logout scsiadm: Max file limits 1024 1024 Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260 Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.2. virt-manager에 iSCSI 대상 추가 링크 복사링크가 클립보드에 복사되었습니다!
절차 12.5. virt-manager에 iSCSI 장치 추가
호스트 물리적 시스템의 스토리지 탭을 엽니다.
연결 세부 정보 창에서 Storage 탭을 엽니다.- virt-manager 를 엽니다.
- 기본 virt-manager 창에서 호스트 물리적 시스템을 선택합니다. 편집 메뉴를 클릭하고 연결 세부 정보를 선택합니다.
그림 12.19. 연결 세부 정보
- 스토리지 탭을 클릭합니다.
그림 12.20. 스토리지 메뉴
새 풀 추가(1부)
+ 버튼을 누릅니다(추가 풀 버튼). Add a New Storage Pool 마법사가 표시됩니다.그림 12.21. iscsi 스토리지 풀 이름 및 유형 추가
스토리지 풀의 이름을 선택하고 Type을 iscsi로 변경한 다음 를 눌러 계속합니다.새 풀 추가(2부)
이 메뉴의 필드를 완료하려면 12.5절. “iSCSI 기반 스토리지 풀” 및 절차 12.4. “iSCSI 대상 생성” 에서 사용한 정보가 필요합니다.- iSCSI 소스 및 대상을 입력합니다. Format 옵션은 게스트 가상 머신에서 포맷을 처리할 수 없습니다. 대상 경로 를 편집하지 않는 것이 좋습니다. 기본 대상 경로 값인
/dev/disk/by-path/은 해당 디렉터리에 드라이브 경로를 추가합니다. 대상 경로는 마이그레이션을 위한 모든 호스트 물리적 시스템에서 동일해야 합니다. - iSCSI 대상의 호스트 이름 또는 IP 주소를 입력합니다. 이 예에서는
host1.example.com을 사용합니다. - 소스 경로필드에 iSCSI 대상 IQN을 입력합니다. 절차 12.4. “iSCSI 대상 생성” 에서 12.5절. “iSCSI 기반 스토리지 풀” 을 살펴보면
/etc/tgt/targets.conf 파일에 추가한 정보입니다. 이 예에서는iqn.2010-05.com.example.server1:iscsirhel6guest를 사용합니다. - IQN 확인란을 선택하여 이니시에이터의 IQN을 입력합니다. 이 예에서는
iqn.2010-05.com.example.host1:iscsirhel6을 사용합니다. - 를 클릭하여 새 스토리지 풀을 생성합니다.
그림 12.22. iscsi 스토리지 풀 생성
12.5.3. virt-manager를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다. 이를 수행하려면 중지할 스토리지 풀을 선택하고 스토리지 창 하단에 있는 빨간색 X 아이콘을 클릭합니다.
그림 12.23. 아이콘 중지
- bin can 아이콘을 클릭하여 스토리지 풀을 삭제합니다. 이 아이콘은 스토리지 풀을 먼저 중지한 경우에만 활성화됩니다.
12.5.4. virsh를 사용하여 iSCSI 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
pool-define-as를 사용하여 명령줄에서 풀을 정의합니다.
virsh 명령줄 도구를 사용하여 스토리지 풀 정의를 생성할 수 있습니다. virsh 를 사용하여 스토리지 풀을 생성하는 것은 시스템 관리자가 스크립트를 사용하여 여러 스토리지 풀을 생성하는 데 유용합니다.virsh pool-define-as 명령에는 다음 형식으로 허용되는 몇 가지 매개 변수가 있습니다.virsh pool-define-as name type source-host source-path source-dev source-name target
virsh pool-define-as name type source-host source-path source-dev source-name targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 매개변수는 다음과 같이 설명됩니다.- type
- 이 풀을 특정 유형으로 정의합니다. iscsi for example
- name
- 고유해야 하며 스토리지 풀의 이름을 설정해야 합니다.
- source-host 및 source-path
- 호스트 이름과 iSCSI IQN
- source-dev 및 source-name
- iSCSI 기반 풀에는 이러한 매개 변수가 필요하지 않으며 - 문자를 사용하여 필드를 비워 둡니다.
- 대상
- 호스트 물리적 시스템에서 iSCSI 장치를 마운트할 위치를 정의합니다.
아래 예제에서는 이전 단계와 동일한 iSCSI 기반 스토리지 풀을 생성합니다.virsh pool-define-as --name scsirhel6guest --type iscsi \ --source-host server1.example.com \ --source-dev iqn.2010-05.com.example.server1:iscsirhel6guest --target /dev/disk/by-path Pool iscsirhel6guest defined# virsh pool-define-as --name scsirhel6guest --type iscsi \ --source-host server1.example.com \ --source-dev iqn.2010-05.com.example.server1:iscsirhel6guest --target /dev/disk/by-path Pool iscsirhel6guest definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀이 나열되었는지 확인합니다.
스토리지 풀 오브젝트가 올바르게 생성되고 상태가비활성으로 보고되는지 확인합니다.virsh pool-list --all Name State Autostart ----------------------------------------- default active yes iscsirhel6guest inactive no
# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes iscsirhel6guest inactive noCopy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 시작
이를 위해 virsh 명령 pool-start 를 사용합니다. pool-start 를 사용하면 디렉터리 스토리지 풀을 통해 볼륨 및 게스트 가상 머신에 사용할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 시작 켜기
스토리지 풀에 대해autostart를 켭니다. autostart는 서비스가 시작될 때 스토리지 풀을 시작하도록libvirtd서비스를 구성합니다.virsh pool-autostart iscsirhel6guest Pool iscsirhel6guest marked as autostarted
# virsh pool-autostart iscsirhel6guest Pool iscsirhel6guest marked as autostartedCopy to Clipboard Copied! Toggle word wrap Toggle overflow iscsirhel6guest 풀에 autostart가 설정되어 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 풀 구성 확인
스토리지 풀이 올바르게 생성되었고 크기가 올바르게 보고되었는지, 상태 보고서가실행중으로 생성되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.5. virsh를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다.
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 스토리지 풀의 정의 제거
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. NFS 기반 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
12.6.1. virt-manager를 사용하여 NFS 기반 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
호스트 물리적 시스템의 스토리지 탭을 엽니다.
호스트 세부 정보 창에서 Storage 탭을 엽니다.- virt-manager 를 엽니다.
- 기본 virt-manager 창에서 호스트 물리적 시스템을 선택합니다. 편집 메뉴를 클릭하고 연결 세부 정보를 선택합니다.
그림 12.24. 연결 세부 정보
- 스토리지 탭을 클릭합니다.
그림 12.25. 스토리지 탭
새 풀 생성(1부)
+ 버튼을 누릅니다(추가 풀 버튼). Add a New Storage Pool 마법사가 표시됩니다.그림 12.26. NFS 이름 및 유형 추가
스토리지 풀의 이름을 선택하고 를 눌러 계속합니다.새 풀 생성(2부)
장치의 대상 경로, 호스트 이름 및 NFS 공유 경로를 입력합니다. Format 옵션을 NFS 로 설정하거나 auto (유형을 감지)로 설정합니다. 마이그레이션을 위해 모든 호스트 물리적 시스템에서 대상 경로가 동일해야 합니다.NFS 서버의 호스트 이름 또는 IP 주소를 입력합니다. 이 예에서는server1.example.com을 사용합니다.NFS 경로를 입력합니다. 이 예에서는/nfstrial을 사용합니다.그림 12.27. NFS 스토리지 풀 생성
를 눌러 새 스토리지 풀을 생성합니다.
12.6.2. virt-manager를 사용하여 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- 동일한 풀을 사용하는 다른 게스트의 문제를 방지하려면 스토리지 풀을 중지하고 사용하는 리소스를 모두 해제하는 것이 가장 좋습니다. 이를 수행하려면 중지할 스토리지 풀을 선택하고 스토리지 창 하단에 있는 빨간색 X 아이콘을 클릭합니다.
그림 12.28. 아이콘 중지
- bin can 아이콘을 클릭하여 스토리지 풀을 삭제합니다. 이 아이콘은 스토리지 풀을 먼저 중지한 경우에만 활성화됩니다.
12.7. GlusterFS 스토리지 풀 링크 복사링크가 클립보드에 복사되었습니다!
12.8. SCSI 장치가 있는 NPIV Virtual Adapter(vHBA) 사용 링크 복사링크가 클립보드에 복사되었습니다!
12.8.1. vHBA 생성 링크 복사링크가 클립보드에 복사되었습니다!
절차 12.6. vHBA 생성
호스트 시스템에서 HBA 찾기
호스트 시스템에서 HBA를 찾으려면 호스트 시스템의 SCSI 장치를 검사하여vport기능이 있는scsi_host를 찾습니다.다음 명령을 실행하여scsi_host목록을 검색합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow scsi_host에 대해 다음 명령을 실행하여vport기능이 있는scsi_host을 나타내는<capability type='vport_ops'>행의 장치 XML을 검사합니다.virsh nodedev-dumpxml scsi_hostN
# virsh nodedev-dumpxml scsi_hostNCopy to Clipboard Copied! Toggle word wrap Toggle overflow HBA의 세부 정보 확인
virsh nodedev-dumpxml HBA_device 명령을 사용하여 HBA의 세부 정보를 확인합니다.virsh nodedev-dumpxml 명령의 XML 출력에는 vHBA를 만드는 데 사용되는<name>,<wwnn>및<wwpn>필드가 나열됩니다.<max_vports>값은 지원되는 최대 vHBAs 수를 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서<max_vports>값은 HBA 구성에서 사용할 수 있는 총 127개의 가상 포트가 있음을 보여줍니다.<vports>값은 현재 사용 중인 가상 포트 수를 보여줍니다. 이러한 값은 vHBA를 생성한 후 업데이트됩니다.vHBA 호스트 장치 만들기
vHBA 호스트에 대해 다음과 유사한 XML 파일을 만듭니다(이 예제에서는 vhba_host3.xml).Copy to Clipboard Copied! Toggle word wrap Toggle overflow <parent>필드는 이 vHBA 장치와 연결할 HBA 장치를 지정합니다.<device>태그의 세부 사항은 다음 단계에서 호스트에 대한 새 vHBA 장치를 생성하는 데 사용됩니다.nodedevXML 형식에 대한 자세한 내용은 을 참조하십시오 http://libvirt.org/formatnode.html.vHBA 호스트 장치에 새 vHBA를 생성
vhba_host3 에 vHBA를 생성하려면 virsh nodedev-create 명령을 사용합니다.virsh nodedev-create vhba_host3.xml Node device scsi_host5 created from vhba_host3.xml
# virsh nodedev-create vhba_host3.xml Node device scsi_host5 created from vhba_host3.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow vHBA 확인
virsh nodedev-dumpxml 명령을 사용하여 새 vHBA의 세부 정보 (scsi_host5)를 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.2. vHBA를 사용하여 스토리지 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
- libvirt 코드는 virsh 명령 출력을 사용하여 LUN 경로를 쉽게 찾을 수 있습니다.
- 가상 머신 마이그레이션은 대상 시스템에서 동일한 vHBA 이름으로 스토리지 풀을 정의하고 시작해야 합니다. 이렇게 하려면 가상 머신의 XML 구성에서 vHBA LUN, libvirt 스토리지 풀 및 볼륨 이름을 지정해야 합니다. 예제는 12.8.3절. “vHBA LUN을 사용하도록 가상 머신 구성” 를 참조하십시오.
SCSI 스토리지 풀 생성
vHBA 구성을 만들려면 먼저 아래 형식을 사용하여 vHBA 를 기반으로 libvirt'scsi'스토리지 풀 XML 파일을 만듭니다.참고절차 12.6. “vHBA 생성” 에 생성된 vHBA를 호스트 이름으로 사용하고 스토리지 풀 구성의 경우 vHBA 이름 scsi_hostN 을 hostN 으로 수정합니다. 이 예에서 vHBA의 이름은 scsi_host5 이며, Red Hat Enterprise Linux 6 libvirt 스토리지 풀에서 <adapter name='host5'/>로 지정됩니다.시스템의/dev/disk/by-{path|id|uuid|label}위치 중 하나와 같이<path>값에 안정적인 위치를 사용하는 것이 좋습니다.<path>및<target>의 요소에 대한 자세한 내용은 에서 http://libvirt.org/formatstorage.html 확인할 수 있습니다.이 예에서'scsi'스토리지 풀 이름은 vhbapool_host3.xml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 풀 정의
스토리지 풀(이 예제에서는 vhbapool_host3 이라는 이름) 을 정의하려면 virsh pool-define 명령을 사용합니다.virsh pool-define vhbapool_host3.xml Pool vhbapool_host3 defined from vhbapool_host3.xml# virsh pool-define vhbapool_host3.xml Pool vhbapool_host3 defined from vhbapool_host3.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 풀 시작
다음 명령을 사용하여 스토리지 풀을 시작합니다.virsh pool-start vhbapool_host3 Pool vhbapool_host3 started
# virsh pool-start vhbapool_host3 Pool vhbapool_host3 startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 시작 활성화
마지막으로 후속 호스트 재부팅이 가상 머신에서 사용할 vHBAs를 자동으로 정의하도록 하려면 스토리지 풀 autostart 기능을 설정합니다(이 예에서는 vhbapool_host3풀의 경우).virsh pool-autostart vhbapool_host3
# virsh pool-autostart vhbapool_host3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.3. vHBA LUN을 사용하도록 가상 머신 구성 링크 복사링크가 클립보드에 복사되었습니다!
사용 가능한 LUN 찾기
먼저 vHBA에서 사용 가능한 LUN 목록을 생성하려면 virsh vol-list 명령을 사용합니다. 예를 들어 다음과 같습니다.virsh vol-list vhbapool_host3 Name Path ------------------------------------------------------------------------------ unit:0:4:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016844602198-lun-0 unit:0:5:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0
# virsh vol-list vhbapool_host3 Name Path ------------------------------------------------------------------------------ unit:0:4:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016844602198-lun-0 unit:0:5:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 표시되는 LUN 이름 목록은 가상 머신 구성에서 디스크 볼륨으로 사용할 수 있습니다.가상 머신에 vHBA LUN 추가
가상 머신의 XML에 을 지정하여 가상 머신에 vHBA LUN을 추가합니다.lun매개변수에서 장치 유형disk또는<disk>로,<source>매개변수의 소스 장치입니다. 이를/dev/sdaN로 입력하거나/dev/disk/by-path|by-id|by-uuid|by-label에서 udev에 의해 생성된 심볼릭 링크로 입력할 수 있습니다. virsh vol-list pool 명령을 실행하여 찾을 수 있습니다.
예를 들어 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.4. vHBA 스토리지 풀 삭제 링크 복사링크가 클립보드에 복사되었습니다!
virsh pool-destroy vhbapool_host3
# virsh pool-destroy vhbapool_host3
virsh nodedev-destroy scsi_host5
# virsh nodedev-destroy scsi_host5
virsh nodedev-list --cap scsi_host
# virsh nodedev-list --cap scsi_host
scsi_host5 더 이상 결과 목록에 표시되지 않습니다.
13장. volumes 링크 복사링크가 클립보드에 복사되었습니다!
13.1. 볼륨 생성 링크 복사링크가 클립보드에 복사되었습니다!
13.2. 볼륨 복제 링크 복사링크가 클립보드에 복사되었습니다!
--pool 인수가 있어야 합니다. 나머지 명령은 복제할 볼륨의 이름과 복제된 새 볼륨의 이름(clone1)입니다. virsh vol-list 명령은 스토리지 풀(guest_images_disk)에 있는 볼륨을 나열합니다.
13.3. 게스트에 스토리지 장치 추가 링크 복사링크가 클립보드에 복사되었습니다!
13.3.1. 게스트에 파일 기반 스토리지 추가 링크 복사링크가 클립보드에 복사되었습니다!
절차 13.1. 파일 기반 스토리지 추가
- 스토리지 파일을 생성하거나 기존 파일(예: IMG 파일)을 사용합니다. 다음 두 명령 모두 게스트의 추가 스토리지로 사용할 수 있는 4GB 파일을 생성합니다.
- 파일 기반 스토리지 이미지에는 사전 할당된 파일을 사용하는 것이 좋습니다. 다음과 같이 다음 dd 명령을 사용하여 사전 할당된 파일을 생성합니다.
dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 또는 미리 할당된 파일 대신 스파스 파일을 만듭니다. 스파스 파일은 훨씬 더 빠르며 테스트에 사용할 수 있지만 데이터 무결성 및 성능 문제로 인해 프로덕션 환경에서는 사용하지 않는 것이 좋습니다.
dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 새 파일에 < disk> 요소를 작성하여 추가 스토리지를 생성합니다. 이 예제에서는 이 파일을
NewStorage.xml이라고 합니다.<disk> 요소는 디스크 소스와 가상 블록 장치의 장치 이름을 설명합니다. 장치 이름은 게스트의 모든 장치에서 고유해야 하며 게스트가 가상 블록 장치를 찾을 버스를 식별합니다. 다음 예제에서는 소스가FileName.img인 파일 기반 스토리지 컨테이너인 virtio 블록 장치를 정의합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 장치 이름은 "hd" 또는 "sd"로 시작하여 각각 IDE와 SCSI 디스크를 확인할 수 있습니다. 구성 파일에는 새 장치의 버스 위치를 지정하는 <address> 하위 요소도 포함될 수 있습니다. virtio 블록 장치의 경우 PCI 주소여야 합니다. <address>하위 요소를 생략하면 libvirt에서 사용 가능한 다음 PCI 슬롯을 찾아 할당할 수 있습니다. - CD-ROM을 다음과 같이 연결합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NewStorage.xml에 정의된 장치를 게스트(Guest1)로 추가합니다.virsh attach-device --config Guest1 ~/NewStorage.xml
# virsh attach-device --config Guest1 ~/NewStorage.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이러한 변경 사항은 게스트를 삭제한 후 재시작한 후에만 적용됩니다. 또한 영구 장치는 virsh define 명령을 사용하여 구성을 저장한 도메인인 영구 도메인에만 추가할 수 있습니다.게스트가 실행되고 있고 게스트가 삭제될 때까지 새 장치를 일시적으로 추가하려는 경우--config옵션을 생략합니다.virsh attach-device Guest1 ~/NewStorage.xml
# virsh attach-device Guest1 ~/NewStorage.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고virsh 명령을 사용하면 더 간단한 구문을 사용하고 XML 파일을 생성할 필요 없이 제한된 수의 매개 변수를 설정할 수 있는 attach-disk 명령을 허용합니다. attach-disk 명령은 다음과 같이 이전에 언급한 attach-device 명령과 유사한 방식으로 사용됩니다.virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver raw
# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow virsh attach-disk 명령은--config옵션도 허용합니다.- 게스트 머신을 시작합니다(현재 실행 중인 경우).
virsh start Guest1
# virsh start Guest1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고다음은 Linux 게스트 전용입니다. 다른 운영 체제는 다른 방식으로 새 스토리지 장치를 처리합니다. 다른 시스템의 경우 해당 운영 체제 설명서를 참조하십시오. 디스크 드라이브 파티셔닝
게스트에는 이제/dev/vdb라는 하드 디스크 장치가 있습니다. 필요한 경우 이 디스크 드라이브를 분할하고 파티션을 포맷합니다. 추가한 장치가 표시되지 않으면 게스트 운영 체제에서 디스크 핫플러그에 문제가 있음을 나타냅니다.- 새 장치에 대해 fdisk 를 시작합니다.
fdisk /dev/vdb Command (m for help):
# fdisk /dev/vdb Command (m for help):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 파티션에 대해
n을 입력합니다. - 다음이 나타납니다.
Command action e extended p primary partition (1-4)
Command action e extended p primary partition (1-4)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 파티션에 대해p를 입력합니다. - 사용 가능한 파티션 번호를 선택합니다. 이 예에서 첫 번째 파티션은
1을 입력하여 선택합니다.Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Enter 키를 눌러 기본 첫 번째 실린더를
입력합니다.First cylinder (1-400, default 1):
First cylinder (1-400, default 1):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파티션의 크기를 선택합니다. 이 예에서는 Enter 를 눌러 전체 디스크가 할당됩니다.
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파티션 유형을 구성하려면 t 를 입력합니다.
Command (m for help): t
Command (m for help): tCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전 단계에서 만든 파티션을 선택합니다. 이 예에서는 파티션 번호가 1개뿐이므로 파티션 번호가 1 개뿐이므로 파티션 번호는 1개뿐이고, metadata에서 자동으로 파티션 1을 선택했습니다.
Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Linux 파티션에 83 을 입력합니다.
Hex code (type L to list codes): 83
Hex code (type L to list codes): 83Copy to Clipboard Copied! Toggle word wrap Toggle overflow - w 를 입력하여 변경 사항을 작성하고 종료합니다.
Command (m for help): w
Command (m for help): wCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 파티션을
ext3파일 시스템으로 포맷합니다.mke2fs -j /dev/vdb1
# mke2fs -j /dev/vdb1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 마운트 디렉터리를 생성하고 게스트에 디스크를 마운트합니다. 이 예에서는 디렉터리가 myfiles 에 있습니다.
mkdir /myfiles mount /dev/vdb1 /myfiles
# mkdir /myfiles # mount /dev/vdb1 /myfilesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트에는 이제 가상화된 파일 기반 스토리지 장치가 추가로 있습니다. 그러나 이 스토리지는 게스트의/etc/fstab파일에 정의되어 있지 않으면 재부팅 후에도 영구적으로 마운트되지 않습니다./dev/vdb1 /myfiles ext3 defaults 0 0
/dev/vdb1 /myfiles ext3 defaults 0 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.2. 게스트에 하드 드라이브 및 기타 블록 장치 추가 링크 복사링크가 클립보드에 복사되었습니다!
절차 13.2. 게스트에 물리적 블록 장치 추가
- 다음 절차에서는 호스트 물리적 시스템의 하드 드라이브를 게스트에 추가하는 방법을 설명합니다. CD-ROM, DVD 및 플로피 장치를 포함한 모든 물리적 블록 장치에 적용됩니다.하드 디스크 장치를 호스트 물리적 시스템에 물리적으로 연결합니다. 기본적으로 드라이브에 액세스할 수 없는 경우 호스트 물리적 시스템을 구성합니다.
- 다음 중 하나를 수행합니다.
- 새 파일에 disk 요소를 작성하여 추가 스토리지를 생성합니다. 이 예제에서는 이 파일을
NewStorage.xml이라고 합니다. 다음 예제는 호스트 물리적 시스템 파티션/dev/sr0에 대한 추가 장치 기반 스토리지 컨테이너를 포함하는 구성 파일 섹션입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전 섹션의 지침에 따라 장치를 게스트 가상 시스템에 연결합니다. 또는 다음과 같이
virsh attach-disk명령을 사용할 수 있습니다.virsh attach-disk Guest1 /dev/sr0 vdc
# virsh attach-disk Guest1 /dev/sr0 vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 옵션을 사용할 수 있습니다.- virsh attach-disk 명령에서는 다음과 같이
--config,--type,--mode옵션도 허용합니다.virsh attach-disk Guest1 /dev/sr0 vdc --config --type cdrom --mode readonly
# virsh attach-disk Guest1 /dev/sr0 vdc --config --type cdrom --mode readonlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 또한
--type은 장치가 하드 드라이브인 경우--type 디스크도 허용합니다.
- 게스트 가상 머신에는 이제 Linux에서
/dev/vdc라는 새 하드 디스크 장치(또는 게스트 가상 머신 OS가 선택한 항목) 또는 Windows의D: 드라이브(예:)에 따라 비슷한 새로운 하드 디스크 장치가 있습니다. 이제 게스트 가상 머신의 운영 체제에 대한 표준 절차에 따라 게스트 가상 머신에서 디스크를 초기화할 수 있습니다. 예제는 절차 13.1. “파일 기반 스토리지 추가” 를 참조하십시오.주의블록 장치를 게스트에 추가할 때는 보안 고려 사항을 따르십시오. 이 정보는 에서 찾을 https://access.redhat.com/site/documentation/ 수 있는 Red Hat Enterprise Linux Virtualization 보안 가이드에서 자세히 설명합니다.중요게스트 가상 시스템에는 전체 디스크 또는 블록 장치에 대한 쓰기 액세스 권한이 부여되지 않아야 합니다(예:/dev/sdb). 전체 블록 장치에 액세스할 수 있는 게스트 가상 머신은 호스트 물리적 시스템 시스템을 손상시키는 데 사용할 수 있는 볼륨 레이블을 수정할 수 있습니다. 파티션(예:/dev/sdb1) 또는 LVM 볼륨을 사용하여 이 문제를 방지합니다.
13.4. 볼륨 삭제 및 제거 링크 복사링크가 클립보드에 복사되었습니다!
virsh vol-delete --pool guest_images volume1 Vol volume1 deleted
# virsh vol-delete --pool guest_images volume1
Vol volume1 deleted
14장. virsh로 게스트 가상 머신 관리 링크 복사링크가 클립보드에 복사되었습니다!
14.1. 일반 명령 링크 복사링크가 클립보드에 복사되었습니다!
14.1.1. help 링크 복사링크가 클립보드에 복사되었습니다!
14.1.2. 종료 및 종료 링크 복사링크가 클립보드에 복사되었습니다!
virsh exit
$ virsh exit
virsh quit
$ virsh quit
14.1.3. version 링크 복사링크가 클립보드에 복사되었습니다!
14.1.4. 인수 표시 링크 복사링크가 클립보드에 복사되었습니다!
--shell 옵션을 사용하면 출력이 필요한 경우 단일 인용되어 쉘 명령에서 재사용에 적합합니다. --xml 옵션을 사용하면 XML 파일에서 사용할 수 있는 출력이 적합합니다. 예를 들어 virsh echo --shell "hello world" 명령은 출력 'hello world' 을 보냅니다.
14.1.5. 연결 링크 복사링크가 클립보드에 복사되었습니다!
- Xen :/// - 로컬 Xen 하이퍼바이저에 연결합니다.
- QEMU:///system - QEMU 및 KVM 도메인을 감독하는 데몬에 root로 로컬로 연결합니다.
- kvm:///session - 사용자로 로컬로 사용자 QEMU 및 KVM 도메인 집합에 연결합니다.
- LXC:/// - 로컬 Linux 컨테이너에 연결됩니다.
virsh connect {name|URI}
$ virsh connect {name|URI}
{name} 은 하이퍼바이저의 시스템 이름(호스트 이름) 또는 URL( virsh uri 명령의 출력)입니다. 읽기 전용 연결을 시작하려면 위 명령을 --readonly 로 추가합니다. URI에 대한 자세한 내용은 원격 URI 을 참조하십시오. URI를 잘 모를 경우 virsh uri 명령은 이를 표시합니다.
virsh uri qemu:///session
$ virsh uri
qemu:///session
14.1.6. 기본 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
- $ hostname - 하이퍼바이저의 호스트 이름을 표시
- $ SysInfo - 하이퍼바이저 시스템 정보 의 XML 표현(사용 가능한 경우)을 표시
14.1.7. NMI 삽입 링크 복사링크가 클립보드에 복사되었습니다!
virsh inject-nmi guest-1
$ virsh inject-nmi guest-1
14.2. virsh를 사용하여 장치 연결 및 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
절차 14.1. 게스트 가상 머신에서 사용할 USB 장치 핫플러그
- 다음 명령을 사용하여 연결할 USB 장치를 찾습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - XML 파일을 만들고 논리 이름(예:
usb_device.xml)을 지정합니다. 검색에 표시된 것과 동일하게 공급 업체 및 제품 ID를 복사해야 합니다.그림 14.1. USB 장치 XML 조각
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 장치를 연결합니다.
virsh attach-device rhel6 --file usb_device.xml --config
# virsh attach-device rhel6 --file usb_device.xml --configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서 [rhel6]은 게스트 가상 머신의 이름이고 [usb_device.xml]은 이전 단계에서 만든 파일입니다. 다음 재부팅에 변경 사항이 적용되도록 하려면--config옵션을 사용합니다. 이 변경 사항을 영구적으로 사용하려면--persistent옵션을 사용합니다. 현재 도메인에 변경 사항을 적용하려면--current옵션을 사용합니다. 자세한 내용은 Virsh man 페이지를 참조하십시오. - 장치(hot unplug)를 분리하려면 다음 명령을 수행합니다.
virsh detach-device rhel6 --file usb_device.xml
# virsh detach-device rhel6 --file usb_device.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서 [rhel6]은 게스트 가상 머신의 이름이고 [usb_device.xml]은 이전 단계에서 연결된 파일입니다.
14.3. 인터페이스 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
--live- 실행 도메인에서 값 가져오기--config- 다음 부팅에서 사용할 값 가져오기--current- 현재 도메인 상태에 따라 값을 가져옵니다.--persistent- 오프라인 도메인의--config와 동일하게 작동하며, 실행 중인 도메인의 경우--live와 유사합니다.--target- 게스트 가상 머신의 대상 장치를 나타냅니다.--Mac- 이를 사용하여 네트워크 인터페이스의 MAC 주소를 지정합니다.--script- 이 값을 사용하여 기본 브리지 대신 브리지를 처리하는 스크립트 파일의 경로를 지정합니다.--model- 이를 사용하여 모델 유형을 지정합니다.--inbound- 인터페이스의 인바운드 대역폭을 제어합니다. 허용되는 값은평균,최대,버스트입니다.--outbound- 인터페이스의 아웃바운드 대역폭을 제어합니다. 허용되는 값은평균,최대,버스트입니다.
네트워크 중 하나이거나 물리적 네트워크 장치를 나타내는 브릿지 또는 장치에 브리지 를 나타낼 수 있습니다. Source는 장치의 소스입니다. 연결된 장치를 제거하려면 virsh detach-device 를 사용합니다.
14.4. CDROM 미디어 변경 링크 복사링크가 클립보드에 복사되었습니다!
change-media domain path source --eject --insert --update --current --live --config --force
# change-media domain path source --eject --insert --update --current --live --config --force
--path- 디스크 장치의 정규화된 경로 또는 대상을 포함하는 문자열--source- 미디어의 소스를 포함하는 문자열--eject- 미디어를 제거--insert- 미디어를 삽입--update- 미디어를 업데이트--current- 하이퍼바이저 드라이버 구현에 따라--live및--config중 하나 또는 둘 다일 수 있습니다.--live- 실행 도메인의 실시간 구성 변경--config- 다음 부팅 시 관찰되는 영구 구성 변경--force- 미디어 변경을 강제 적용
14.5. 도메인 명령 링크 복사링크가 클립보드에 복사되었습니다!
14.5.1. 부팅 시 자동으로 시작하도록 도메인 구성 링크 복사링크가 클립보드에 복사되었습니다!
--disable 옵션을 사용하면 autostart가 비활성화됩니다.
virsh autostart rhel6
# virsh autostart rhel6
virsh autostart rhel6 --disable
# virsh autostart rhel6 --disable
14.5.2. 게스트 가상 머신의 직렬 콘솔 연결 링크 복사링크가 클립보드에 복사되었습니다!
--force 옵션은 콘솔 연결을 강제 적용하거나 연결이 끊긴 경우 연결이 끊어집니다. --safe 옵션을 사용하면 안전한 콘솔 처리가 지원되는 경우에만 게스트가 연결할 수 있습니다.
virsh console virtual_machine --safe
$ virsh console virtual_machine --safe
14.5.3. XML 파일을 사용하여 도메인 정의 링크 복사링크가 클립보드에 복사되었습니다!
14.5.4. 도메인의 설명 및 제목 편집 및 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh desc [domain-name] [[--live] [--config] | [--current]] [--title] [--edit] [--new-desc New description or title message]
# virsh desc [domain-name] [[--live] [--config] | [--current]] [--title] [--edit] [--new-desc New description or title message]
--live 또는 --config 옵션은 이 명령이 도메인의 실시간 또는 영구 정의에서 작동하는지 여부를 선택합니다. --live 및 --config 를 둘 다 지정하면 명령에 입력한 설명이 라이브 구성과 영구 구성 설정에 적용되는 새 구성 설정이 되는 --config 옵션이 먼저 구현됩니다. --current 옵션은 현재 상태 구성을 수정하거나 가져오며 영구적이지 않습니다. --live 또는 --config, --current 가 지정되지 않은 경우 --current 옵션이 사용됩니다. edit 옵션은 현재 설명 또는 제목의 내용이 있는 편집기를 열고 나중에 다시 저장된 내용을 열도록 지정합니다. title 옵션을 사용하면 도메인의 제목 필드만 표시하거나 수정할 수 있으며 설명이 포함되지는 않습니다. 또한 명령에 --edit 또는 --new-desc 를 모두 사용하지 않으면 설명만 표시되고 수정할 수 없습니다.
virsh desc testvm --current --title TestVM-4F --new-desc Guest VM on fourth floor
$ virsh desc testvm --current --title TestVM-4F --new-desc Guest VM on fourth floor
14.5.5. 장치 블록 통계 표시 링크 복사링크가 클립보드에 복사되었습니다!
--human 옵션을 사용합니다.
14.5.6. 네트워크 통계 검색 링크 복사링크가 클립보드에 복사되었습니다!
domifstat rhel6 eth0
# domifstat rhel6 eth0
14.5.7. 도메인 가상 인터페이스의 링크 상태 수정 링크 복사링크가 클립보드에 복사되었습니다!
domif-setlink [domain][interface-device][state]{--config}
# domif-setlink [domain][interface-device][state]{--config}
--config옵션을 사용해야 합니다. 또한 호환성을 이유로 --persistent 는 --config 의 별칭입니다. "인터페이스 장치"는 인터페이스의 대상 이름 또는 MAC 주소일 수 있습니다.
domif-setlink rhel6 eth0 up
# domif-setlink rhel6 eth0 up
14.5.8. 도메인 가상 인터페이스의 링크 상태 나열 링크 복사링크가 클립보드에 복사되었습니다!
--config옵션을 사용해야 합니다. 또한 호환성을 이유로 --persistent 는 --config 의 별칭입니다. "인터페이스 장치"는 인터페이스의 대상 이름 또는 MAC 주소일 수 있습니다.
domif-getlink rhel6 eth0 up
# domif-getlink rhel6 eth0 up
14.5.9. 네트워크 인터페이스 대역폭 매개 변수 설정 링크 복사링크가 클립보드에 복사되었습니다!
#virsh domiftune domain interface-device [[--config] [--live] | [--current]] [--inbound average,peak,burst] [--outbound average,peak,burst]
#virsh domiftune domain interface-device [[--config] [--live] | [--current]] [--inbound average,peak,burst] [--outbound average,peak,burst]
--config,--live, --current 기능은 14.19절. “일정 매개변수 설정” 와 동일합니다. 제한을 지정하지 않으면 현재 네트워크 인터페이스 설정을 쿼리합니다. 그렇지 않으면 다음 옵션을 사용하여 제한을 변경합니다.
- <interface-device>는 필수이며 도메인의 네트워크 인터페이스의 대역폭 매개변수를 설정하거나 쿼리합니다. interface-device 는 인터페이스의 대상 이름(<target dev='name'/>) 또는 MAC 주소일 수 있습니다.
--inbound또는--outbound가 지정되지 않은 경우 이 명령은 대역폭 설정을 쿼리하고 표시합니다. 그렇지 않으면 인바운드 또는 아웃바운드 대역폭을 설정합니다. average,peak,burst는 attach-interface 명령과 동일합니다. 참조 14.3절. “인터페이스 장치 연결”
14.5.10. 실행 중인 도메인에 대한 메모리 통계 검색 링크 복사링크가 클립보드에 복사되었습니다!
--period 옵션을 사용하려면 시간(초)이 필요합니다. 이 옵션을 0보다 큰 값으로 설정하면 balloon 드라이버에서 후속 domemstat 명령에서 표시할 추가 통계를 반환할 수 있습니다. --period 옵션을 0으로 설정하면 balloon 드라이버 컬렉션을 중지하지만 balloon 드라이버에서 통계를 지우지 않습니다. balloon 드라이버의 컬렉션 기간도 설정하기 위해 --live,--config 또는 --current 옵션도 --period 옵션을 설정하지 않고 사용할 수 없습니다. --live 옵션을 지정하면 실행 중인 게스트의 컬렉션 기간만 영향을 받습니다. --config 옵션을 사용하면 영구 게스트의 다음 부팅에 영향을 미칩니다. --current 옵션을 사용하면 현재 게스트 상태에 영향을 미칩니다.
--live 및 --config 옵션 둘 다 사용할 수 있지만 --current 는 독점적입니다. 옵션을 지정하지 않으면 게스트 상태에 따라 동작이 달라집니다.
#virsh domemstat rhel6 --current
#virsh domemstat rhel6 --current
14.5.11. 블록 장치에 오류 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh domblkerror rhel6
# virsh domblkerror rhel6
14.5.12. 블록 장치 크기 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh domblkinfo rhel6
# virsh domblkinfo rhel6
14.5.13. 도메인과 연결된 블록 장치 표시 링크 복사링크가 클립보드에 복사되었습니다!
--inactive --details 는 지정된 도메인과 연결된 모든 블록 장치의 테이블을 표시합니다.
--inactive 가 지정된 경우 결과는 다음 부팅 시 사용할 장치를 표시하고 실행 중인 도메인에서 현재 실행 중인 실행 중인 도메인에서 사용 중인 장치를 표시하지 않습니다. --details 가 지정되면 디스크 유형 및 장치 값이 테이블에 포함됩니다. 이 표에 표시된 정보는 domblkinfo 및 snapshot-create 와 함께 사용할 수 있습니다.
#domblklist rhel6 --details
#domblklist rhel6 --details
14.5.14. 도메인과 연결된 가상 인터페이스 표시 링크 복사링크가 클립보드에 복사되었습니다!
--inactive 옵션을 사용할 수 있습니다.
--inactive 가 지정된 경우 결과는 다음 부팅 시 사용할 장치를 표시하고 실행 중인 도메인에서 현재 실행 중인 실행 중인 도메인에서 사용 중인 장치를 표시하지 않습니다.
14.5.15. blockcommit을 사용하여 백 엔드 체인 생성 링크 복사링크가 클립보드에 복사되었습니다!
base ← snap1 ← snap2 ← active.
base ← snap1 ← snap2 ← active.
절차 14.2. virsh blockcommit
- 다음 명령을 실행합니다.
virsh blockcommit $dom $disk -base snap1 -top snap2 -wait -verbose
# virsh blockcommit $dom $disk -base snap1 -top snap2 -wait -verboseCopy to Clipboard Copied! Toggle word wrap Toggle overflow snap2의 내용은 snap1로 이동하여 다음을 실행합니다.기본 스냅1 활성. snap2는 더 이상 유효하지 않으며 삭제할 수 있습니다.주의blockcommit 는-base옵션에 따라 달라지는 모든 파일 (-top옵션에 종속된 파일 제외)이 손상됩니다. 이를 방지하려면 둘 이상의 게스트가 공유하는 파일에 변경 사항을 커밋하지 마십시오.-verbose옵션을 사용하면 화면에 진행률을 인쇄할 수 있습니다.
14.5.16. 블록pull를 사용하여 체인 백딩 단축 링크 복사링크가 클립보드에 복사되었습니다!
- 백업 이미지 체인의 데이터로 이미지를 채워서 이미지를 병합합니다. 이렇게 하면 이미지 파일이 자체 포함되므로 더 이상 백업 이미지에 의존하지 않고 다음과 같이 표시됩니다.
- 이전: base.img Active
- after: base.img는 더 이상 게스트에서 사용되지 않으며 Active는 모든 데이터를 포함합니다.
- 백업 이미지 체인의 일부를 병합합니다. 이는 스냅샷을 최상위 이미지로 병합하는 데 사용할 수 있으며 다음과 같습니다.
- 이전: 기본 sn1 prep active
- 다음으로 base.img 활성 상태입니다. 이제 active에 sn1 및 sn2의 모든 데이터가 포함되어 있으며 게스트가 sn1이나 sn2를 사용하지 않습니다.
- 디스크 이미지를 호스트의 새 파일 시스템으로 이동합니다. 이렇게 하면 게스트가 실행되고 있는 동안 이미지 파일을 이동할 수 있습니다.
- 이전 (원래 이미지 파일):
/fs1/base.vm.img - 이후:
/fs2/active.vm.qcow2는 이제 새 파일 시스템이며/fs1/base.vm.img가 더 이상 사용되지 않습니다.
- 사후 복사 스토리지 마이그레이션을 통한 실시간 마이그레이션에 유용합니다. 실시간 마이그레이션이 완료된 후 디스크 이미지가 소스 호스트에서 대상 호스트로 복사됩니다.즉,
/source-host/base.vm.imgafter:/destination-host/active.vm.qcow2./source-host/base.vm.img가 더 이상 사용되지 않습니다.
절차 14.3. 블록pull를 사용하여 체인 백딩 단축
- blockpull 를 실행하기 전에 이 명령을 실행하는 것이 유용할 수 있습니다.
virsh snapshot-create-as $dom $name - disk-only
# virsh snapshot-create-as $dom $name - disk-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 체인이 다음과 같이 보이는 경우: 기본 snap1 snap2 active active run the following:
virsh blockpull $dom $disk snap1
# virsh blockpull $dom $disk snap1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 snap2에서 활성 상태로 데이터를 가져와 'snap1'의 백업 파일을 활성 상태로 만듭니다. - blockpull 가 완료되면 체인에서 추가 이미지를 생성한 스냅샷의 libvirt 추적은 더 이상 유용하지 않습니다. 이 명령을 사용하여 오래된 스냅샷에서 추적을 삭제합니다.
virsh snapshot-delete $dom $name - metadata
# virsh snapshot-delete $dom $name - metadataCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 단일 이미지를 병합하고 백업 이미지 체인의 데이터로 채우려면# virsh blockpull example-domain vda - wait
- 백업 이미지 체인의 일부를 병합하려면# virsh blockpull example-domain vda - 기본 /path/to/base.img
- 디스크 이미지를 호스트의 새 파일 시스템으로 이동하려면:# virsh snapshot-create example-domaine - xmlfile /path/to/new.xml - disk-only followed by # virsh blockpull example-domain vda - wait
- 사후 복사 스토리지 마이그레이션과 함께 실시간 마이그레이션을 사용하려면 다음을 수행합니다.
- 대상 실행에서 다음을 수행합니다.
qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2
# qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 소스 실행에서 다음을 수행합니다.
virsh migrate example-domain
# virsh migrate example-domainCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 대상 실행에서 다음을 수행합니다.
virsh blockpull example-domain vda - wait
# virsh blockpull example-domain vda - waitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
14.5.17. 블록 크기를 사용하여 도메인 경로의 크기 변경 링크 복사링크가 클립보드에 복사되었습니다!
- 다음과 같은 명령을 실행합니다. blockresize [domain] [path size] where:
- domain은 변경하려는 도메인의 고유한 대상 이름 또는 소스 파일입니다.
- 경로 크기는 접미사가 없는 경우 기본값은 KiB(24바이트의 블록)입니다. 바이트를 위해 "B" 접미사를 사용해야 합니다.
14.5.18. Live Block Copy를 통한 디스크 이미지 관리 링크 복사링크가 클립보드에 복사되었습니다!
- 게스트 이미지를 로컬 스토리지에서 중앙 위치로 이동
- 유지 관리가 필요한 경우 성능 손실 없이 게스트를 다른 위치로 전송할 수 있습니다.
- 속도와 효율성을 위해 게스트 이미지 관리 가능
- 게스트를 종료하지 않고도 이미지 형식 변환을 수행할 수 있습니다.
예 14.1. 라이브 블록 복사 사용 예
- 처음에 백업 파일 체인은 다음과 같습니다.base ← sn1 ← sn2구성 요소는 다음과 같습니다.
- base - 원본 디스크 이미지
- sn1 - 기본 디스크 이미지로 가져온 첫 번째 스냅샷
- sn2 - 최신 스냅샷
- Active - 디스크 복사본
- sn2 상단에 이미지 복사본이 새 이미지로 생성되면 다음과 같습니다.base ← sn1 ← sn2 ← active
- 이 시점에서 읽기 권한이 모두 올바른 순서로 설정되며 자동으로 설정됩니다. 쓰기 권한이 올바르게 설정되어 있는지 확인하기 위해 미러 메커니즘은 모든 쓰기를 sn2 및 활성 상태로 리디렉션하므로 언제든지 sn2 및 활성 읽기를 리디렉션합니다 (이 미러 메커니즘은 라이브 블록 복사와 이미지 스트리밍의 필수 차이점입니다).
- 모든 디스크 클러스터에서 반복되는 백그라운드 작업이 실행됩니다. 각 클러스터에는 다음과 같은 가능한 사례 및 작업이 있습니다.
- 클러스터가 이미 활성에 할당되었으므로 수행할 작업이 없습니다.
- bdrv_is_allocated() 를 사용하여 백업 파일 체인을 따릅니다. 클러스터를 기본(공유)에서 읽는 경우 수행할 작업이 없습니다.
- bdrv_is_allocated() 변형을 실현할 수 없는 경우, 이미지를 재베이스하고 읽기 데이터를 기반과 비교하여 복사가 필요한지 결정합니다.
- 다른 모든 경우 클러스터를
활성 상태로복사합니다.
- 복사가 완료되면 활성의 백업 파일이 base로 전환됩니다(rebase와 유사)
14.5.19. 그래픽 디스플레이에 대한 연결 URI 표시 링크 복사링크가 클립보드에 복사되었습니다!
--include-password 옵션을 사용하면 SPICE 채널 암호가 URI에 포함됩니다.
14.5.20. 도메인 검색 명령 링크 복사링크가 클립보드에 복사되었습니다!
- virsh domhostname 도메인 은 하이퍼바이저가 게시할 수 있는 지정된 도메인의 호스트 이름을 표시합니다.
- virsh dominfo domain 은 지정된 도메인에 대한 기본 정보를 표시합니다.
- virsh domuid 도메인|ID 는 지정된 도메인 이름 또는 ID를 UUID로 변환합니다.
- virsh domid 도메인|ID 는 지정된 도메인 이름 또는 UUID를 ID로 변환합니다.
- virsh domjobabort 도메인 은 지정된 도메인에서 현재 실행 중인 작업을 중단합니다.
- virsh domjobinfo domain 은 마이그레이션 통계를 포함하여 지정된 도메인에서 실행 중인 작업에 대한 정보를 표시합니다.
- virsh domname 도메인 ID|UUID 는 지정된 도메인 ID 또는 UUID를 도메인 이름으로 변환합니다.
- virsh domstate 도메인 은 지정된 도메인의 상태를 표시합니다.
--reason옵션을 사용하면 표시된 상태의 이유도 표시됩니다. - virsh domcontrol 도메인 은 도메인을 제어하는 데 사용된 VMM에 대한 인터페이스 상태를 표시합니다. OK 또는 Error가 아닌 상태에 대해 제어 인터페이스가 표시된 상태를 입력했기 때문에 경과한 초 수를 출력합니다.
예 14.2. 통계 피드백의 예
14.5.21. QEMU 인수에서 도메인 XML로 변환 링크 복사링크가 클립보드에 복사되었습니다!
virsh domxml-from-native qemu-argv demo.args
$ virsh domxml-from-native qemu-argv demo.args
14.5.22. 도메인 코어의 덤프 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
--bypass-cache --live |---crash |--reset -- verbose --verbose --memory-only dumps 도메인 코어를 corefilepath에 지정된 파일에 덤프 일부 하이퍼바이저는 이 작업에 대한 제한 사항을 부여하고 사용자가 corefilepath 매개변수에 지정된 파일 및 경로에 대한 적절한 권한을 수동으로 확인해야 할 수 있습니다. 이 명령은 SR-IOV 장치 및 기타 패스스루 장치에서 지원됩니다. 다음 옵션이 지원되며 다음과 같은 효과가 있습니다.
--bypass-cache파일에 파일 시스템 캐시가 없습니다. 이 옵션을 선택하면 덤프 작업이 느려질 수 있습니다.--live는 도메인이 계속 실행될 때 파일을 저장하고 도메인을 일시 중지하거나 중지하지 않습니다.--crash는 덤프 파일이 저장되는 동안 일시 정지된 상태로 두는 대신 도메인을 크래시 상태로 둡니다.--reset이 덤프 파일이 성공적으로 저장되면 도메인이 재설정됩니다.--verbose에서 덤프 프로세스의 진행 상황을 표시--memory-only덤프 파일에 저장되는 유일한 정보는 도메인의 메모리와 CPU 공통 레지스터 파일입니다.
14.5.23. 가상 머신 XML 덤프 생성 (구성 파일) 링크 복사링크가 클립보드에 복사되었습니다!
virsh dumpxml {guest-id, guestname or uuid}
# virsh dumpxml {guest-id, guestname or uuid}
virsh dumpxml GuestID > guest.xml
# virsh dumpxml GuestID > guest.xml
guest.xml 은 게스트 가상 머신을 다시 생성할 수 있습니다( 14.6절. “게스트 가상 머신의 구성 파일 편집” 참조). 이 XML 구성 파일을 편집하여 추가 장치를 구성하거나 추가 게스트 가상 머신을 배포할 수 있습니다.
14.5.24. 구성 파일에서 게스트 가상 머신 생성 링크 복사링크가 클립보드에 복사되었습니다!
virsh create configuration_file.xml
# virsh create configuration_file.xml
14.6. 게스트 가상 머신의 구성 파일 편집 링크 복사링크가 클립보드에 복사되었습니다!
rhel6 이라는 게스트 가상 머신을 편집하려면 다음을 수행합니다.
virsh edit rhel6
# virsh edit rhel6
14.6.1. KVM 게스트 가상 머신에 Multifunction PCI 장치 추가 링크 복사링크가 클립보드에 복사되었습니다!
- virsh edit [guestname] 명령을 실행하여 게스트 가상 시스템의 XML 구성 파일을 편집합니다.
- address 유형 태그에서 function='0x0' 에 대해 multifunction='on' 항목을 추가합니다.이를 통해 게스트 가상 머신은 다기능 PCI 장치를 사용할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 두 개의 기능이 있는 PCI 장치의 경우 첫 번째 장치와 동일한 슬롯 번호와 function='0x1' 과 같은 다른 함수 번호를 사용하여 두 번째 장치를 포함하도록 XML 구성 파일을 수정합니다.예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - KVM 게스트 가상 머신의 lspci 출력에는 다음이 표시됩니다.
lspci 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.1 SCSI storage controller: Red Hat, Inc Virtio block device
$ lspci 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.1 SCSI storage controller: Red Hat, Inc Virtio block deviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
14.6.2. 실행 중인 도메인을 중지하여 다시 시작합니다. 링크 복사링크가 클립보드에 복사되었습니다!
--bypass-cache --running | --verbose saves and destroys (stop) a running domain so that it can be restarted from the same state at a later time. virsh start 명령과 함께 사용하면 이 저장 지점에서 자동으로 시작됩니다. --bypass-cache 옵션과 함께 사용되는 경우 저장 시 파일 시스템 캐시가 발생하지 않습니다. 이 옵션은 저장 프로세스 속도가 느려질 수 있습니다.
--verbose 에서 덤프 프로세스의 진행 상황을 표시
--running 옵션을 사용하여 이 상태를 실행 중 상태로 유지해야 함을 나타내거나 일시 중지됨을 나타내는 --paused 옵션을 사용하여 재정의할 수 있습니다.
14.6.3. 지정된 도메인에 대한 CPU 통계 표시 링크 복사링크가 클립보드에 복사되었습니다!
--total start count 명령은 지정된 도메인에 대한 CPU 통계 정보를 제공합니다. 기본적으로 모든 CPU 및 총 CPU의 통계가 표시됩니다. --total 옵션은 총 통계만 표시합니다.
14.6.4. 스크린샷 저장 링크 복사링크가 클립보드에 복사되었습니다!
--screen 을 사용하여 화면 ID를 제공하면 캡처할 화면을 지정합니다. 여러 개의 그래픽 카드가 있는 경우 헤드가 장치 전에 번호 매겨진 경우 화면 ID 5는 두 번째 카드의 두 번째 헤드를 처리합니다.
14.6.5. 지정된 도메인으로 Keystroke Combination 전송 링크 복사링크가 클립보드에 복사되었습니다!
--codeset --holdtime keycode 명령을 사용하면 시퀀스를 특정 도메인에 키 코드로 보낼 수 있습니다.
virsh send-key rhel6 --holdtime 1000 0xf
# virsh send-key rhel6 --holdtime 1000 0xf
--holdtime 을 제공하면 각 키 입력이 지정된 밀리초 단위로 유지됩니다. codeset 을 사용하면 코드 세트를 지정할 수 있으며 기본값은 Linux이지만 다음 옵션은 허용됩니다.
Linux- 이 옵션을 선택하면 심볼릭 이름이 해당 Linux 키의 일관된 매크로 이름과 일치하도록 하며 숫자 값은 Linux 일반 입력 이벤트 하위 시스템에서 제공합니다.- XT - XT 키보드 컨트롤러에서 정의한 값을 보냅니다.
심볼릭 이름은 제공되지 않습니다. atset1- 숫자 값은 AT 키보드 컨트롤러, set1(XT 호환 세트)에서 정의한 값입니다. atset1에서 확장된 키 코드는 XT 코드 집합의 확장 키 코드와 다를 수 있습니다. 심볼릭 이름은 제공되지 않습니다.atset2- 숫자 값은 AT 키보드 컨트롤러에서 정의한 값이며 2를 설정합니다. 심볼릭 이름은 제공되지 않습니다.atset3- 숫자 값은 AT 키보드 컨트롤러에서 정의한 값이며 3(PS/2와 호환됨)을 설정합니다. 심볼릭 이름은 제공되지 않습니다.os_x- 숫자 값은 OS-X 키보드 입력 하위 시스템에서 정의합니다. 심볼릭 이름은 해당 OS-X 키의 상수 매크로 이름과 일치합니다.- X
t_kbd- 숫자 값은 Linux KBD 장치에서 정의하는 값입니다. 이는 원래 XT 코드 세트에서 변형이지만 종종 확장된 키 코드에 대한 다른 인코딩을 사용하는 경우가 많습니다. 심볼릭 이름은 제공되지 않습니다. win32- 숫자 값은 Win32 키보드 입력 하위 시스템에서 정의한 값입니다. 심볼릭 이름은 해당 Win32 키 상수 매크로 이름과 일치합니다.USB- 숫자 값은 키보드 입력을 위해 USB HID 사양에 의해 정의된 값입니다. 심볼릭 이름은 제공되지 않습니다.RFB - 숫자 값은 원시 키 코드를 전송하기 위해 RFB 확장에 의해 정의된 값입니다. 이는 XT 코드 세트에서 변형이지만 확장 키코드는 첫 번째 바이트의 높은 비트 대신 두 번째 비트 세트의 낮은 비트를 갖습니다. 심볼릭 이름은 제공되지 않습니다.
14.6.6. 가상 프로세스에 프로세스 신호 이름 전송 링크 복사링크가 클립보드에 복사되었습니다!
virsh send-process-signal rhel6 187 kill virsh send-process-signal rhel6 187 9
# virsh send-process-signal rhel6 187 kill
# virsh send-process-signal rhel6 187 9
14.6.7. VNC 디스플레이의 IP 주소 및 포트 번호 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh vncdisplay rhel6 127.0.0.1:0
# virsh vncdisplay rhel6
127.0.0.1:0
14.7. NUMA 노드 관리 링크 복사링크가 클립보드에 복사되었습니다!
14.7.1. 노드 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
14.7.2. NUMA 매개변수 설정 링크 복사링크가 클립보드에 복사되었습니다!
<numatune> 요소 내에 중첩됩니다. 옵션을 사용하지 않으면 현재 설정만 표시됩니다. numatune domain 명령에는 지정된 도메인이 필요하며 다음 옵션을 사용할 수 있습니다.
--mode- 모드를strict,interleave또는preferred로 설정할 수 있습니다. 도메인이엄격한모드 내에서 시작되지 않는 한, 실행 중인 도메인은 실시간 중에 모드를 변경할 수 없습니다.--nodeset에는 호스트 물리적 시스템에서 도메인을 실행하는 데 사용하는 NUMA 노드 목록이 포함되어 있습니다. 목록에는 각 노드가 쉼표로 구분되어 있으며 노드 범위에 대시를 사용하고 노드를 제외하는 데 사용되는 caret^이 포함됩니다.- 다음 세 가지 옵션 중 하나만 인스턴스당 사용할 수 있습니다.
--config는 영구 게스트 가상 머신의 다음 부팅에 적용됩니다.--live는 실행 중인 게스트 가상 머신의 스케줄러 정보를 설정합니다.--current는 게스트 가상 머신의 현재 상태에 영향을 미칩니다.
14.7.3. NUMA 셀에 사용 가능한 메모리 마운트 표시 링크 복사링크가 클립보드에 복사되었습니다!
all 옵션을 사용하면 각 셀에 사용 가능한 메모리와 시스템의 사용 가능한 총 메모리가 표시됩니다. 숫자 인수를 사용하거나 셀 번호와 함께 --cellno 옵션과 함께 사용하면 지정된 셀에 사용 가능한 메모리가 표시됩니다.
14.7.4. CPU 목록 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh nodecpumap CPUs present: 4 CPUs online: 1 CPU map: y
$ virsh nodecpumap
CPUs present: 4
CPUs online: 1
CPU map: y
14.7.5. CPU 통계 표시 링크 복사링크가 클립보드에 복사되었습니다!
14.7.6. 호스트 물리적 시스템 일시 중단 링크 복사링크가 클립보드에 복사되었습니다!
--target 옵션은 mem,disk 또는 hybrid 로 설정할 수 있습니다. 이러한 옵션은 일시 중단할 메모리, 디스크 또는 둘의 조합을 설정하도록 나타냅니다. --duration 를 설정하면 설정된 기간이 만료된 후 호스트 물리적 시스템이 중단되도록 지시합니다. 몇 초 내에 설정됩니다. 기간 시간은 60초를 초과할 것을 권장합니다.
virsh nodesuspend disk 60
$ virsh nodesuspend disk 60
14.7.7. 노드 메모리 매개변수 설정 및 표시 링크 복사링크가 클립보드에 복사되었습니다!
- shm-pages-to-scan - 공유 메모리 서비스가 잠자기 상태로 전환되기 전에 검사할 페이지 수를 설정합니다.
- shm-sleep-milisecs - 공유 메모리 서비스가 다음 검사 전에 절전하게 될 밀리초 수를 설정합니다.
- shm-merge-across-nodes - 여러 NUMA 노드의 페이지를 병합할 수 있는지 지정합니다. 허용되는 값은
0및1입니다.0으로 설정하면 병합할 수 있는 유일한 페이지는 동일한 NUMA 노드의 메모리 영역에 물리적으로 상주하는 페이지입니다.1로 설정하면 모든 NUMA 노드의 페이지를 병합할 수 있습니다. 기본 설정은1입니다.
14.7.8. 호스트 노드에서 장치 생성 링크 복사링크가 클립보드에 복사되었습니다!
<장치의 최상위 장치> 설명에 대한 XML이 포함되어야 합니다.
14.7.9. 노드 장치 분리 링크 복사링크가 클립보드에 복사되었습니다!
<hostdev> 패스스루를 통해 게스트가 안전하게 사용할 수 있습니다. 이 작업은 nodedev-reattach 명령을 사용하여 취소할 수 있지만 관리 서비스에 대해 자동으로 수행됩니다. 이 명령은 nodedev-dettach 도 허용합니다.
드라이버 옵션을 사용하면 원하는 백엔드 드라이버를 지정할 수 있습니다.
14.7.10. 장치의 구성 설정 검색 링크 복사링크가 클립보드에 복사되었습니다!
<장치에> 대한 XML 구성 파일을 덤프합니다. XML 구성에는 장치 이름(예: 장치, 공급업체, 제품 ID)과 같은 정보가 포함됩니다. 인수 장치는 WWNN | WWPN 형식(HBA만 해당)의 장치 이름 또는 WWN 쌍일 수 있습니다.
14.7.11. 노드에 장치 나열 링크 복사링크가 클립보드에 복사되었습니다!
--tree 명령은 libvirt 에서 알려진 노드에서 사용 가능한 모든 장치를 나열합니다. cap 는 기능 유형별로 목록을 필터링하는 데 사용되며, 각각 쉼표로 구분되며 --tree 와 함께 사용할 수 없습니다. --tree 옵션을 사용하여 다음과 같이 출력을 트리 구조로 둡니다.
14.7.12. 노드의 재설정 트리거 링크 복사링크가 클립보드에 복사되었습니다!
14.8. 게스트 가상 머신 시작, Suspending, Resuming, Saving 및 Restoring 링크 복사링크가 클립보드에 복사되었습니다!
14.8.1. 정의된 도메인 시작 링크 복사링크가 클립보드에 복사되었습니다!
--console --console --paused --autodestroy --bypass-cache --force-boot --pass-fds 명령은 이미 정의되었지만 누가 마지막 관리 저장 상태 또는 새 부팅 이후 비활성 도메인을 시작합니다. 명령은 다음 옵션을 사용할 수 있습니다.
--console- 콘솔에 도메인 연결을 부팅합니다.--paused- 드라이버에서 이를 지원하는 경우 도메인을 부팅한 다음 일시 정지 상태로 전환합니다.--autodestroy- guest 가상 머신은 virsh 세션이 닫히거나 libvirt 연결이 닫히거나 그렇지 않으면 종료될 때 자동으로 삭제됩니다.--bypass-cache- 도메인이 관리형save 상태인 경우 사용됩니다. 이 기능을 사용하면 게스트 가상 머신을 복원하여 시스템 캐시를 피할 수 있습니다. 이 경우 복원 프로세스가 느려집니다.--force-boot- 관리 저장 옵션을 폐기하고 새로운 부팅이 발생하는 경우--pass-fds-는 쉼표로 구분된 추가 옵션 목록으로, 게스트 가상 머신에 전달됩니다.
14.8.2. 게스트 가상 머신 일시 중단 링크 복사링크가 클립보드에 복사되었습니다!
virsh suspend {domain-id, domain-name or domain-uuid}
# virsh suspend {domain-id, domain-name or domain-uuid}
14.8.3. 실행 중인 도메인 일시 중단 링크 복사링크가 클립보드에 복사되었습니다!
--duration --target 명령은 실행 중인 도메인을 사용하고 일시 중지되므로 세 가지 상태(S3, S4 또는 하이브리드) 중 하나에 배치할 수 있습니다.
virsh dompmsuspend rhel6 --duration 100 --target mem
# virsh dompmsuspend rhel6 --duration 100 --target mem
--duration- 상태 변경 시간(초)을 설정합니다.--target-mem(S3) 디스크(suspend to일 수 있습니다.disk (S4))또는하이브리드(hybrid suspend)
14.8.4. pmsuspend 상태에서 도메인 시작 링크 복사링크가 클립보드에 복사되었습니다!
dompmwakeup rhel6
# dompmwakeup rhel6
14.8.5. 도메인 정의 취소 링크 복사링크가 클립보드에 복사되었습니다!
virsh undefine domain --managed-save --snapshots-metadata --storage --remove-all-storage --wipe-storage
# virsh undefine domain --managed-save --snapshots-metadata --storage --remove-all-storage --wipe-storage
--managed-save- 이 옵션을 사용하면 관리 저장소 이미지도 정리됩니다. 이 옵션을 사용하지 않으면 관리형 저장 이미지로 도메인을 정의 해제하려고 하면 실패합니다.--snapshots-metadata- 이 옵션을 사용하면 비활성 도메인을 정의할 때 스냅샷( snapshot-list와 같이)도 정리됩니다. 구성 파일에 스냅샷 메타데이터가 포함된 비활성 도메인을 정의 해제하려고 하면 실패합니다. 이 옵션이 사용되고 도메인이 활성 상태이면 무시됩니다.--storage- 이 옵션을 사용하려면 정의되지 않은 도메인과 함께 제거할 볼륨 대상 이름 또는 스토리지 볼륨의 소스 경로 목록이 쉼표로 구분되어 있어야 합니다. 이 작업은 스토리지 볼륨이 제거되기 전에 정의 해제됩니다. 이 작업은 비활성 도메인에서만 수행할 수 있습니다. 또한 libvirt 에서 관리하는 스토리지 볼륨에서만 작동합니다.--remove-all-storage- 도메인 정의 외에 연결된 모든 스토리지 볼륨이 삭제됩니다.--wipe-storage- 스토리지 볼륨을 삭제하는 것 외에도 콘텐츠가 지워집니다.
14.8.6. 게스트 가상 머신 재시작 링크 복사링크가 클립보드에 복사되었습니다!
virsh resume {domain-id, domain-name or domain-uuid}
# virsh resume {domain-id, domain-name or domain-uuid}
14.8.7. 게스트 가상 머신 저장 링크 복사링크가 클립보드에 복사되었습니다!
virsh save {domain-name|domain-id|domain-uuid} state-file --bypass-cache --xml --running --paused --verbose
# virsh save {domain-name|domain-id|domain-uuid} state-file --bypass-cache --xml --running --paused --verbose
--bypass-cache- 복원으로 인해 파일 시스템 캐시가 발생하지 않지만 이 옵션을 사용하면 복원 작업이 느려질 수 있습니다.--XML- 이 옵션을 XML 파일 이름과 함께 사용해야 합니다. 이 옵션은 일반적으로 생략되지만 복원된 게스트 가상 머신에서 도메인 XML의 호스트별 부분에만 변경 사항이 있는 대체 XML 파일을 제공하는 데 사용할 수 있습니다. 예를 들어 게스트를 저장한 후 가져온 디스크 스냅샷으로 인해 기본 스토리지의 파일 이름 차이를 고려할 수 있습니다.--running- 저장 이미지에 기록된 상태를 재정의하여 도메인을 실행 중으로 시작합니다.--paused- 저장 이미지에 기록된 상태를 재정의하여 도메인을 일시 중지한 상태로 시작합니다.--verbose- 저장 진행률을 표시합니다.
14.8.8. 게스트 복구에 사용할 도메인 XML 파일 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
--running|--paused 명령은 지정된 파일이 나중에 virsh restore 명령 중에 사용될 때 사용되는 도메인 XML 파일을 업데이트합니다. xml 인수는 도메인 XML의 호스트 물리적 시스템 특정 부분에서만 변경 사항이 있는 대체 XML이 포함된 XML 파일 이름이어야 합니다. 예를 들어 게스트를 저장한 후 기본 스토리지의 디스크 스냅샷을 생성하여 파일 이름 지정 차이를 고려할 수 있습니다. 도메인을 실행 중이거나 일시 정지된 상태로 복원해야 하는 경우 저장 이미지 레코드입니다. --running 또는 --paused 옵션을 사용하면 사용할 상태가 됩니다.
14.8.9. 도메인 XML 파일 추출 링크 복사링크가 클립보드에 복사되었습니다!
--security-info 명령은 저장된 상태 파일( virsh save 명령에서 사용)을 참조할 때 적용되는 도메인 XML 파일을 추출합니다. security-info 옵션을 사용하면 파일에 보안에 중요한 정보가 포함됩니다.
14.8.10. 도메인 XML 구성 파일 편집 링크 복사링크가 클립보드에 복사되었습니다!
--running --paused 명령은 virsh save 명령으로 생성된 저장된 파일과 관련된 XML 구성 파일을 편집합니다.
--running 또는 --paused 상태로 복원해야 하는지 여부를 기록합니다. 이러한 옵션을 사용하지 않으면 파일 자체에 의해 상태가 결정됩니다. --running 또는 --paused 를 선택하면 virsh restore 에서 사용할 상태를 덮어쓸 수 있습니다.
14.8.11. 게스트 가상 머신 복원 링크 복사링크가 클립보드에 복사되었습니다!
virsh restore state-file
# virsh restore state-file
--bypass-cache- 복원으로 인해 파일 시스템 캐시가 발생하지 않지만 이 옵션을 사용하면 복원 작업이 느려질 수 있습니다.--XML- 이 옵션을 XML 파일 이름과 함께 사용해야 합니다. 이 옵션은 일반적으로 생략되지만 복원된 게스트 가상 머신에서 도메인 XML의 호스트별 부분에만 변경 사항이 있는 대체 XML 파일을 제공하는 데 사용할 수 있습니다. 예를 들어 게스트를 저장한 후 가져온 디스크 스냅샷으로 인해 기본 스토리지의 파일 이름 차이를 고려할 수 있습니다.--running- 저장 이미지에 기록된 상태를 재정의하여 도메인을 실행 중으로 시작합니다.--paused- 저장 이미지에 기록된 상태를 재정의하여 도메인을 일시 중지한 상태로 시작합니다.
14.9. 게스트 가상 시스템의 종료, 재부팅 및 종료 링크 복사링크가 클립보드에 복사되었습니다!
14.9.1. 게스트 가상 머신 종료 링크 복사링크가 클립보드에 복사되었습니다!
virsh shutdown {domain-id, domain-name or domain-uuid} [--mode method]
# virsh shutdown {domain-id, domain-name or domain-uuid} [--mode method]
14.9.2. Red Hat Enterprise Linux 7 호스트에서 Red Hat Enterprise Linux 6 게스트 종료 링크 복사링크가 클립보드에 복사되었습니다!
최소 설치 옵션을 사용하여 Red Hat Enterprise Linux 6 게스트 가상 머신을 설치하면 acpid 패키지를 설치 하지 않습니다. Red Hat Enterprise Linux 7은 systemd 에 의해 수행되었기 때문에 더 이상 이 패키지가 필요하지 않습니다. 그러나 Red Hat Enterprise Linux 7 호스트에서 실행되는 Red Hat Enterprise Linux 6 게스트 가상 머신에는 여전히 필요합니다.
절차 14.4. Red Hat Enterprise Linux 6 게스트의 해결 방법
acpid 패키지 설치
acpid 서비스는 ACPI 요청을 수신하고 처리합니다.게스트 가상 머신에 로그인하고 게스트 가상 머신에 acpid 패키지를 설치합니다.yum install acpid
# yum install acpidCopy to Clipboard Copied! Toggle word wrap Toggle overflow acpid 서비스 활성화
게스트 가상 머신 부팅 순서 중에acpid서비스를 설정하고 서비스를 시작합니다.chkconfig acpid on service acpid start
# chkconfig acpid on # service acpid startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 게스트 도메인 xml 준비
다음 요소를 포함하도록 도메인 XML 파일을 편집합니다. virtio 직렬 포트를org.qemu.guest_agent.0으로 교체하고 $guestname대신 게스트 이름을 사용합니다.그림 14.2. 게스트 XML 대체
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QEMU 게스트 에이전트 설치
QEMU 게스트 에이전트(QEMU-GA)를 설치하고 10장. QEMU-img 및 QEMU 게스트 에이전트 에서 지시한 대로 서비스를 시작합니다. Windows 게스트를 실행하는 경우 이 장에도 이에 대한 지침이 있습니다.게스트 종료
- 다음 명령을 실행하십시오.
virsh list --all - this command lists all of the known domains Id Name State ---------------------------------- rhel6 running
# virsh list --all - this command lists all of the known domains Id Name State ---------------------------------- rhel6 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신 종료
virsh shutdown rhel6 Domain rhel6 is being shutdown
# virsh shutdown rhel6 Domain rhel6 is being shutdownCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 게스트 가상 머신이 종료될 때까지 몇 초 동안 기다립니다.
virsh list --all Id Name State ---------------------------------- . rhel6 shut off
# virsh list --all Id Name State ---------------------------------- . rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 편집한 XML 파일을 사용하여 rhel6 이라는 도메인을 시작합니다.
virsh start rhel6
# virsh start rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rhel6 게스트 가상 시스템에서 acpi를 종료합니다.
virsh shutdown --mode acpi rhel6
# virsh shutdown --mode acpi rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rhel6은 모든 도메인을 다시 나열합니다. rhel6 은 목록에 계속 있어야 하며, 종료됨으로 표시되어야 합니다.
virsh list --all Id Name State ---------------------------------- rhel6 shut off
# virsh list --all Id Name State ---------------------------------- rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 편집한 XML 파일을 사용하여 rhel6 이라는 도메인을 시작합니다.
virsh start rhel6
# virsh start rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rhel6 게스트 가상 시스템 게스트 에이전트를 종료합니다.
virsh shutdown --mode agent rhel6
# virsh shutdown --mode agent rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 도메인을 나열합니다. rhel6 은 목록에 있어야 하며 종료되었음을 나타냅니다.
virsh list --all Id Name State ---------------------------------- rhel6 shut off
# virsh list --all Id Name State ---------------------------------- rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow
libvirt-guest 서비스를 중지하여 게스트를 자동으로 종료할 수 있습니다. 이 방법에 대한 자세한 내용은 14.9.3절. “libvirt-guests 구성 설정 조작” 를 참조하십시오.
14.9.3. libvirt-guests 구성 설정 조작 링크 복사링크가 클립보드에 복사되었습니다!
libvirt-guests 서비스에는 게스트가 올바르게 종료되도록 구성할 수 있는 매개 변수 설정이 있습니다. 이 패키지는 libvirt 설치의 일부이며 기본적으로 설치됩니다. 이 서비스는 호스트가 종료될 때 자동으로 게스트를 디스크에 저장하고 호스트가 재부팅될 때 이전 상태로 복원합니다. 기본적으로 이 설정은 게스트를 일시 중단하도록 설정되어 있습니다. 게스트를 종료하려면 libvirt-guests 구성 파일의 매개 변수 중 하나를 변경해야 합니다.
절차 14.5. 게스트의 정상 종료를 허용하도록 libvirt-guests 서비스 매개 변수 변경
구성 파일을 엽니다.
구성 파일은/etc/sysconfig/libvirt-guests에 있습니다. 파일을 편집하고 주석 표시(#)를 제거하고ON_SHUTDOWN=suspend를ON_SHUTDOWN=shutdown으로 변경합니다. 변경 사항을 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ???
URIS- checks the specified connections for a running guest. TheDefaultsetting functions in the same manner asvirshdoes when no explicit URI is set In addition, one can explicitly set the URI from/etc/libvirt/libvirt.conf. It should be noted that when using the libvirt configuration file default setting, no probing will be used.- ???
ON_BOOT- specifies the action to be done to / on the guests when the host boots. Thestartoption starts all guests that were running prior to shutdown regardless on their autostart settings. Theignoreoption will not start the formally running guest on boot, however, any guest marked as autostart will still be automatically started by libvirtd.- ???
- The
START_DELAY- sets a delay interval in between starting up the guests. This time period is set in seconds. Use the 0 time setting to make sure there is no delay and that all guests are started simultaneously. - ???
ON_SHUTDOWN- specifies the action taken when a host shuts down. Options that can be set include:suspendwhich suspends all running guests using virsh managedsave andshutdownwhich shuts down all running guests. It is best to be careful with using theshutdownoption as there is no way to distinguish between a guest which is stuck or ignores shutdown requests and a guest that just needs a longer time to shutdown. When setting theON_SHUTDOWN=shutdown, you must also setSHUTDOWN_TIMEOUTto a value suitable for the guests.- ???
PARALLEL_SHUTDOWNDictates that the number of guests on shutdown at any time will not exceed number set in this variable and the guests will be suspended concurrently. If set to0, then guests are not shutdown concurrently.- ???
- Number of seconds to wait for a guest to shut down. If
SHUTDOWN_TIMEOUTis enabled, this timeout applies as a timeout for shutting down all guests on a single URI defined in the variable URIS. IfSHUTDOWN_TIMEOUTis set to0, then there is no time out (use with caution, as guests might not respond to a shutdown request). The default value is 300 seconds (5 minutes). - ???
BYPASS_CACHEcan have 2 values, 0 to disable and 1 to enable. If enabled it will by-pass the file system cache when guests are restored. Note that setting this may effect performance and may cause slower operation for some file systems.
libvirt-guests 서비스 시작
서비스를 시작하지 않은 경우 libvirt-guests 서비스를 시작합니다. 서비스를 다시 시작하지 않도록 하면 실행 중인 모든 도메인이 종료됩니다.
14.9.4. 게스트 가상 머신 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
#virsh reboot {domain-id, domain-name or domain-uuid} [--mode method]
#virsh reboot {domain-id, domain-name or domain-uuid} [--mode method]
<on_reboot> 요소를 수정하여 재부팅 게스트 가상 머신의 동작을 제어할 수 있습니다. 자세한 내용은 20.12절. “이벤트 구성” 를 참조하십시오.
--mode 옵션은 initctl,acpi,agent, signal 를 포함하는 쉼표로 구분된 목록을 지정할 수 있습니다. 드라이버에서 각 모드를 시도하는 순서는 명령에 지정된 순서와 관련이 없습니다. 순서를 엄격하게 제어하려면 한 번에 단일 모드를 사용하고 명령을 반복합니다.
14.9.5. 게스트 가상 머신이 중지되도록 강제 적용 링크 복사링크가 클립보드에 복사되었습니다!
virsh destroy {domain-id, domain-name or domain-uuid} [--graceful]
# virsh destroy {domain-id, domain-name or domain-uuid} [--graceful]
14.9.6. 가상 머신 재설정 링크 복사링크가 클립보드에 복사되었습니다!
14.10. 게스트 가상 머신 정보 검색 링크 복사링크가 클립보드에 복사되었습니다!
14.10.1. 게스트 가상 머신의 도메인 ID 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
virsh domid {domain-name or domain-uuid}
# virsh domid {domain-name or domain-uuid}
14.10.2. 게스트 가상 머신의 도메인 이름 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
virsh domname {domain-id or domain-uuid}
# virsh domname {domain-id or domain-uuid}
14.10.3. 게스트 가상 머신의 UUID 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
virsh domuuid {domain-id or domain-name}
# virsh domuuid {domain-id or domain-name}
virsh domuuid r5b2-mySQL01 4a4c59a7-ee3f-c781-96e4-288f2862f011
# virsh domuuid r5b2-mySQL01
4a4c59a7-ee3f-c781-96e4-288f2862f011
14.10.4. 게스트 가상 머신 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh dominfo {domain-id, domain-name or domain-uuid}
# virsh dominfo {domain-id, domain-name or domain-uuid}
14.11. 스토리지 풀 명령 링크 복사링크가 클립보드에 복사되었습니다!
14.11.1. 스토리지 풀 XML 검색 링크 복사링크가 클립보드에 복사되었습니다!
pool-list [--inactive] [--all] [--persistent] [--transient] [--autostart] [--no-autostart] [--details] type
pool-list [--inactive] [--all] [--persistent] [--transient] [--autostart] [--no-autostart] [--details] type
--inactive 옵션을 사용하면 비활성 풀만 나열하고 --all 옵션을 사용하면 모든 스토리지 풀이 나열됩니다.
--persistent 에서는 목록을 영구 풀로 제한합니다. --transient 는 목록을 일시적인 풀로 제한합니다. --autostart 는 목록을 풀 자동 시작으로 제한하며, 마지막으로 --no-autostart 는 목록을 자동 시작 해제한 스토리지 풀로 제한합니다.
dir,fs,netfs,logical,disk,iscsi,scsi,mpath,rbd, sheepdog 등이 있습니다.
--details 옵션은 virsh 에 사용 가능한 경우 풀 지속성 및 용량 관련 정보를 추가로 표시하도록 지시합니다.
14.11.2. 스토리지 풀 생성, 삭제 및 시작 링크 복사링크가 클립보드에 복사되었습니다!
14.11.2.1. 스토리지 풀 빌드 링크 복사링크가 클립보드에 복사되었습니다!
--overwrite --no-overwrite 명령은 지정된 풀 이름 또는 UUID를 사용하여 풀 을 빌드합니다. --overwrite 및 --no-overwrite 옵션은 유형이 파일 시스템인 풀에서만 사용할 수 있습니다. 옵션을 둘 다 지정하지 않고 풀이 파일 시스템 유형 풀인 경우 결과 빌드에서는 디렉터리만 만듭니다.
--no-overwrite 가 지정된 경우 파일 시스템이 대상 장치에 이미 있는지 확인하거나, 존재하는 경우 오류를 반환하거나 mkfs 를 사용하여 대상 장치를 포맷합니다. --overwrite 가 지정된 경우 mkfs 명령이 실행되고 대상 장치의 기존 데이터를 덮어씁니다.
14.11.2.2. XML 파일에서 스토리지 풀 생성 및 정의 링크 복사링크가 클립보드에 복사되었습니다!
14.11.2.3. 원시 매개변수에서 스토리지 풀 생성 및 시작 링크 복사링크가 클립보드에 복사되었습니다!
pool-create-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
# pool-create-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
--print-xml 을 지정하면 풀을 생성하지 않고 스토리지 풀 오브젝트의 XML을 출력합니다. 그렇지 않으면 풀을 구축해야 합니다. 유형이 필요한 모든 스토리지 풀 명령의 경우 풀 유형을 쉼표로 구분해야 합니다. 유효한 풀 유형에는 dir,fs,netfs,logical,disk,iscsi,scsi,mpath,rbd, sheepdog 등이 있습니다.
pool-define-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
# pool-define-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
--print-xml 을 지정하면 풀을 정의하지 않고 풀 오브젝트의 XML을 출력합니다. 그렇지 않으면 풀에 지정된 유형이 있어야 합니다. 유형이 필요한 모든 스토리지 풀 명령의 경우 풀 유형을 쉼표로 구분해야 합니다. 유효한 풀 유형에는 dir,fs,netfs,logical,disk,iscsi,scsi,mpath,rbd, sheepdog 등이 있습니다.
14.11.2.4. 스토리지 풀 자동 시작 링크 복사링크가 클립보드에 복사되었습니다!
--disable 명령은 부팅 시 자동으로 시작되도록 스토리지 풀을 활성화하거나 비활성화합니다. 이 명령에는 풀 이름 또는 UUID가 필요합니다. pool-autostart 명령을 비활성화하려면 --disable 옵션을 사용합니다.
14.11.3. 스토리지 풀 중지 및 삭제 링크 복사링크가 클립보드에 복사되었습니다!
14.11.4. 스토리지 풀에 대한 XML 덤프 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
--inactive pool-or-uuid 명령은 지정된 스토리지 풀 오브젝트에 대한 XML 정보를 반환합니다. --inactive 를 사용하면 현재 풀 구성과 달리 풀의 다음 시작에 사용할 구성을 덤프합니다.
14.11.5. 스토리지 풀의 구성 파일 편집 링크 복사링크가 클립보드에 복사되었습니다!
14.11.6. 스토리지 풀 변환 링크 복사링크가 클립보드에 복사되었습니다!
14.12. 스토리지 볼륨 명령 링크 복사링크가 클립보드에 복사되었습니다!
14.12.1. 스토리지 볼륨 생성 링크 복사링크가 클립보드에 복사되었습니다!
--inputpool pool-or-uuid vol-name-or-key-or-path 명령은 다른 스토리지 볼륨을 콘텐츠의 템플릿으로 사용하여 스토리지 볼륨을 생성합니다. 이 명령을 사용하려면 볼륨을 생성할 스토리지 풀의 이름 또는 UUID인 pool-or-uuid 가 필요합니다.
--inputpool pool-or-uuid 옵션은 소스 볼륨이 있는 스토리지 풀의 이름 또는 uuid를 지정합니다. vol-name-or-key-or-path 인수는 소스 볼륨의 이름 또는 키 또는 경로를 지정합니다. 일부 예제는 13.1절. “볼륨 생성” 를 참조하십시오.
vol-create-as pool-or-uuid name capacity --allocation <size> --format <string> --backing-vol <vol-name-or-key-or-path> --backing-vol-format <string>
vol-create-as pool-or-uuid name capacity --allocation <size> --format <string> --backing-vol <vol-name-or-key-or-path> --backing-vol-format <string>
--allocation <크기는> 스케일링된 정수 기본값을 바이트로 지정하여 볼륨에 할당할 초기 크기입니다. --format <문자열> 은 파일 기반 스토리지 풀에서 사용되어 쉼표로 구분된 허용 가능한 형식 문자열인 볼륨 파일 형식을 지정합니다. 허용 가능한 형식에는 raw,bochs,qcow 2 ,qcow2,vmdk, --backing- vol-name-or-key-or-path 가 기존 볼륨의 스냅샷을 찍는 경우 사용할 소스 백업 볼륨이 포함됩니다. --backing-vol-format 문자열 은 쉼표로 구분된 형식 문자열인 스냅샷 지원 볼륨의 형식입니다. 허용되는 값에는 raw,bochs,qcow,qcow2,, vmdk, host_device 가 포함됩니다. 그러나 이는 파일 기반 스토리지 풀에만 적용됩니다.
14.12.1.1. XML 파일에서 스토리지 볼륨 생성 링크 복사링크가 클립보드에 복사되었습니다!
virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml virsh edit newvolume.xml virsh vol-create differentstoragepool newvolume.xml
virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml
virsh edit newvolume.xml
virsh vol-create differentstoragepool newvolume.xml
- --inactive 옵션은 비활성 게스트 가상 머신(즉, 정의되어 있지만 현재 활성화되어 있지 않은 게스트 가상 머신)을 나열합니다.
- all 옵션은 모든 게스트 가상 머신을 나열합니다.
14.12.1.2. 스토리지 볼륨 복제 링크 복사링크가 클립보드에 복사되었습니다!
--pool pool-or-uuid vol-name-or-key-or-path name 명령은 기존 스토리지 볼륨을 복제합니다. vol-create-from 도 사용할 수 있지만 스토리지 볼륨을 복제하는 것이 권장되는 방법은 아닙니다. --pool pool-or-uuid 옵션은 볼륨을 생성할 스토리지 풀의 이름 또는 UUID입니다. vol-name-or-key-or-path 인수는 소스 볼륨의 이름 또는 키입니다. name 인수를 사용하면 새 볼륨의 이름을 나타냅니다.
14.12.2. 스토리지 볼륨 삭제 링크 복사링크가 클립보드에 복사되었습니다!
--pool pool-or-uuid vol-name-or-key-path 명령은 지정된 볼륨을 삭제합니다. 명령에는 볼륨이 있는 스토리지 풀의 이름 또는 UUID인 특정 --pool pool-or-uuid 가 필요합니다. vol-name-or-key-or-path 옵션은 삭제할 볼륨의 이름 또는 키 또는 경로를 지정합니다.
--pool pool-or-uuid -- algorithm알고리즘 vol-name-or-key-path 명령은 볼륨을 지우고 이전에 볼륨의 데이터를 나중에 읽을 수 없도록 합니다. 명령에는 볼륨이 있는 스토리지 풀의 이름 또는 UUID인 --pool pool-or-uuid 가 필요합니다. vol-name-or-key-or-path 에는 초기화할 볼륨의 이름 또는 키 또는 경로가 포함됩니다. 기본값 대신 다른 삭제 알고리즘을 선택할 수 있습니다(스토리지 볼륨의 모든 섹터는 값 "0")로 작성됩니다. 삭제 알고리즘을 지정하려면 다음 지원되는 알고리즘 유형 중 하나로 -- algorithm 옵션을 사용합니다.
- 1-pass all zerosZero- NNSA - 4-pass NNSA 정책 Letter NAP-14.1-C(XVI-8)는 이동식 및 비독성 하드 디스크(random x2, 0x00)를 삭제합니다.
- DoD - 4-pass DoD 5220.22-M 섹션 8-306 절차: random, 0x00, 0xff와 같은 이동식 및 비모형 디스크를 정리합니다.
- HEALTH - Information Technologies의 독일어 센터 보안 센터에서 권장하는 방법(http://www.bsi.bund.de): 0xff, 0xfe, 0xfd, 0xf7, 0xf7, 0xdf, 0xbf, 0x7f, 0x7f.
- Gutmann 문서에 설명된 정식 35-pass 시퀀스입니다.Gutmann- 7-pass 방법: Bruce Schneier in "1996): 0x00, 0xff, random x5.Schneier- Roy Pfitzner의 7-random-pass 방법: 임의의 x7pfitzner7- Roy Pfitzner의 33-random-pass 방법: 임의의 x33.pfitzner33- 1-pass 패턴: random.random
14.12.3. XML 파일에 스토리지 볼륨 정보 덤프 링크 복사링크가 클립보드에 복사되었습니다!
--pool pool-or -uuidvol-name-or-key-path 명령은 볼륨 정보를 지정된 파일에 XML 덤프로 사용합니다.
또는 UUID인 --pool pool-or-uuid 가 필요합니다. vol-name-or-key-path 는 결과 XML 파일을 배치할 볼륨의 이름 또는 키 또는 경로입니다.
14.12.4. 볼륨 정보 나열 링크 복사링크가 클립보드에 복사되었습니다!
--pool pool-or-uuid vol-name-or-key-or-path 명령은 지정된 스토리지 볼륨 --pool 에 대한 기본 정보를 나열합니다. 여기서 pool-or-uuid 는 볼륨이 있는 스토리지 풀의 이름 또는 UUID입니다. Vol-name-or-key-path 는 정보를 반환할 볼륨의 이름 또는 키 또는 경로입니다.
--pool pool-or-uuid --details 는 지정된 스토리지 풀의 모든 볼륨을 나열합니다. 이 명령에는 스토리지 풀의 이름 또는 UUID인 --pool pool-or-uuid 가 필요합니다. --details 옵션은 virsh 에 사용 가능한 볼륨 유형 및 용량 관련 정보를 추가로 표시하도록 지시합니다.
14.12.5. 스토리지 볼륨 정보 검색 링크 복사링크가 클립보드에 복사되었습니다!
--uuid vol-key-or-path 명령은 지정된 볼륨의 풀 이름 또는 UUID를 반환합니다. 기본적으로 풀 이름은 반환됩니다. --uuid 옵션이 지정되면 풀 UUID가 대신 반환됩니다. 명령에는 요청된 정보를 반환하는 볼륨의 키 또는 경로인 vol-key-or-path 가 필요합니다.
--pool pool-or-uuid vol-name-or-key 명령은 지정된 볼륨의 경로를 반환합니다. 명령에는 볼륨이 있는 스토리지 풀의 이름 또는 UUID인 --pool pool-or-uuid 가 필요합니다. 또한 경로가 요청된 볼륨의 이름 또는 키인 vol-name-or-key 가 필요합니다.
--pool pool-or-uuid vol-name-or-path 명령은 지정된 볼륨에 대한 볼륨 키를 반환합니다. 여기서 --pool pool-or-uuid 는 볼륨이 있고 vol-name-or-path 가 볼륨 키를 반환하는 볼륨의 이름 또는 경로입니다.
14.12.6. 스토리지 볼륨 업로드 및 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
14.12.6.1. 스토리지 볼륨에 콘텐츠 업로드 링크 복사링크가 클립보드에 복사되었습니다!
--pool pool-or-uuid --offset 바이트 --length 바이트 vol-name-or-key-or-path local-file 명령은 지정된 local-file 의 콘텐츠를 스토리지 볼륨에 업로드합니다. 명령에는 볼륨이 있는 스토리지 풀의 이름 또는 UUID인 --pool pool-or-uuid 가 필요합니다. 또한 초기화할 볼륨의 이름 또는 키 또는 경로인 vol- name-or-key-path가 필요합니다. --offset 옵션은 데이터 쓰기를 시작할 스토리지 볼륨의 위치입니다. -- lengthlength 는 업로드할 데이터의 양에 대한 상한을 지정합니다. local-file 이 지정된 --length 보다 큰 경우 오류가 발생합니다.
14.12.6.2. 스토리지 볼륨에서 콘텐츠 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
vol-download --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
# vol-download --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
또는 UUID인 --pool pool-or-uuid 가 필요합니다. 또한 초기화할 볼륨의 이름 또는 키 또는 경로인 vol- name-or-key-path가 필요합니다. --offset 옵션을 사용하면 데이터 읽기를 시작할 스토리지 볼륨의 위치가 지정됩니다. -- lengthlength 는 다운로드할 데이터의 양에 대한 상한을 지정합니다.
14.12.7. 스토리지 볼륨 다시 지정 링크 복사링크가 클립보드에 복사되었습니다!
vol-resize --pool pool-or-uuid vol-name-or-path pool-or-uuid capacity --allocate --delta --shrink
# vol-resize --pool pool-or-uuid vol-name-or-path pool-or-uuid capacity --allocate --delta --shrink
또는 UUID인 --pool pool-or-uuid 가 필요합니다. 또한 이 명령에는 vol-name-or-key-or-path 가 다시 크기 조정할 볼륨의 이름 또는 키 또는 경로가 있어야 합니다.
--allocate 옵션을 지정하지 않는 한 스파스 파일을 만들 수 있습니다. 일반적으로 용량은 새 크기이지만 --delta 가 있는 경우 기존 크기에 추가됩니다. --shrink 옵션이 없으면 볼륨 축소가 실패합니다.
--shrink 옵션을 제공하지 않고 음수 기호가 필요하지 않은 경우 용량은 음수일 수 없습니다. capacity 는 접미사가 없는 경우 기본값은 바이트입니다. 이 명령은 활성 게스트에서 사용하지 않는 스토리지 볼륨에만 안전합니다. 실시간 재조정은 14.5.17절. “블록 크기를 사용하여 도메인 경로의 크기 변경” 를 참조하십시오.
14.13. 게스트별 가상 머신 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
14.13.1. 게스트 가상 머신 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh list
# virsh list
--inactive옵션은 비활성 게스트 가상 머신(즉, 정의되어 있지만 현재 활성화되어 있지 않은 게스트 가상 머신)을 나열합니다.--all옵션은 모든 게스트 가상 머신을 나열합니다. 예를 들어 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 사용하여 볼 수 있는 7 가지 상태가 있습니다.- 실행 중 -
실행중 상태는 현재 CPU에서 활성 상태인 게스트 가상 머신을 나타냅니다. - idle -
idle상태는 도메인이 유휴 상태이며 실행 중이거나 실행되지 않을 수 있음을 나타냅니다. 이는 도메인이 IO(기존 대기 상태)에서 대기 중이거나 다른 작업을 수행할 수 없기 때문에 발생할 수 있습니다. paused- 일시 정지된 도메인이 나열됩니다. 이는 관리자가 virt-manager 또는 virsh 일시 중지 에서 일시 정지 버튼을 사용하는 경우 발생합니다. 게스트 가상 머신이 일시 중지되면 메모리와 기타 리소스가 소모되지만 하이퍼바이저에서의 예약 및 CPU 리소스는 불가능합니다.shutdown- 종료 상태가 종료 프로세스 중 게스트 가상 시스템용입니다. 게스트 가상 시스템은 종료 신호를 전송하므로 작업을 정상적으로 중지해야 합니다. 일부 운영 체제는 모든 게스트 가상 머신 운영 체제에서는 작동하지 않을 수 있습니다. 일부 운영 체제는 이러한 신호에 응답하지 않습니다.shut off- 종료 상태는 도메인이 실행되지 않음을 나타냅니다. 이는 도메인이 완전히 종료되거나 시작되지 않은 경우 발생할 수 있습니다.- 충돌 -
충돌됨 상태는 도메인이 충돌했음을 나타내며 게스트 가상 머신이 충돌 시 재시작되지 않도록 구성된 경우에만 발생할 수 있습니다. - dying 상태의 도메인은
dying프로세스이며, 이는 도메인이 완전히 종료되거나 충돌하지 않은 상태입니다.
--managed-saveA-save 이 옵션만으로는 도메인을 필터링하지 않지만, 관리되는 저장 상태가 활성화된 도메인이 나열됩니다. 실제로 도메인을 별도로 나열하려면--inactive옵션도 사용해야 합니다.--name은 지정된 도메인 이름이 목록에 인쇄됩니다.--uuid가 지정된 경우 도메인의 UUID가 대신 인쇄됩니다.--table옵션을 사용하면 테이블 스타일 출력을 사용해야 합니다. 세 가지 명령은 모두 상호 배타적입니다.--title이 명령은--table출력과 함께 사용해야 합니다.--title은 짧은 도메인 설명(title)을 사용하여 테이블에서 추가 열을 생성합니다.--persistent에는 목록에 영구 도메인이 포함되어 있습니다.--transient옵션을 사용합니다.--with-managed-save는 관리 저장으로 구성된 도메인이 나열됩니다. 없이 명령을 나열하려면--without-managed-save명령을 사용합니다.--state-running필터는 실행 중인 도메인에 대해--state-paused, 일시 중지된 도메인의 --state-paused, 해제된 도메인의--state-shutoff,--state-other는 모든 상태를 폴백으로 나열합니다.--autostart이 옵션을 사용하면 자동 시작 도메인이 나열됩니다. 이 기능이 비활성화된 도메인을 나열하려면--no-autostart옵션을 사용합니다.--with-snapshot은 스냅샷 이미지를 나열할 수 있는 도메인이 나열됩니다. 스냅샷이 없는 도메인을 필터링하려면--without-snapshot옵션을 사용합니다.
14.13.2. 가상 CPU 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh vcpuinfo {domain-id, domain-name or domain-uuid}
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
14.13.3. 가상 CPU 선호도 구성 링크 복사링크가 클립보드에 복사되었습니다!
예 14.3. 호스트 물리적 머신의 CPU에 vCPU 고정
--vCPU의vcpu 번호 필요[-cpulist] >string< 설정할 호스트 물리적 시스템의 CPU 번호를 나열하거나 선택적 쿼리를 생략합니다.--config는 다음 부팅에 영향을 미칩니다.--live는 실행 중인 도메인에 영향을 미칩니다.--current가 현재 도메인에 영향을 미칩니다.
14.13.4. 도메인의 가상 CPU 수에 대한 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
--maximum사용 가능한 최대 vCPU 수 표시--active는 현재 활성화된 vCPU 수를 표시--live에서 실행 중인 도메인의 값을 표시--config는 게스트 가상 머신의 다음 부팅에 구성할 값을 표시합니다.--current가 현재 도메인 상태에 따라 값을 표시--guest는 반환된 수를 게스트 관점에서 표시합니다.
14.13.5. 가상 CPU 선호도 구성 링크 복사링크가 클립보드에 복사되었습니다!
virsh vcpupin domain-id vcpu cpulist
# virsh vcpupin domain-id vcpu cpulist
--config 와 같은 추가 매개변수는 다음 부팅에 영향을 미치지만 --live 는 실행 중인 도메인에 영향을 미치며 --current 는 현재 도메인에 영향을 미칩니다.
14.13.6. 가상 CPU 수 구성 링크 복사링크가 클립보드에 복사되었습니다!
virsh setvcpus {domain-name, domain-id or domain-uuid} count [[--config] [--live] | [--current] [--guest]
# virsh setvcpus {domain-name, domain-id or domain-uuid} count [[--config] [--live] | [--current] [--guest]
{domain-name, domain-id 또는 domain-uuid}- 가상 머신을 지정합니다.count- 설정할 가상 CPU 수를 지정합니다.참고개수값은 게스트 가상 시스템을 생성할 때 게스트 가상 머신에 할당된 CPU 수를 초과할 수 없습니다. 호스트 또는 하이퍼바이저에 의해 제한될 수도 있습니다. Xen의 경우 도메인이 반가상화된 경우에만 실행 중인 도메인의 가상 CPU를 조정할 수 있습니다.--live- 지정하지 않은 경우 사용되는 기본 옵션입니다. 구성 변경 사항은 실행 중인 게스트 가상 머신에 적용됩니다. vCPU 수가 늘어나면 핫 플러그 라고 하며 축소된 경우 핫 플러그 라고 합니다.중요vCPU 핫 플러그 해제 기능은 기술 프리뷰입니다. 따라서 이 기능은 지원되지 않으며 높은 가치의 배포에는 사용하지 않는 것이 좋습니다.--config- 구성 변경 사항이 게스트의 다음 재부팅에 적용됩니다. 하이퍼바이저에서 지원하는 경우--config및--live옵션 둘 다 함께 지정할 수 있습니다.--current- 구성 변경 사항이 게스트 가상 머신의 현재 상태에 적용됩니다. 실행 중인 게스트에서 사용되는 경우 종료 게스트에서 사용되는 경우--config역할을 합니다.--maximum- 다음 게스트 재부팅 시 핫플러그할 수 있는 최대 vCPU 제한을 설정합니다. 따라서--live옵션이 아닌--config옵션과 함께 사용해야 합니다.--guest- 핫 플러그 또는 핫 플러그 해제 대신 vCPU를 활성화하거나 비활성화하여 실행 중인 게스트에서 vCPU 수를 직접 수정합니다. 이 옵션은 gueet의 현재 vCPU 수보다 높은 수의개수와 함께 사용할 수 없으며, 게스트를 재부팅할 때--guest로 설정된 구성은 재설정됩니다.
예 14.4. vCPU 핫 플러그 및 핫 언플러그
virsh setvcpus guestVM1 2 --live
virsh setvcpus guestVM1 2 --live
--live 옵션에 표시된 대로 guestVM1이 실행되는 동안 수행됩니다.
virsh setvcpus guestVM1 1 --live
virsh setvcpus guestVM1 1 --live
14.13.7. 메모리 할당 구성 링크 복사링크가 클립보드에 복사되었습니다!
virsh setmem {domain-id or domain-name} count
# virsh setmem {domain-id or domain-name} count
virsh setmem vr-rhel6u1-x86_64-kvm --kilobytes 1025000
# virsh setmem vr-rhel6u1-x86_64-kvm --kilobytes 1025000
로 지정해야 합니다. 새 개수 값은 게스트 가상 머신을 생성할 때 지정한 양을 초과할 수 없습니다. 64MB보다 낮은 값은 대부분의 게스트 가상 머신 운영 체제에서는 작동하지 않습니다. 최대 메모리 값이 활성 게스트 가상 머신에는 영향을 미치지 않습니다. 새 값이 사용 가능한 메모리보다 작으면 게스트 가상 머신이 충돌하게 될 수 있습니다.
- [--domain] <string> 도메인 이름, ID 또는 uuid
- [-size] <number> 새 메모리 크기, 크기 조정된 정수(기본값 KiB)유효한 메모리 단위는 다음과 같습니다.
바이트의b또는 바이트KBfor kilobytes (10 또는 1,000 바이트 블록)kibibytes의 경우 kibibytes 1024바이트의 K 또는KiBMBfor megabytes (106 또는 1,000,000 바이트 블록)- 메비바이트의 경우 m 또는
MiB(20 또는 blocks 1,048,576 바이트) GBfor gigabytes (109 또는 1,000,000,000 바이트 블록)- 기비바이트의 경우
G또는GiB(230 또는 1,073,741,824 바이트) TBfor terabytes (1012 또는 1,000,000 바이트 블록)- tebibytes의 경우 t or
TiB(240 또는 1,099,511,627,776 바이트)
모든 값은 libvirt에서 가장 가까운 kibibyte로 반올림되며 하이퍼바이저에서 지원하는 단위로 더 반올림될 수 있습니다. 일부 하이퍼바이저는 또한 4000KiB(또는 4000 x 210 또는 4,096,000바이트)와 같은 최소 용량을 적용합니다. 이 값의 단위는 선택적 특성메모리 단위에 따라 결정됩니다. 기본값은 kibibytes(KiB) 단위로 지정된 값이 1024바이트의 2개 또는 블록으로 곱한 단위입니다. - --config가 다음 부팅에 영향을 미칩니다.
- --live는 실행 중인 도메인의 메모리를 제어합니다.
- --current가 현재 도메인의 메모리를 제어합니다.
14.13.8. 도메인의 메모리 할당 변경 링크 복사링크가 클립보드에 복사되었습니다!
--config --live --current 를 사용하면 다음과 같이 게스트 가상 머신에 대한 최대 메모리 할당을 설정할 수 있습니다.
virsh setmaxmem rhel6 1024 --current
virsh setmaxmem rhel6 1024 --current
--config- 다음 부팅에 영향을 미칩니다.--live- 실행 중인 도메인의 메모리를 제어하고, 하이퍼바이저에서 모든 하이퍼바이저가 최대 메모리 제한을 실시간으로 변경할 수 있는 것은 아니므로 이 작업을 지원합니다.--current- 현재 도메인에서 메모리를 제어합니다.
14.13.9. 게스트 가상 머신 블록 장치 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh domblkstat GuestName block-device
# virsh domblkstat GuestName block-device
14.13.10. 게스트 가상 머신 네트워크 장치 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
virsh domifstat GuestName interface-device
# virsh domifstat GuestName interface-device
14.14. 가상 네트워크 관리 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-list
# virsh net-list
virsh net-dumpxml NetworkName
# virsh net-dumpxml NetworkName
- virsh net-autostart network-name - network-name 으로 지정된 네트워크를 자동 시작합니다.
- virsh net-create XMLfile - 기존 XML 파일을 사용하여 새 네트워크를 생성하고 시작합니다.
- virsh net-define XMLfile - 시작하지 않고 기존 XML 파일에서 새 네트워크 장치를 생성합니다.
- virsh net-destroy network-name - network-name 으로 지정된 네트워크를 삭제합니다.
- virsh net-name networkUUID - 지정된 네트워크UUID 를 네트워크 이름으로 변환합니다.
- virsh net-uuid network-name - 지정된 network-name 을 네트워크 UUID로 변환합니다.
- virsh net-start nameOfInactiveNetwork - 비활성 네트워크를 시작합니다.
- virsh net-undefine nameOfInactiveNetwork - 비활성 네트워크의 정의를 제거합니다.
14.15. virsh를 사용하여 게스트 가상 머신 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
14.15.1. 인터페이스 명령 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 서비스를 사용하는 경우에만 지원됩니다.
<인터페이스> ) 내에서 이름별로 사용할 수 있지만 특정 게스트 구성 XML에 호스트 인터페이스를 연결해야 하는 요구 사항은 없습니다. 호스트 인터페이스에 대한 대부분의 명령은 도메인에 사용되는 명령과 유사하며 인터페이스의 이름을 지정하는 방법은 이름 또는 MAC 주소입니다. 그러나 iface 옵션에는 MAC 주소를 사용하는 것이 해당 주소가 고유한 경우에만 작동합니다(인터페이스와 브리지가 동일한 MAC 주소를 공유하는 경우 종종 해당 MAC 주소를 사용하면 모호한 오류로 인해 오류가 발생하고 대신 이름을 사용해야 합니다).
14.15.1.1. XML 파일을 통해 호스트 물리적 시스템 인터페이스 정의 및 시작 링크 복사링크가 클립보드에 복사되었습니다!
virsh iface-define iface.xml
virsh iface-define iface.xml
14.15.1.2. 호스트 인터페이스에 대한 XML 구성 파일 편집 링크 복사링크가 클립보드에 복사되었습니다!
14.15.1.3. 활성 호스트 인터페이스 나열 링크 복사링크가 클립보드에 복사되었습니다!
--inactive --all 은 활성 호스트 인터페이스 목록을 표시합니다. --all 이 지정되면 이 목록에 정의되었지만 비활성 상태인 인터페이스도 포함됩니다. --inactive 가 지정된 경우 비활성 인터페이스만 나열됩니다.
14.15.1.4. MAC 주소를 인터페이스 이름으로 변환 링크 복사링크가 클립보드에 복사되었습니다!
14.15.1.5. 특정 호스트 물리적 시스템 인터페이스 중지 링크 복사링크가 클립보드에 복사되었습니다!
14.15.1.6. 호스트 구성 파일 표시 링크 복사링크가 클립보드에 복사되었습니다!
--inactive 는 호스트 인터페이스 정보를 stdout에 XML 덤프로 표시합니다. --inactive 옵션을 지정하면 다음에 시작될 때 사용할 인터페이스의 영구 상태가 출력에 반영됩니다.
14.15.1.7. 브리지 장치 만들기 링크 복사링크가 클립보드에 복사되었습니다!
virsh iface-bridge interface bridge --no-stp delay --no-start
# virsh iface-bridge interface bridge --no-stp delay --no-start
14.15.1.8. 브리지 장치 삭제 링크 복사링크가 클립보드에 복사되었습니다!
--no-start 명령에서 bridge 라는 지정된 브릿지 장치를 종료하고 기본 인터페이스를 다시 일반 사용법으로 해제하고 모든 IP 주소 구성을 브리지 장치에서 기본 장치로 이동합니다. --no-start 옵션을 사용하지 않는 한 기본 인터페이스는 재시작되지만, 일반적으로 다시 시작하지 않는 것은 권장되지 않습니다. 브리지를 만드는 데 사용하는 명령은 14.15.1.7절. “브리지 장치 만들기” 를 참조하십시오.
14.15.1.9. 인터페이스 스냅샷 조작 링크 복사링크가 클립보드에 복사되었습니다!
14.15.2. 스냅샷 관리 링크 복사링크가 클립보드에 복사되었습니다!
14.15.2.1. 스냅샷 생성 링크 복사링크가 클립보드에 복사되었습니다!
snapshot-create <domain> <xmlfile> [--redefine] [--current] [--no-metadata] [--reuse-external]
# snapshot-create <domain> <xmlfile> [--redefine] [--current] [--no-metadata] [--reuse-external]
--redefine은 snapshot-dumpxml 에 의해 생성된 모든 XML 요소가 유효한 경우, 스냅샷 계층을 한 머신에서 다른 시스템으로 마이그레이션하는 데 사용할 수 있습니다. 임시 도메인의 경우 계층 구조를 다시 만들고 나중에 동일한 이름과 UUID로 다시 생성되거나 스냅샷 메타데이터(예: 스냅샷에 포함된 도메인 XML의 호스트별 측면)에서 약간의 변경을 수행하는 데 사용할 수 있습니다. 이 옵션을 제공하면 xmlfile 인수가 필수이며--current옵션도 제공되지 않는 한 도메인의 현재 스냅샷이 변경되지 않습니다.--no-metadata가 스냅샷을 생성하지만 메타데이터는 즉시 취소되지만(즉, libvirt는 현재 상태로 취급하지 않으며--redefine이 나중에 메타데이터에 대해 libvirt 를 다시 지시하는 데 사용되지 않는 한) 스냅샷으로 되돌릴 수 없습니다.--reuse-external, 사용하는 경우 이 옵션은 사용할 기존 외부 XML 스냅샷의 위치를 지정합니다. 기존 외부 스냅샷이 아직 없는 경우 기존 파일의 콘텐츠가 손실되지 않도록 명령을 실행하면 스냅샷을 생성하지 못합니다.
14.15.2.2. 현재 도메인의 스냅샷 생성 링크 복사링크가 클립보드에 복사되었습니다!
virsh snapshot-create-as domain {[--print-xml] | [--no-metadata] [--reuse-external]} [name] [description] [--diskspec] diskspec]
# virsh snapshot-create-as domain {[--print-xml] | [--no-metadata] [--reuse-external]} [name] [description] [--diskspec] diskspec]
--print-xml은 실제로 스냅샷을 생성하지 않고 스냅샷 생성에 적절한 XML을 생성합니다.--diskspec옵션을 사용하여--disk-only및 외부 체크포인트에서 외부 파일을 생성하는 방법을 제어할 수 있습니다. 이 옵션은 도메인 XML의 <disk> 요소 수에 따라 여러 번 발생할 수 있습니다. 각 <diskspec>은 디스크[,snapshot=type][,driver=type][,file=name] ) 형식으로 되어 있습니다. 리터럴 쉼표를 디스크 또는 file=name 에 포함하려면 두 번째 쉼표로 이스케이프합니다. 리터럴--diskspec은 <domain>, <name>, <description> 중 세 개가 모두 존재하지 않는 한 각 diskspec 앞에 있어야 합니다. 예를 들어 vda,snapshot=external,file=/path/to의 diskspec은 다음 XML로 생성 됩니다.<disk name=’vda’ snapshot=’external’> <source file=’/path/to,new’/> </disk>
<disk name=’vda’ snapshot=’external’> <source file=’/path/to,new’/> </disk>Copy to Clipboard Copied! Toggle word wrap Toggle overflow --reuse-external은 기존 파일을 대상으로 재사용합니다(이 파일을 덮어쓰는 참조). 이 대상이 존재하지 않는 경우 기존 파일의 콘텐츠가 손실되지 않도록 스냅샷 요청이 거부됩니다.--no-metadata는 스냅샷 데이터를 생성하지만 메타데이터는 즉시 삭제됩니다(즉, libvirt 는 현재 상태로 취급하지 않으며, 이후 메타데이터에 대해 libvirt에 대해 libvirt를 처리하는 데 사용 안 함)을 제외하고 스냅샷으로 되돌릴 수 없습니다. 이 옵션은--print-xml과 호환되지 않습니다.
14.15.2.3. 현재 도메인의 스냅샷 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
virsh snapshot-current domain {[--name] | [--security-info] | [snapshotname]}
# virsh snapshot-current domain {[--name] | [--security-info] | [snapshotname]}
snapshotname 을 사용하지 않으면 도메인의 현재 스냅샷(있는 경우)에 대한 스냅샷 XML이 출력으로 표시됩니다. --name 을 지정하면 전체 XML 대신 현재 스냅샷 이름만 출력으로 전송됩니다. --security-info 를 제공하면 민감한 보안 정보가 XML에 포함됩니다. libvirt 는 스냅샷 이름을 사용하여 기존 이름의 스냅샷이 현재 스냅샷이 되도록 하는 요청을 생성합니다.
14.15.2.4. snapshot-edit-domain 링크 복사링크가 클립보드에 복사되었습니다!
#virsh snapshot-edit domain [snapshotname] [--current] {[--rename] [--clone]}
#virsh snapshot-edit domain [snapshotname] [--current] {[--rename] [--clone]}
snapshotname 및 --current 가 모두 지정된 경우 편집된 스냅샷이 현재 스냅샷이 되도록 강제 적용합니다. snapshotname 을 생략하면 현재 스냅샷을 편집하려면 --current 를 제공해야 합니다.
virsh snapshot-dumpxml dom name > snapshot.xml vi snapshot.xml [note - this can be any editor] virsh snapshot-create dom snapshot.xml --redefine [--current]
# virsh snapshot-dumpxml dom name > snapshot.xml
# vi snapshot.xml [note - this can be any editor]
# virsh snapshot-create dom snapshot.xml --redefine [--current]
--rename 을 지정하면 결과 편집한 파일이 다른 파일 이름에 저장됩니다. --clone 을 지정하면 스냅샷 이름을 변경하면 스냅샷 메타데이터의 복제본이 생성됩니다. 둘 다 지정하지 않으면 편집에서 스냅샷 이름을 변경하지 않습니다. 단일 qcow2 파일 내의 내부 스냅샷과 같은 일부 스냅샷의 내용은 원본 스냅샷 파일 이름에서만 액세스할 수 있으므로 스냅샷 이름을 변경하는 작업은 주의해야 합니다.
14.15.2.5. snapshot-info-domain 링크 복사링크가 클립보드에 복사되었습니다!
snapshot-info domain {snapshot | --current}
# snapshot-info domain {snapshot | --current}
스냅샷 또는 --current 를 사용하여 현재 스냅샷에 대한 기본 정보를 출력합니다.
14.15.2.6. snapshot-list-domain 링크 복사링크가 클립보드에 복사되었습니다!
#virsh snapshot-list domain [{--parent | --roots | --tree}] [{[--from] snapshot | --current} [--descendants]] [--metadata] [--no-metadata] [--leaves] [--no-leaves] [--inactive] [--active] [--internal] [--external]
#virsh snapshot-list domain [{--parent | --roots | --tree}] [{[--from] snapshot | --current} [--descendants]] [--metadata] [--no-metadata] [--leaves] [--no-leaves] [--inactive] [--active] [--internal] [--external]
--parent는 각 스냅샷의 상위 이름을 제공하는 열을 출력 테이블에 추가합니다. 이 옵션은--roots또는--tree와 함께 사용할 수 없습니다.--roots는 목록을 필터링하여 부모가 없는 스냅샷만 표시합니다. 이 옵션은--parent또는--tree와 함께 사용할 수 없습니다.--tree는 스냅샷 이름만 나열하는 트리 형식으로 출력을 표시합니다. 이 세 가지 옵션은 함께 사용할 수 없습니다. 이 옵션은--roots또는--parent와 함께 사용할 수 없습니다.--from은 지정된 스냅샷의 하위 스냅샷으로 목록을 필터링하거나--current가 제공되는 경우 현재 스냅샷에서 목록이 시작됩니다. 격리 또는--parent와 함께 사용하면--descendants도 없는 한 목록은 직접 자식으로 제한됩니다.--tree와 함께 사용하면--descendants를 사용할 수 없습니다. 이 옵션은--roots와 호환되지 않습니다.--from또는--current의 시작점은--tree옵션이 없으면 목록에 포함되지 않습니다.--leaves가 지정되면 목록이 자식이 없는 스냅샷으로 필터링됩니다. 마찬가지로--no-leaves가 지정된 경우 목록이 하위 항목이 있는 스냅샷으로 필터링됩니다. (두 옵션을 모두 생략해도 필터링은 필터링되지 않지만 두 옵션을 제공하면 서버에서 옵션을 인식하는지 여부에 따라 동일한 목록 또는 오류가 생성됩니다.) 필터링 옵션은--tree와 호환되지 않습니다.--metadata가 지정되고, 이 목록은 libvirt 메타데이터와 관련된 스냅샷으로 필터링되므로 영구 도메인을 정의하지 않거나 일시적인 도메인 삭제 시 손실되지 않습니다. 마찬가지로--no-metadata가 지정된 경우 libvirt 메타데이터없이 존재하는 스냅샷으로만 목록이 필터링됩니다.--inactive가 지정되면 목록이 도메인이 종료될 때 수행된 스냅샷으로 필터링됩니다.--active가 지정된 경우, 도메인 실행 시 수행된 스냅샷으로 목록이 필터링되고 스냅샷에 해당 실행 상태로 되돌리는 메모리 상태가 포함됩니다.--disk-only가 지정된 경우 도메인을 실행할 때 가져온 스냅샷으로 목록이 필터링되지만 스냅샷에는 디스크 상태만 포함됩니다.--internal이 지정되면 기존 디스크 이미지의 내부 스토리지를 사용하는 스냅샷으로 목록이 필터링됩니다. --external을 지정하면 디스크 이미지 또는 메모리 상태에 외부 파일을 사용하는 스냅샷으로 목록이 필터링됩니다.
14.15.2.7. snapshot-dumpxml 도메인 스냅샷 링크 복사링크가 클립보드에 복사되었습니다!
virsh snapshot-dumpxml domain snapshot [--security-info]
# virsh snapshot-dumpxml domain snapshot [--security-info]
security-info 옵션에는 보안에 중요한 정보도 포함됩니다. snapshot-current 를 사용하여 현재 스냅샷의 XML에 쉽게 액세스할 수 있습니다.
14.15.2.8. snapshot-parent 도메인 링크 복사링크가 클립보드에 복사되었습니다!
--current 을 사용하여 현재 스냅샷에 대해 상위 스냅샷의 이름을 출력합니다. 사용하려면 다음을 실행합니다.
#virsh snapshot-parent domain {snapshot | --current}
#virsh snapshot-parent domain {snapshot | --current}
14.15.2.9. snapshot-revert 도메인 링크 복사링크가 클립보드에 복사되었습니다!
--current 을 사용하여 현재 스냅샷으로 되돌립니다.
snapshot-revert 가 완료된 후의 도메인 상태가 됩니다.
snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
# snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
--running 또는 --paused 옵션을 전달하면 비활성 도메인 부팅 또는 실행 중인 도메인 일시 중지와 같은 추가 상태 변경 사항이 수행됩니다. 임시 도메인은 비활성화할 수 없으므로 임시 도메인의 디스크 스냅샷으로 되돌릴 때 이러한 옵션 중 하나를 사용해야 합니다.
--force 를 사용하여 진행해야 하는 추가 위험이 있는 두 가지 경우가 있습니다. 하나는 구성을 되돌리기 위한 전체 도메인 정보가 없는 스냅샷입니다. libvirt 는 현재 구성의 스냅샷에서 사용 중인 구성과 일치한다는 것을 증명할 수 없으므로 --force 는 스냅샷이 현재 구성과 호환되는지 확인(및 그렇지 않으면 도메인이 실행되지 않을 가능성이 큽니다). 다른 하나는 실행 중인 도메인에서 기존 VNC 또는 Spice 연결 중단과 같은 단점을 의미하는 대신 기존 하이퍼바이저를 재사용하는 대신 새 하이퍼바이저를 생성해야 하는 활성 상태로 되돌리는 경우입니다. 이 조건은 매개 변수가 호환되지 않는 구성과 함께 결합된 비활성 스냅샷과 함께 --start 또는 --pause 옵션과 결합된 비활성 스냅샷과 함께 발생합니다.
14.15.2.10. snapshot-delete 도메인 링크 복사링크가 클립보드에 복사되었습니다!
virsh snapshot-delete domain {snapshot | --current} [--metadata] [{--children | --children-only}]
# virsh snapshot-delete domain {snapshot | --current} [--metadata] [{--children | --children-only}]
--current 을 사용하여 현재 스냅샷을 삭제합니다. 이 스냅샷에 하위 스냅샷이 있는 경우 이 스냅샷의 변경 사항이 하위 스냅샷으로 병합됩니다. --children 옵션을 사용하면 이 스냅샷과 이 스냅샷의 하위 항목이 삭제됩니다. --children-only 를 사용하는 경우 이 스냅샷은 이 스냅샷의 하위 항목을 삭제하지만 이 스냅샷을 그대로 유지합니다. 이 두 옵션은 함께 사용할 수 없습니다.
--metadata 를 사용하면 libvirt 에서 유지 관리하는 스냅샷의 메타데이터가 삭제되고, 외부 툴에서 액세스할 수 있도록 스냅샷 내용은 그대로 유지됩니다. 그러지 않으면 스냅샷을 삭제하면 해당 시점에서 해당 데이터 콘텐츠도 제거됩니다.
14.16. 게스트 가상 머신 CPU 모델 구성 링크 복사링크가 클립보드에 복사되었습니다!
14.16.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
qemu32 또는 qemu64 라는 일반 모델을 제공합니다. 이러한 하이퍼바이저는 고급 필터링을 수행하여 모든 물리적 CPU를 몇 개의 그룹으로 분류하고 게스트 가상 머신에 제공되는 각 그룹에 대해 하나의 기본 CPU 모델을 갖습니다. 이러한 동작을 통해 호스트 물리적 시스템 간에 게스트 가상 시스템을 안전하게 마이그레이션할 수 있습니다. 이 경우 모두 동일한 그룹으로 분류되는 물리적 CPU가 있습니다. libvirt는 일반적으로 정책 자체를 적용하지 않고 상위 계층이 원하는 정책을 정의하는 메커니즘을 제공합니다. CPU 모델 정보를 얻고 적절한 게스트 가상 머신 CPU 모델을 정의하는 방법을 이해하는 것은 호스트 물리적 시스템 간에 게스트 가상 시스템 마이그레이션을 성공적으로 마이그레이션하는 데 중요합니다. 하이퍼바이저는 하이퍼바이저가 릴리스된 후 생성된 기능 및 기능만 에뮬레이션할 수 있습니다.
14.16.2. 호스트 물리적 시스템 CPU 모델에 대해 알아보기 링크 복사링크가 클립보드에 복사되었습니다!
14.16.3. 호스트 물리적 머신 풀을 지원할 수 있는 호환되는 CPU 모델 확인 링크 복사링크가 클립보드에 복사되었습니다!
그림 14.3. 호스트 물리적 시스템의 CPU 모델 정보 가져오기
그림 14.4. 임의의 서버에서 CPU 설명 생성
virsh-caps- workstation-cpu-only.xml 이라는 파일에 저장되었으며 virsh cpu-compare 명령은 이 파일에서 실행할 수 있습니다.
virsh cpu-compare virsh-caps-workstation-cpu-only.xml Host physical machine CPU is a superset of CPU described in virsh-caps-workstation-cpu-only.xml
# virsh cpu-compare virsh-caps-workstation-cpu-only.xml
Host physical machine CPU is a superset of CPU described in virsh-caps-workstation-cpu-only.xml
both-cpus.xml 에서 virsh cpu-baseline 명령을 실행합니다. # virsh cpu-baseline both-cpus.xml 을 실행하면 다음과 같은 결과가 나타납니다.
그림 14.5. 복합 CPU 기준
14.17. 게스트 가상 머신 CPU 모델 구성 링크 복사링크가 클립보드에 복사되었습니다!
match 속성이 있습니다.
- match='minimum' - 호스트 물리적 머신 CPU에는 게스트 가상 머신 XML에 설명된 CPU 기능이 최소한 있어야 합니다. 호스트 물리적 시스템에 게스트 가상 머신 구성 이외의 추가 기능이 있는 경우 게스트 가상 머신에도 노출됩니다.
- match='exact' - 호스트 물리적 머신 CPU에는 게스트 가상 머신 XML에 설명된 CPU 기능이 있어야 합니다. 호스트 물리적 시스템에 게스트 가상 머신 구성 이외의 추가 기능이 있는 경우 게스트 가상 시스템에서 마스킹됩니다.
- match='strict' - 호스트 물리적 머신 CPU에는 게스트 가상 머신 XML에 설명된 것과 동일한 CPU 기능이 있어야 합니다.
- policy='force' - 호스트 물리적 시스템에 없는 경우에도 해당 기능을 게스트 가상 시스템에 노출합니다. 이는 일반적으로 소프트웨어 에뮬레이션의 경우에만 유용합니다.
- policy='require' - 이 기능을 게스트 가상 시스템에 노출하고 호스트 물리적 시스템에 없는 경우 실패합니다. 이는 민감한 기본값입니다.
- policy='optional' - 기능을 지원하는 경우 게스트 가상 머신에 기능을 노출합니다.
- policy='disable' - 호스트 물리적 시스템에 이 기능이 있는 경우 게스트 가상 시스템에서 숨겨집니다.
- policy='forbid' - 호스트 물리적 시스템에 이 기능이 있는 경우 실패하고 게스트 가상 머신 시작을 거부합니다.
14.18. 게스트 가상 머신용 리소스 관리 링크 복사링크가 클립보드에 복사되었습니다!
- 메모리 - 메모리 컨트롤러에서 RAM 및 스왑 사용에 대한 제한을 설정하고 그룹에 있는 모든 프로세스의 누적 사용량을 쿼리할 수 있습니다.
- cpuset - CPU 세트 컨트롤러는 그룹 내의 프로세스를 CPU 집합에 바인딩하고 CPU 간 마이그레이션을 제어합니다.
- cpuacct - CPU 계정 컨트롤러는 프로세스 그룹의 CPU 사용량에 대한 정보를 제공합니다.
- CPU - CPU 스케줄러 컨트롤러는 그룹에서 프로세스의 우선 순위를 제어합니다. 이는 nice 수준 권한을 부여하는 것과 유사합니다.
- 장치 - 장치 컨트롤러는 문자 및 블록 장치에 대한 액세스 제어 목록을 부여합니다.
- freezer - freezer 컨트롤러가 일시 중지되고 그룹의 프로세스 실행을 재개합니다. 이는 전체 그룹의 경우 SIGSTOP 와 유사합니다.
- net_cls - 프로세스를 tc 네트워크 클래스와 연결하여 네트워크 클래스를 관리합니다.
/etc/fstab 에 추가하는 것보다 더 복잡해집니다. 디렉터리 계층 구조를 설정하고 프로세스가 그 안에 배치되는 방식을 결정해야 합니다. 이 작업은 다음 virsh 명령으로 수행할 수 있습니다.
- schedinfo - 설명 14.19절. “일정 매개변수 설정”
- blkiotune- 설명 14.20절. “블록 I/O 매개 변수 표시 또는 설정”
- domiftune- 설명 14.5.9절. “네트워크 인터페이스 대역폭 매개 변수 설정”
- memtune - 설명 14.21절. “메모리 튜닝 구성”
14.19. 일정 매개변수 설정 링크 복사링크가 클립보드에 복사되었습니다!
#virsh schedinfo domain --set --weight --cap --current --config --live
#virsh schedinfo domain --set --weight --cap --current --config --live
- domain - 게스트 가상 머신 도메인입니다.
--set- 여기에 배치된 문자열은 호출할 컨트롤러 또는 작업입니다. 필요한 경우 추가 매개변수 또는 값도 추가해야 합니다.--current---set과 함께 사용하면 지정된 set 문자열을 현재 스케줄러 정보로 사용합니다. 없이 사용하면 현재 스케줄러 정보가 표시됩니다.--config- - -set과 함께 사용하면 다음 재부팅 시 지정된 set 문자열이 사용됩니다. 없이 사용하면 구성 파일에 저장된 스케줄러 정보가 표시됩니다.--live---set과 함께 사용하면 현재 실행 중인 게스트 가상 머신에서 지정된 set 문자열을 사용합니다. without를 사용하면 실행 중인 가상 머신에서 현재 사용되는 구성 설정이 표시됩니다.
cpu_shares,vcpu_period 및 vcpu_quota 매개 변수를 사용하여 설정할 수 있습니다.
예 14.5. schedinfo show
예 14.6. schedinfo set
14.20. 블록 I/O 매개 변수 표시 또는 설정 링크 복사링크가 클립보드에 복사되었습니다!
virsh blkiotune domain [--weight weight] [--device-weights device-weights] [[--config] [--live] | [--current]]
# virsh blkiotune domain [--weight weight] [--device-weights device-weights] [[--config] [--live] | [--current]]
14.21. 메모리 튜닝 구성 링크 복사링크가 클립보드에 복사되었습니다!
14.22. 가상 네트워킹 명령 링크 복사링크가 클립보드에 복사되었습니다!
14.22.1. 가상 네트워크 자동 시작 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-autostart network [--disable]
# virsh net-autostart network [--disable]
--disable 옵션을 허용합니다.
14.22.2. XML 파일에서 가상 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-create file
# virsh net-create file
14.22.3. XML 파일에서 가상 네트워크 정의 링크 복사링크가 클립보드에 복사되었습니다!
net-define file
# net-define file
14.22.4. 가상 네트워크 중지 링크 복사링크가 클립보드에 복사되었습니다!
net-destroy network
# net-destroy network
14.22.5. 덤프 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
--inactive 가 지정된 경우 물리적 기능은 연결된 가상 기능으로 확장되지 않습니다. 덤프 파일을 생성하려면 다음을 실행합니다.
virsh net-dumpxml network [--inactive]
# virsh net-dumpxml network [--inactive]
14.22.6. 가상 네트워크의 XML 구성 파일 편집 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-edit network
# virsh net-edit network
14.22.7. 가상 네트워크에 대한 정보 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-info network
# virsh net-info network
14.22.8. 가상 네트워크에 대한 정보 나열 링크 복사링크가 클립보드에 복사되었습니다!
--all 이 이 값을 지정하면 비활성 네트워크만 나열되는 경우 --inactive 가 지정되지 않은 네트워크도 포함됩니다. 또한 반환된 네트워크를 --persistent 에서 필터링하여 관련 네트워크를 나열하고, 임시 네트워크를 나열하는 --transient 를 사용하여 autostart가 활성화된 것을 나열하는 --autostart 및 --no-autostart 를 사용하여 autostart가 비활성화된 네트워크를 나열할 수도 있습니다.
net-list [--inactive | --all] [--persistent] [<--transient>] [--autostart] [<--no-autostart>]
# net-list [--inactive | --all] [--persistent] [<--transient>] [--autostart] [<--no-autostart>]
14.22.9. 네트워크 UUID를 네트워크 이름으로 변환 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-name network-UUID
# virsh net-name network-UUID
14.22.10. (Previous Defined Network) Inactive Network를 시작 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-start network
# virsh net-start network
14.22.11. Inactive Network 구성 정의 해제 링크 복사링크가 클립보드에 복사되었습니다!
net-undefine network
# net-undefine network
14.22.12. 네트워크 이름을 네트워크 UUID로 변환 링크 복사링크가 클립보드에 복사되었습니다!
virsh net-uuid network-name
# virsh net-uuid network-name
14.22.13. 기존 네트워크 정의 파일 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
<ip> 요소 내에 <dhcp> 요소에 포함된 <호스트> 요소를 변경합니다. xml는 변경 중인 유형의 완전한 xml 요소의 텍스트입니다(예: "<host mac="00:11:11:22:33:44:55"의 ip='192.0.2.1'/> 또는 파일이 포함된 파일 이름. disambiguation은 제공된 텍스트의 첫 번째 문자를 보면 첫 번째 문자가 "<"인 경우 첫 문자가 ">"가 아닌 경우 사용할 xml 텍스트가 포함된 파일의 이름입니다. parent-index 옵션은 요청된 요소가 (0부터 시작)되는 여러 개의 부모 요소 중 어느 것을 지정하는 데 사용됩니다. 예를 들어 <dhcp> <host> 요소는 네트워크의 여러 < <ip> > 요소 중 하나일 수 있습니다. parent-index가 제공되지 않으면 "가장 적절한" IP 요소가 선택되지만 --parent-index가 지정된 경우 <ip> 의 특정 인스턴스가 수정됩니다. --live 가 지정된 경우 실행 중인 네트워크에 영향을 미칩니다. --config 를 지정하면 영구 네트워크의 다음 시작에 영향을 미칩니다. current 를 지정하면 현재 네트워크 상태에 영향을 미칩니다. --live 및 --config 옵션 모두 제공될 수 있지만 --current는 독점적입니다. 옵션을 지정하지 않는 것은 --current 를 지정하는 것과 동일합니다.
virsh net-update network command section xml [--parent-index index] [[--live] [--config] | [--current]]
# virsh net-update network command section xml [--parent-index index] [[--live] [--config] | [--current]]
15장. Virtual Machine Manager(virt-manager)를 사용하여 게스트 관리 링크 복사링크가 클립보드에 복사되었습니다!
- 게스트 정의 및 생성,
- 메모리 할당,
- 가상 CPU 할당
- 운영 성능 모니터링
- 저장 및 복원, 일시 중지 및 다시 시작, 게스트 종료 및 시작,
- 텍스트 및 그래픽 콘솔에 대한 링크, 및
- 실시간 및 오프라인 마이그레이션.
15.1. virt-manager 시작 링크 복사링크가 클립보드에 복사되었습니다!
그림 15.1. virt-manager시작
ssh -X host's address [remotehost]# virt-manager
ssh -X host's address
[remotehost]# virt-manager
15.2. 가상 머신 관리자의 메인 창 링크 복사링크가 클립보드에 복사되었습니다!
그림 15.2. 가상 머신 관리자 메인 창
15.3. 가상 하드웨어 세부 정보 창 링크 복사링크가 클립보드에 복사되었습니다!
그림 15.3. 가상 하드웨어 세부 정보 아이콘
그림 15.4. 가상 하드웨어 세부 정보 창
15.3.1. 게스트 가상 머신에 USB 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
절차 15.1. Virt-Manager를 사용하여 USB 장치 연결
- 게스트 가상 머신의 가상 머신 세부 정보 화면을 엽니다.
- 클릭합니다.
그림 15.5. 하드웨어 버튼 추가
- (새 가상 하드웨어 추가) 팝업에서 를 선택하고 목록에서 연결할 장치를 선택하고 를 클릭합니다.
그림 15.6. USB 장치 추가
- 게스트 가상 머신에서 USB 장치를 사용하려면 게스트 가상 머신을 시작합니다.
15.4. 가상 머신 그래픽 콘솔 링크 복사링크가 클립보드에 복사되었습니다!
그림 15.7. 그래픽 콘솔 창
127.0.0.1)만 수신 대기합니다. 이렇게 하면 호스트의 쉘 권한이 있는 사용자만 VNC를 통해 virt-manager 및 가상 머신에 액세스할 수 있습니다. virt-manager가 다른 공용 네트워크 인터페이스와 대체 방법을 청취하도록 구성되어 있지만 구성하는 것은 권장되지 않습니다.
15.5. 원격 연결 추가 링크 복사링크가 클립보드에 복사되었습니다!
- 새 연결을 만들려면 파일 메뉴를 열고 연결 추가... 메뉴 항목을 선택합니다.
- 연결 추가 마법사가 나타납니다. 하이퍼바이저를 선택합니다. Red Hat Enterprise Linux 6 시스템의 경우 QEMU/KVM 을 선택합니다. 로컬 시스템에 대해 Local을 선택하거나 원격 연결 옵션 중 하나를 선택하고 연결을 클릭합니다. 이 예에서는 기본 설치에서 작동하는 SSH를 통한 원격 터널을 사용합니다. 원격 연결 구성에 대한 자세한 내용은 다음을 참조하십시오. 5장. 원격 게스트 관리
그림 15.8. 연결 추가
- 메시지가 표시되면 선택한 호스트의 루트 암호를 입력합니다.
그림 15.9. 기본 virt-manager 창에 있는 원격 호스트
15.6. 게스트 세부 정보 표시 링크 복사링크가 클립보드에 복사되었습니다!
- Virtual Machine Manager 메인 창에서 보려는 가상 머신을 강조 표시합니다.
그림 15.10. 표시할 가상 머신 선택
- 가상 머신 관리자 편집 메뉴에서 가상 머신 세부 정보를 선택합니다.가상 머신 세부 정보 창이 열리면 콘솔이 표시될 수 있습니다. 이러한 상황이 발생하면 보기를 클릭한 다음 세부 정보를 선택합니다. 기본적으로 개요 창이 먼저 열립니다. 이 창으로 돌아가려면 왼쪽 탐색 창에서 개요 를 선택합니다.개요 보기에는 게스트에 대한 구성 세부 정보가 요약되어 있습니다.
그림 15.12. 게스트 세부 정보 표시 개요
- 왼쪽의 탐색 창에서 Performance 를 선택합니다.성능 보기에는 CPU 및 메모리 사용량을 포함하여 게스트 성능에 대한 요약이 표시됩니다.
그림 15.13. 게스트 성능 세부 정보 표시
- 왼쪽의 탐색 창에서 Processor 를 선택합니다. 프로세서 뷰를 사용하면 현재 프로세서 할당을 보고 변경할 수 있습니다.또한 가상 머신이 실행되는 동안 vCPU(가상 CPU) 수를 변경할 수 있습니다. 이 수는 핫플러그 및 핫 플러그 연결 이라고 합니다.중요핫 플러그 해제 기능은 기술 프리뷰로만 사용할 수 있습니다. 따라서 이 기능은 지원되지 않으며 높은 가치의 배포에는 사용하지 않는 것이 좋습니다.
그림 15.14. 프로세서 할당 패널
- 왼쪽의 탐색 창에서 메모리 를 선택합니다. 메모리 보기를 사용하면 현재 메모리 할당을 보거나 변경할 수 있습니다.
그림 15.15. 메모리 할당 표시
- 가상 머신에 연결된 각 가상 디스크가 탐색 창에 표시됩니다. 가상 디스크를 클릭하여 수정하거나 제거합니다.
그림 15.16. 디스크 구성 표시
- 가상 머신에 연결된 각 가상 네트워크 인터페이스가 탐색 창에 표시됩니다. 가상 네트워크 인터페이스를 클릭하여 수정하거나 제거합니다.
그림 15.17. 네트워크 구성 표시
15.7. 성능 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
- 편집 메뉴에서 환경 설정을 선택합니다.
그림 15.18. 게스트 기본 설정 수정
Preference 창이 나타납니다. - Stats 탭에서는 시간(초) 또는 통계 폴링 옵션을 지정합니다.
그림 15.19. 성능 모니터링 구성
15.8. 게스트의 CPU 사용량 표시 링크 복사링크가 클립보드에 복사되었습니다!
- 보기 메뉴에서 그래프 를 선택하고 Guest CPU Usage (게스트 CPU 사용량) 확인란을 선택합니다.
그림 15.20. 게스트 CPU 사용량 통계 그래프 활성화
- 가상 머신 관리자는 시스템의 모든 가상 머신에 대한 CPU 사용량 그래프를 보여줍니다.
그림 15.21. 게스트 CPU 사용량 그래프
15.9. 호스트의 CPU 사용량 표시 링크 복사링크가 클립보드에 복사되었습니다!
- View (보기) 메뉴에서 Graph, Host CPU Usage (호스트 CPU 사용량) 확인란을 선택합니다.
그림 15.22. 호스트 CPU 사용량 통계 그래프 활성화
- 가상 머신 관리자는 시스템의 호스트 CPU 사용량 그래프를 보여줍니다.
그림 15.23. 호스트 CPU 사용량 그래프
15.10. 디스크 I/O 표시 링크 복사링크가 클립보드에 복사되었습니다!
- 디스크 I/O 통계 컬렉션이 활성화되어 있는지 확인합니다. 이렇게 하려면 편집 메뉴에서 환경 설정을 선택하고 통계탭을 클릭합니다.
- 디스크 I/O 확인란을 선택합니다.
그림 15.24. 디스크 I/O 활성화
- 디스크 I.O 디스플레이를 활성화하려면 View 메뉴에서 Graph, then Disk I/O 확인란을 선택합니다.
그림 15.25. 디스크 I/O 선택
- 가상 머신 관리자는 시스템의 모든 가상 머신에 대한 디스크 I/O 그래프를 보여줍니다.
그림 15.26. 디스크 I/O 표시
15.11. 네트워크 I/O 표시 링크 복사링크가 클립보드에 복사되었습니다!
- 네트워크 I/O 통계 컬렉션이 활성화되어 있는지 확인합니다. 이렇게 하려면 편집 메뉴에서 환경 설정을 선택하고 통계탭을 클릭합니다.
- Network I/O 확인란을 선택합니다.
그림 15.27. 네트워크 I/O 활성화
- 네트워크 I/O 통계를 표시하려면 보기 메뉴에서 그래프, 네트워크 I/O 확인란을 선택합니다.
그림 15.28. 네트워크 I/O 선택
- 가상 머신 관리자는 시스템의 모든 가상 머신에 대한 네트워크 I/O 그래프를 보여줍니다.
그림 15.29. 네트워크 I/O 표시
16장. 오프라인 툴을 사용한 게스트 가상 머신 디스크 액세스 링크 복사링크가 클립보드에 복사되었습니다!
16.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
- 호스트 물리적 머신 디스크에 있는 파일 보기 또는 다운로드.
- 호스트 물리적 머신 디스크에 파일을 편집하거나 업로드합니다.
- 호스트 물리적 시스템 설정 읽기 또는 쓰기.
- Windows 호스트 물리적 시스템에서 Windows 레지스트리 읽기 또는 쓰기.
- 파일, 디렉토리, 파일 시스템, 파티션, 논리 볼륨 및 기타 옵션이 포함된 새 디스크 이미지 준비
- 부팅하지 못한 호스트 물리적 시스템 또는 부팅 구성을 변경해야 하는 호스트 물리적 시스템을 복구 및 복구합니다.
- 호스트 물리적 시스템의 디스크 사용량 모니터링.
- 조직의 보안 표준과 같이 호스트 물리적 시스템의 규정 준수 감사.
- 템플릿을 복제 및 수정하여 호스트 물리적 시스템 배포.
- CD 및 DVD ISO 및 플로피 디스크 이미지를 읽습니다.
virt-df -c qemu://remote/system -d Guest
virt-df -c qemu://remote/system -d Guest
- guestfish
- 게스트mount
- virt-alignment-scan
- virt-cat
- virt-copy-in
- virt-copy-out
- virt-df
- virt-edit
- virt-filesystems
- virt-inspector
- virt-inspector2
- virt-list-filesystems
- virt-list-partitions
- virt-ls
- virt-rescue
- virt-sysprep
- virt-tar
- virt-tar-in
- virt-tar-out
- virt-win-reg
16.2. 용어 링크 복사링크가 클립보드에 복사되었습니다!
- libguestfs(Guest 파일 시스템 라이브러리) - 디스크 이미지를 열고 파일을 읽고 쓰는 기본 기능을 제공하는 기본 C 라이브러리입니다. 이 API에 C 프로그램을 직접 작성할 수 있지만 수준이 매우 낮습니다.
- Guestfish(Guest 파일 시스템 대화형 쉘) 는 명령줄 또는 쉘 스크립트에서 사용할 수 있는 대화형 쉘입니다. libguestfs API의 모든 기능을 노출합니다.
- 다양한 virt 툴은 libguestfs 위에 구축되며, 이를 통해 명령줄에서 특정 단일 작업을 수행할 수 있습니다. 툴에는 virt-df,virt-rescue,virt-resize 및 virt-edit 가 포함됩니다.
- Hivex 및 Augeas 는 각각 Windows 레지스트리 및 Linux 구성 파일을 편집하기 위한 라이브러리입니다. libguestfs와 분리되어 있지만 대부분의 libguestfs 값은 이러한 도구의 조합에서 비롯됩니다.
- guestmount 는 libguestfs와 FUSE 간의 인터페이스입니다. 호스트 물리적 시스템의 디스크 이미지에서 파일 시스템을 마운트하는 데 주로 사용됩니다. 이 기능은 필요하지 않지만 유용할 수 있습니다.
16.3. 설치 링크 복사링크가 클립보드에 복사되었습니다!
yum install libguestfs guestfish libguestfs-tools libguestfs-winsupport
# yum install libguestfs guestfish libguestfs-tools libguestfs-winsupport
yum install '*guestf*'
# yum install '*guestf*'
16.4. Guestmet 쉘 링크 복사링크가 클립보드에 복사되었습니다!
guestfish --ro -a /path/to/disk/image
guestfish --ro -a /path/to/disk/image
16.4.1. fish로 파일 시스템 보기 링크 복사링크가 클립보드에 복사되었습니다!
16.4.1.1. 수동 목록 및 보기 링크 복사링크가 클립보드에 복사되었습니다!
><fs> run ><fs> list-filesystems /dev/vda1: ntfs /dev/vda2: ntfs
><fs> run
><fs> list-filesystems
/dev/vda1: ntfs
/dev/vda2: ntfs
/dev/vda2)에 표시된 Windows 파티션 중 하나를 사용합니다. 이 경우 C:\ 드라이브에 해당하는 것으로 알려져 있습니다.
16.4.1.2. inspection 사용 링크 복사링크가 클립보드에 복사되었습니다!
16.4.1.3. 이름으로 게스트 가상 머신에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
guestfish --ro -d GuestName -i
guestfish --ro -d GuestName -i
16.4.2. fish를 사용하여 파일 수정 링크 복사링크가 클립보드에 복사되었습니다!
/boot/grub/grub.conf 파일을 편집하는 예를 제공합니다. 게스트 가상 머신이 종료되었는지 확인하는 경우 다음과 같은 명령을 통해 쓰기 액세스 권한을 얻으려면 --ro 옵션을 생략할 수 있습니다.
16.4.3. fish를 사용한 기타 작업 링크 복사링크가 클립보드에 복사되었습니다!
16.4.4. fish를 사용한 쉘 스크립트 링크 복사링크가 클립보드에 복사되었습니다!
16.4.5. Augeas 및 libguestfs 스크립팅 링크 복사링크가 클립보드에 복사되었습니다!
- 두 번째 예제에서는 --ro 옵션이 제거되어 게스트 가상 머신에 쓸 수 있는 기능이 제공되었습니다.
- aug-get 명령이 값을 가져오는 대신 수정하도록 aug-set 로 변경되었습니다. 새 값은 "gb"( quotes 포함)입니다.
- 여기에서 aug-save 명령이 사용되므로 Augeas는 변경 사항을 디스크에 씁니다.
guestfish -N fs
guestfish -N fs
><fs> copy-out /home /tmp/home
><fs> copy-out /home /tmp/home
16.5. 기타 명령 링크 복사링크가 클립보드에 복사되었습니다!
- virt-cat 은fish 다운로드 명령과 유사합니다. 단일 파일을 다운로드하여 게스트 가상 머신에 표시합니다. 예를 들어 다음과 같습니다.
virt-cat RHEL3 /etc/ntp.conf | grep ^server server 127.127.1.0 # local clock
# virt-cat RHEL3 /etc/ntp.conf | grep ^server server 127.127.1.0 # local clockCopy to Clipboard Copied! Toggle word wrap Toggle overflow - virt-edit 은fish edit 명령과 유사합니다. 게스트 가상 시스템에서 단일 파일을 대화형으로 편집하는 데 사용할 수 있습니다. 예를 들어 부팅하지 않는 Linux 기반 게스트 가상 머신에서
grub.conf파일을 편집해야 할 수 있습니다.virt-edit LinuxGuest /boot/grub/grub.conf
# virt-edit LinuxGuest /boot/grub/grub.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow virt-edit 에는 단일 파일에 대한 간단한 비대화형 변경을 수행하는 데 사용할 수 있는 다른 모드가 있습니다. 이를 위해 -e 옵션이 사용됩니다. 예를 들어 이 명령은 Linux 게스트 가상 머신의 root 암호를 암호가 없도록 변경합니다.virt-edit LinuxGuest /etc/passwd -e 's/^root:.*?:/root::/'
# virt-edit LinuxGuest /etc/passwd -e 's/^root:.*?:/root::/'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - virt-ls 는 6.7 ls,ll 및 find 명령과 유사합니다. 디렉토리 또는 디렉터리를 나열하는 데 사용됩니다(리브적으로). 예를 들어 다음 명령은 Linux 게스트 가상 머신에서 /home 아래에 파일 및 디렉토리를 재귀적으로 나열합니다.
virt-ls -R LinuxGuest /home/ | less
# virt-ls -R LinuxGuest /home/ | lessCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.6. virt-rescue: 구조 쉘 링크 복사링크가 클립보드에 복사되었습니다!
16.6.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
16.6.2. virt-rescue 실행 링크 복사링크가 클립보드에 복사되었습니다!
virt-rescue GuestName
virt-rescue GuestName
virt-rescue /path/to/disk/image
virt-rescue /path/to/disk/image
><rescue> fdisk -l /dev/vda
><rescue> fdisk -l /dev/vda
/sysroot 아래에 마운트하는 것이 좋습니다. / 아래의 파일은 복구 VM 자체의 파일입니다.
- --ro: 게스트 가상 머신의 읽기 전용 모드로 Operate. 변경 사항은 저장되지 않습니다. 이를 사용하여 게스트 가상 머신을 실험할 수 있습니다. 쉘을 종료하는 즉시 모든 변경 사항이 삭제됩니다.
- --network: rescue 쉘에서 네트워크 액세스를 활성화합니다. 필요한 경우 RPM 또는 기타 파일을 게스트 가상 시스템으로 다운로드합니다.
16.7. virt-df: 디스크 사용량 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
16.7.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
16.7.2. virt-df 실행 링크 복사링크가 클립보드에 복사되었습니다!
virt-df /dev/vg_guests/RHEL6 Filesystem 1K-blocks Used Available Use% RHEL6:/dev/sda1 101086 10233 85634 11% RHEL6:/dev/VolGroup00/LogVol00 7127864 2272744 4493036 32%
# virt-df /dev/vg_guests/RHEL6
Filesystem 1K-blocks Used Available Use%
RHEL6:/dev/sda1 101086 10233 85634 11%
RHEL6:/dev/VolGroup00/LogVol00 7127864 2272744 4493036 32%
/dev/vg_guests/RHEL6 은 Red Hat Enterprise Linux 6 게스트 가상 머신 디스크 이미지입니다. 이 경우 경로는 이 디스크 이미지가 있는 호스트 물리적 시스템 논리 볼륨입니다.)
virt-df --csv WindowsGuest Virtual Machine,Filesystem,1K-blocks,Used,Available,Use% Win7x32,/dev/sda1,102396,24712,77684,24.1% Win7x32,/dev/sda2,20866940,7786652,13080288,37.3%
# virt-df --csv WindowsGuest
Virtual Machine,Filesystem,1K-blocks,Used,Available,Use%
Win7x32,/dev/sda1,102396,24712,77684,24.1%
Win7x32,/dev/sda2,20866940,7786652,13080288,37.3%
16.8. virt-resize: 게스트 가상 머신 오프라인 복원 링크 복사링크가 클립보드에 복사되었습니다!
16.8.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
16.8.2. 디스크 이미지 확장 링크 복사링크가 클립보드에 복사되었습니다!
- 크기를 조정할 디스크 이미지를 찾습니다. libvirt 게스트 가상 머신에 virsh dumpxml GuestName 명령을 사용할 수 있습니다.
- guest 가상 머신을 확장하는 방법을 결정합니다. 다음 출력에 표시된 대로 게스트 가상 머신 디스크에서 virt-df -h 및 virt-list-partitions -lh 를 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 첫 번째 (부팅) 파티션의 크기를 약 100MB에서 500MB로 늘립니다.
- 총 디스크 크기를 8GB에서 16GB로 늘립니다.
- 두 번째 파티션을 확장하여 남은 공간을 채웁니다.
/dev/VolGroup00/LogVol00을 확장하여 두 번째 파티션에 새 공간을 채웁니다.
- guest 가상 머신이 종료되었는지 확인합니다.
- 원래 디스크의 이름을 백업으로 변경합니다. 이 작업을 수행하는 방법은 원래 디스크의 호스트 물리적 시스템 스토리지 환경에 따라 다릅니다. 파일로 저장된 경우 mv 명령을 사용합니다. 논리 볼륨(이 예에서 설명한 것처럼)의 경우 lvrename 을 사용하십시오.
lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backup
# lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 디스크를 만듭니다. 이 예제의 요구 사항은 총 디스크 크기를 최대 16GB까지 확장하는 것입니다. 여기에서 논리 볼륨이 사용되므로 다음 명령이 사용됩니다.
lvcreate -L 16G -n RHEL6 /dev/vg_guests Logical volume "RHEL6" created
# lvcreate -L 16G -n RHEL6 /dev/vg_guests Logical volume "RHEL6" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 2단계의 요구 사항은 다음 명령으로 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 처음 두 개의 인수는 입력 디스크 및 출력 디스크입니다. --resize /dev/sda1=500M 첫 번째 파티션의 크기를 500MB까지 조정합니다. --expand /dev/sda2 는 두 번째 파티션을 확장하여 나머지 공간을 모두 채웁니다. --LV-expand /dev/VolGroup00/LogVol00 은 guest 가상 머신 논리 볼륨을 확장하여 두 번째 파티션에 추가 공간을 채웁니다.virt-resize 는 출력에서 수행하는 작업을 설명합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 가상 머신을 부팅합니다. 작동하는 경우 (및 철저하게 테스트한 후에) 백업 디스크를 삭제할 수 있습니다. 실패하면 가상 머신을 종료하고 새 디스크를 삭제한 다음 백업 디스크의 이름을 원래 이름으로 다시 변경합니다.
- virt-df 또는 virt-list-partitions 를 사용하여 새 크기를 표시합니다.
virt-df -h /dev/vg_pin/RHEL6 Filesystem Size Used Available Use% RHEL6:/dev/sda1 484.4M 10.8M 448.6M 3% RHEL6:/dev/VolGroup00/LogVol00 14.3G 2.2G 11.4G 16%
# virt-df -h /dev/vg_pin/RHEL6 Filesystem Size Used Available Use% RHEL6:/dev/sda1 484.4M 10.8M 448.6M 3% RHEL6:/dev/VolGroup00/LogVol00 14.3G 2.2G 11.4G 16%Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.9. virt-inspector: 게스트 가상 머신 검사 링크 복사링크가 클립보드에 복사되었습니다!
16.9.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
16.9.2. 설치 링크 복사링크가 클립보드에 복사되었습니다!
yum install libguestfs-tools libguestfs-devel
# yum install libguestfs-tools libguestfs-devel
/usr/share/doc/libguestfs-devel-*/ 에 설치되어 있습니다. 여기서 "*"는 버전 번호 libguestfs로 대체됩니다.
16.9.3. virt-inspector 실행 링크 복사링크가 클립보드에 복사되었습니다!
virt-inspector --xml disk.img > report.xml
virt-inspector --xml disk.img > report.xml
virt-inspector --xml GuestName > report.xml
virt-inspector --xml GuestName > report.xml
report.xml)입니다. XML 파일의 주요 구성 요소는 일반적으로 다음과 유사하게 단일 <operatingsystem> 요소를 포함하는 최상위 <operatingsystems> 요소입니다.
virt-inspector --xml GuestName | xpath //application/name [...long list...]
virt-inspector --xml GuestName | xpath //application/name
[...long list...]
16.10. virt-win-reg: 읽기 및 Windows 레지스트리 편집 링크 복사링크가 클립보드에 복사되었습니다!
16.10.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
16.10.2. 설치 링크 복사링크가 클립보드에 복사되었습니다!
yum install /usr/bin/virt-win-reg
# yum install /usr/bin/virt-win-reg
16.10.3. virt-win-reg 사용 링크 복사링크가 클립보드에 복사되었습니다!
virt-win-reg WindowsGuest \
'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall' \
| less
# virt-win-reg WindowsGuest \
'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall' \
| less
.REG 파일에서 사용되는 표준 텍스트 기반 형식입니다.
.REG 파일을 한 시스템에서 다른 시스템으로 전송할 때 fidelity를 보장할 수 있는 유일한 방법입니다.
perl -MEncode -pe's?hex\((\d+)\):(\S+)?$t=$1;$_=$2;s,\,,,g;"str($t):\"".decode(utf16le=>pack("H*",$_))."\""?eg'
perl -MEncode -pe's?hex\((\d+)\):(\S+)?$t=$1;$_=$2;s,\,,,g;"str($t):\"".decode(utf16le=>pack("H*",$_))."\""?eg'
.REG 파일을 준비해야 합니다. 여기에 이 작업을 수행하는 방법에 대한 많은 문서가 있습니다. .REG 파일을 준비했으면 다음을 입력합니다.
virt-win-reg --merge WindowsGuest input.reg
# virt-win-reg --merge WindowsGuest input.reg
16.11. 프로그래밍 언어에서 API 사용 링크 복사링크가 클립보드에 복사되었습니다!
- C 및 C++ 바인딩을 설치하려면 다음 명령을 입력합니다.
yum install libguestfs-devel
# yum install libguestfs-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Perl 바인딩을 설치하려면 다음을 수행합니다.
yum install 'perl(Sys::Guestfs)'
# yum install 'perl(Sys::Guestfs)'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Python 바인딩을 설치하려면 다음을 수행합니다.
yum install python-libguestfs
# yum install python-libguestfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Java 바인딩을 설치하려면 다음을 수행합니다.
yum install libguestfs-java libguestfs-java-devel libguestfs-javadoc
# yum install libguestfs-java libguestfs-java-devel libguestfs-javadocCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Ruby 바인딩을 설치하려면 다음을 수행합니다.
yum install ruby-libguestfs
# yum install ruby-libguestfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - OCaml 바인딩을 설치하려면 다음을 수행합니다.
yum install ocaml-libguestfs ocaml-libguestfs-devel
# yum install ocaml-libguestfs ocaml-libguestfs-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow
guestfs_launch (g);
guestfs_launch (g);
$g->launch ()
$g->launch ()
g#launch ()
g#launch ()
- libguestfs API가 동기화됩니다. 각 호출 블록은 완료될 때까지 차단됩니다. 비동기적으로 호출하려면 스레드를 만들어야 합니다.If you want to make calls asynchronously, you have to create a thread.
- libguestfs API는 스레드로부터 안전하지 않습니다. 각 핸들은 단일 스레드에서만 사용해야 합니다. 또는 두 스레드가 동시에 하나의 처리에서 명령을 실행할 수 없도록 자체 뮤텍스 간에 핸들을 공유해야 합니다.
- 동일한 디스크 이미지에서 여러 프로세스를 열 수 없습니다. 모든 핸들이 읽기 전용이지만 여전히 권장되지는 않는 경우 허용됩니다.
- 해당 디스크 이미지(예: 라이브 VM)를 사용할 수 있는 경우 쓰기용 디스크 이미지를 추가하지 않아야 합니다. 이렇게 하면 디스크 손상이 발생합니다.
- 현재 사용 중인 디스크 이미지에 읽기 전용 핸들을 열 수 있지만(예: 라이브 VM) 디스크 이미지를 읽는 시점에 디스크 이미지가 많이 기록되는 경우 결과를 예측할 수 없거나 특별히 일치하지 않을 수 있습니다.
16.11.1. C 프로그램을 통한 API와 상호 작용 링크 복사링크가 클립보드에 복사되었습니다!
test.c). 이 프로그램을 컴파일하고 다음 두 명령을 사용하여 실행합니다.
gcc -Wall test.c -o test -lguestfs ./test
gcc -Wall test.c -o test -lguestfs
./test
disk.img 라고 하며 현재 디렉터리에 생성됩니다.
- 핸들을 만듭니다.
- 디스크에 디스크에 추가합니다.
- libguestfs 백엔드를 시작합니다.
- 파티션, 파일 시스템 및 파일을 만듭니다.
- 핸들을 닫고 종료합니다.
gcc -Wall test.c -o test -lguestfs ./test
gcc -Wall test.c -o test -lguestfs
./test
disk.img 라는 디스크 이미지로 남아 있어야 합니다. 이 이미지는fish로 검사할 수 있습니다.
guestfish --ro -a disk.img -m /dev/sda1 ><fs> ll / ><fs> cat /foo/resolv.conf
guestfish --ro -a disk.img -m /dev/sda1
><fs> ll /
><fs> cat /foo/resolv.conf
16.12. virt-sysprep: 가상 머신 설정 재설정 링크 복사링크가 클립보드에 복사되었습니다!
yum install libguestfs-tools-c
$ yum install libguestfs-tools-c
yum install /usr/bin/virt-sysprep
$ yum install /usr/bin/virt-sysprep
| 명령 | 설명 | 예제 |
|---|---|---|
| --help | 특정 명령 또는 전체 패키지에 대한 간략한 도움말 항목을 표시합니다. 추가 도움말은 virt-sysprep 매뉴얼 페이지를 참조하십시오. | $ virt-sysprep --help |
| -a [file] 또는 --add [file] | 지정된 파일 을 게스트 가상 머신의 디스크 이미지여야 합니다. 디스크 이미지의 형식이 자동으로 탐지됩니다. 이 값을 재정의하고 특정 형식을 강제 적용하려면 --format 옵션을 사용합니다. | $ virt-sysprep --add /dev/vms/disk.img |
| -c [URI] 또는 --connect [URI] | libvirt 를 사용하는 경우 지정된 URI에 연결합니다. 생략하면 KVM 하이퍼바이저를 통해 연결됩니다. 게스트 블록 장치를 직접 지정하는 경우(virt-sysprep -a), libvirt 가 전혀 사용되지 않습니다. | $ virt-sysprep -c qemu:///system |
| -d [guest] 또는 --domain [guest] | 지정된 게스트 가상 머신의 모든 디스크를 추가합니다. 도메인 UUID는 도메인 이름 대신 사용할 수 있습니다. | $ virt-sysprep --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e |
| -n 또는 --dry-run 또는 --dryrun | 게스트 가상 머신에서 읽기 전용 "dry run" sysprep 작업을 수행합니다. 이렇게 하면 sysprep 작업이 실행되지만 마지막에 디스크의 변경 사항이 취소됩니다. | $ virt-sysprep -n |
| --enable [operations] | 지정된 작업을 활성화합니다. 사용 가능한 작업을 나열하려면 --list 명령을 사용합니다. | $ virt-sysprep --enable ssh-hotkeys,udev-persistent-net |
--format [raw|qcow2|auto] | a 옵션의 기본값은 디스크 이미지의 형식을 자동으로 탐지하는 것입니다. 이 경우 명령줄에서 이어지는 -a 옵션에 대한 디스크 형식이 강제 적용됩니다. --format 자동 스위치를 후속 -a 옵션에 대한 자동 감지로 다시 사용합니다(위의 -a 명령 참조). | $ virt-sysprep --format raw -a disk.img 는 disk.img에 대해 원시 형식(자동 감지 없음)을 강제 적용하지만 virt-sysprep --format raw -a disk.img --format auto -a another.img forces raw format (no auto-detection)은 다른.img 의 자동 감지로 되돌아갑니다. 신뢰할 수 없는 원시 형식 게스트 디스크 이미지가 있는 경우 이 옵션을 사용하여 디스크 형식을 지정해야 합니다. 이렇게 하면 악의적인 게스트의 보안 문제가 발생할 수 있습니다. |
| --list-operations | virt-sysprep 프로그램에서 지원하는 작업을 나열합니다. 해당 항목은 하나 이상의 공백으로 구분된 하나 이상의 필드가 포함된 행당 하나씩 나열됩니다. 출력의 첫 번째 필드는 --enable 플래그에 제공할 수 있는 작업 이름입니다. 두 번째 필드는 기본적으로 작업을 사용할 수 있는 경우 * 문자이거나 그렇지 않은 경우 비어 있습니다. 동일한 줄의 추가 필드에는 작업에 대한 설명이 포함되어 있습니다. | $ virt-sysprep --list-operations |
| --mount-options | 게스트 가상 시스템의 각 마운트 지점에 대한 마운트 옵션을 설정합니다. semi-separated mountpoint:options 쌍을 사용합니다. 쉘에서 보호하려면 이 목록을 따옴표로 설정해야 할 수도 있습니다. | $ virt-sysprep --mount-options "/:notime" 은 notime 작업을 사용하여 루트 디렉터리를 마운트합니다. |
| --SELinux-relabel 및 --no-selinux-relabel | virt-sysprep는 게스트의 첫 번째 부팅 시 SELinux 재레이블링을 항상 예약하는 것은 아닙니다. 경우에 따라 레이블 재지정이 수행됩니다(예: virt-sysprep가 파일을 수정한 경우). 그러나 모든 작업이 파일만 제거하는 경우 (예: --enable delete --delete /some/file을 사용하는 경우) 다시 레이블이 지정되지 않습니다. --selinux-relabel 옵션을 사용하면 항상 SELinux 재레이블링을 강제 적용하는 반면 --no-selinux-relabel 이 설정된 동안 재레이블이 예약되지 않습니다. 파일에 올바른 SELinux 레이블이 있는지 확인하려면 --selinux-relabel 을 사용하는 것이 좋습니다. | $ virt-sysprep --selinux-relabel |
| -q 또는 --quiet | 로그 메시지의 인쇄를 방지합니다. | $ virt-sysprep -q |
| -V 또는 --verbose | 디버깅 목적으로 상세 메시지를 활성화합니다. | $ virt-sysprep -v |
| -V 또는 --version | virt-sysprep 버전 번호를 표시하고 종료합니다. | $ virt-sysprep -V |
| --root-password | 루트 암호를 설정합니다. 를 사용하여 새 암호를 명시적으로 지정하거나 선택한 파일의 첫 번째 줄에서 문자열을 사용할 수 있으므로 더 안전합니다. |
$ virt-sysprep
--root-password password:123456 -a guest.img
또는
$ virt-sysprep
--root-password 파일:SOURCE_FILE_PATH -a guest.img
|
16.13. 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
libguestfs-test-tool
$ libguestfs-test-tool
===== TEST FINISHED OK =====
===== TEST FINISHED OK =====
16.14. Further 문서를 찾을 수 있는 위치 링크 복사링크가 클립보드에 복사되었습니다!
17장. 게스트 가상 머신 관리를 위한 그래픽 사용자 인터페이스 도구 링크 복사링크가 클립보드에 복사되었습니다!
17.1. virt-viewer 링크 복사링크가 클립보드에 복사되었습니다!
virt-viewer 는 게스트 가상 시스템의 그래픽 콘솔을 표시하는 데 필요한 최소한의 명령줄 유틸리티입니다. 콘솔에 VNC 또는 SPICE 프로토콜을 사용하여 액세스할 수 있습니다. 게스트는 이름, ID 또는 UUID로 참조할 수 있습니다. 게스트가 아직 실행되지 않은 경우 콘솔에 연결을 시도하기 전에 가 시작될 때까지 대기하도록 뷰어를 설정할 수 있습니다. 뷰어는 원격 호스트에 연결하여 콘솔 정보를 가져온 다음 동일한 네트워크 전송을 사용하여 원격 콘솔에 연결할 수도 있습니다.
sudo yum install virt-viewer
# sudo yum install virt-viewer
구문
virt-viewer [OPTIONS] {guest-name|id|uuid}
# virt-viewer [OPTIONS] {guest-name|id|uuid}
게스트 가상 머신에 연결
virt-viewer guest-name-or-UUID
# virt-viewer guest-name-or-UUID
virt-viewer --connect qemu:///system guest-name-or-UUID
# virt-viewer --connect qemu:///system guest-name-or-UUID
virt-viewer --connect xen://example.org/ guest-name-or-UUID
# virt-viewer --connect xen://example.org/ guest-name-or-UUID
virt-viewer --direct --connect xen+ssh://root@example.org/ guest-name-or-UUID
# virt-viewer --direct --connect xen+ssh://root@example.org/ guest-name-or-UUID
인터페이스
그림 17.1. 샘플 virt-viewer 인터페이스
핫키 설정
--hotkeys 옵션을 사용합니다.
virt-viewer --hotkeys=action1=key-combination1[,action2=key-combination2] guest-name-or-UUID
# virt-viewer --hotkeys=action1=key-combination1[,action2=key-combination2] guest-name-or-UUID
- toggle-fullscreen
- release-cursor
- smartcard-insert
- smartcard-remove
예 17.1. virt-viewer 핫키 설정
virt-viewer --hotkeys=toggle-fullscreen=shift+f11 qemu:///system testguest
# virt-viewer --hotkeys=toggle-fullscreen=shift+f11 qemu:///system testguest
키오스크 모드
-k 또는 --kiosk 옵션을 사용하여 게스트에 연결합니다.
예 17.2. 키오스크 모드에서 virt-viewer 사용
virt-viewer --connect qemu:///system guest-name-or-UUID --kiosk --kiosk-quit on-disconnect
# virt-viewer --connect qemu:///system guest-name-or-UUID --kiosk --kiosk-quit on-disconnect
17.2. remote-viewer 링크 복사링크가 클립보드에 복사되었습니다!
remote-viewer 는 SPICE 및 VNC를 지원하는 간단한 원격 데스크탑 디스플레이 클라이언트입니다. 대부분의 기능과 제한 사항을 virt-viewer 와 공유합니다.
remote-viewer 유틸리티를 설치하려면 다음을 실행합니다.
sudo yum install virt-viewer
# sudo yum install virt-viewer
구문
remote-viewer [OPTIONS] {guest-name|id|uuid}
# remote-viewer [OPTIONS] {guest-name|id|uuid}
게스트 가상 머신에 연결
예 17.3. SPICE를 사용하여 게스트 디스플레이에 연결
remote-viewer spice://testguest:5900
# remote-viewer spice://testguest:5900
예 17.4. VNC를 사용하여 게스트 디스플레이에 연결
testguest2 라는 시스템의 VNC 서버에 연결하려면 다음을 사용합니다.
remote-viewer vnc://testguest2:5900
# remote-viewer vnc://testguest2:5900
인터페이스
그림 17.2. remote-viewer 인터페이스 샘플
18장. 가상 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
18.1. 가상 네트워크 스위치 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.1. 두 게스트로 가상 네트워크 전환
ip addr show virbr0
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 1b:c4:94:cf:fd:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
$ ip addr show virbr0
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 1b:c4:94:cf:fd:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
18.2. 브리지 모드 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.2. 브리지 모드의 가상 네트워크 스위치
18.3. 네트워크 주소 변환 모드 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.3. 두 개의 게스트가 있는 NAT를 사용하는 가상 네트워크 스위치
iptables -j SNAT --to-source [start]-[end]
# iptables -j SNAT --to-source [start]-[end]
18.3.1. DNS 및 DHCP 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.4. dnsmasq를 실행 중인 가상 네트워크 스위치
18.4. 라우팅된 모드 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.5. 라우팅 모드의 가상 네트워크 스위치
18.5. 격리된 모드 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.6. 격리된 모드에서 가상 네트워크 스위치
18.6. 기본 설정 링크 복사링크가 클립보드에 복사되었습니다!
libvirtd 에 대한 이 기본 구성을 보여줍니다.
그림 18.7. 기본 libvirt 네트워크 구성
eth0,eth1 및 eth2)에서 유용할 수 있습니다. 이는 라우팅 및 NAT 모드에서만 유용하며 dev=<interface > 옵션 또는 새 가상 네트워크를 생성할 때 virt-manager 에 정의할 수 있습니다.
18.7. Common Scenarios의 예 링크 복사링크가 클립보드에 복사되었습니다!
18.7.1. 브리지 모드 링크 복사링크가 클립보드에 복사되었습니다!
- 물리적 시스템과 함께 기존 네트워크에 게스트 가상 시스템을 배포하면 가상 시스템과 물리적 시스템의 차이를 최종 사용자에게 투명하게 만들 수 있습니다.
- 기존 물리적 네트워크 구성 설정을 변경하지 않고 게스트 가상 머신 배포.
- 기존 물리적 네트워크에서 쉽게 액세스할 수 있어야 하는 게스트 가상 머신 배포. 게스트 가상 머신을 물리적 네트워크에 배치하면 DHCP와 같은 기존 브로드캐스트 도메인 내의 서비스에 액세스해야 합니다.
- VLAN이 사용되는 기존 네트워크에 게스트 가상 머신을 연결합니다.
18.7.2. 라우팅된 모드 링크 복사링크가 클립보드에 복사되었습니다!
DMZ
보안상의 이유로 하나 이상의 노드가 제어된 서브네트워크에 배치되는 네트워크를 고려하십시오. 이와 같은 특수 서브네트워크를 배포하는 것은 일반적인 관행이며, 서브네트워크는Period으로 알려져 있습니다. 이 레이아웃에 대한 자세한 내용은 다음 다이어그램을 참조하십시오.
그림 18.8. 샘플 RedFish 구성
가상 서버 호스팅
각각 두 개의 물리적 네트워크 연결이 있는 여러 호스트 물리적 시스템이 있는 가상 서버 호스팅 회사를 고려해 보십시오. 한 인터페이스는 관리 및 회계에 사용되며, 다른 인터페이스는 가상 머신이 를 통해 연결하는 것입니다. 각 게스트에는 자체 공용 IP 주소가 있지만 호스트 물리적 시스템은 개인 IP 주소를 게스트의 관리로만 사용합니다. 이 시나리오를 이해하려면 다음 다이어그램을 참조하십시오.
그림 18.9. 가상 서버 호스팅 샘플 구성
18.7.3. NAT 모드 링크 복사링크가 클립보드에 복사되었습니다!
18.7.4. 격리된 모드 링크 복사링크가 클립보드에 복사되었습니다!
18.8. 가상 네트워크 관리 링크 복사링크가 클립보드에 복사되었습니다!
- 편집 메뉴에서 연결 세부 정보를 선택합니다.
그림 18.10. 호스트 물리적 시스템의 세부 정보 선택
- 이렇게 하면 메뉴가 열립니다. 가상 네트워크 탭을 클릭합니다.
그림 18.11. 가상 네트워크 구성
- 사용 가능한 모든 가상 네트워크는 메뉴의 왼쪽 상자에 나열됩니다. 이 상자에서 선택하고 필요에 따라 편집하면 가상 네트워크의 구성을 편집할 수 있습니다.
18.9. 가상 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
- Connection Details (연결 세부 정보) 메뉴 내에서 가상 네트워크 탭을 엽니다. 더하기 기호(+) 아이콘으로 식별되는 버튼을 클릭합니다. 자세한 내용은 18.8절. “가상 네트워크 관리” 에서 참조하십시오.
그림 18.12. 가상 네트워크 구성
그러면 창이 열립니다. 계속하려면 를 클릭합니다.그림 18.13. 새 가상 네트워크 생성
- 가상 네트워크에 적절한 이름을 입력하고 를 클릭합니다.
그림 18.14. 가상 네트워크 이름 지정
- 가상 네트워크의 IPv4 주소 공간을 입력하고 를 클릭합니다.
그림 18.15. IPv4 주소 공간 선택
- 시작 및 종료 IP 주소를 지정하여 가상 네트워크의 DHCP 범위를 정의합니다. 계속하려면 를 클릭합니다.
그림 18.16. DHCP 범위 선택
- 가상 네트워크가 물리적 네트워크에 연결하는 방법을 선택합니다.
그림 18.17. 물리적 네트워크에 연결
물리적 네트워크로의 전달을 선택하는 경우 목적지 가 모든 물리적 장치인지 특정 물리적 장치 여야 하는지 선택합니다. 모드가 NAT 또는 라우트 여야 하는지 여부도 선택합니다.계속하려면 를 클릭합니다. - 이제 네트워크를 만들 준비가 되었습니다. 네트워크의 구성을 확인하고 를 클릭합니다.
그림 18.18. 네트워크 생성 준비
- 이제 연결 세부 정보 창의 Virtual Networks (가상 네트워크) 탭에서 새 가상 네트워크를 사용할 수 있습니다.
18.10. 가상 네트워크를 게스트에 연결 링크 복사링크가 클립보드에 복사되었습니다!
- Virtual Machine Manager 창에서 네트워크가 할당될 게스트를 강조 표시합니다.
그림 18.19. 표시할 가상 머신 선택
- 가상 머신 관리자 편집 메뉴에서 가상 머신 세부 정보를 선택합니다.
그림 18.20. 가상 머신 세부 정보 표시
- 가상 머신 세부 정보 창에서 하드웨어 추가 버튼을 클릭합니다.
그림 18.21. 가상 머신 세부 정보 창
- 새 가상 하드웨어 추가 창의 왼쪽 창에서 Network 를 선택하고 호스트 장치 메뉴에서 네트워크 이름(이 예에서는network 1)을 선택하고 를 클릭합니다.
그림 18.22. 새 가상 하드웨어 추가 창에서 네트워크를 선택합니다.
- 시작 시 새 네트워크가 게스트에 표시될 가상 네트워크 인터페이스로 표시됩니다.
그림 18.23. 게스트 하드웨어 목록에 표시된 새 네트워크
18.11. 물리적 인터페이스에 가상 NIC 직접 연결 링크 복사링크가 클립보드에 복사되었습니다!
물리적 인터페이스 제공 모드
- VEPA
- 가상 이더넷 포트 수집기(VEPA) 모드에서는 게스트의 모든 패킷이 외부 스위치로 전송됩니다. 이를 통해 사용자는 스위치를 통해 게스트 트래픽을 강제 적용할 수 있습니다. VEPA 모드가 제대로 작동하려면 외부 스위치가 hairpin 모드도 지원해야 합니다. 이 모드를 사용하면 대상이 대상인 패킷이 소스 게스트와 동일한 호스트 시스템의 게스트인 패킷이 외부 스위치에 의해 호스트로 다시 전송되도록 합니다.
그림 18.24. VEPA 모드
- 브릿지
- 소스 게스트와 대상이 동일한 호스트 시스템에 있는 패킷은 대상 macvtap 장치로 직접 전달됩니다. 직접 전달이 성공하려면 소스 장치와 대상 장치 둘 다 브리지 모드에 있어야 합니다. 장치 중 하나가 VEPA 모드에 있는 경우 헤어핀 외부 스위치가 필요합니다.
그림 18.25. 브릿지 모드
- 비공개
- 모든 패킷은 외부 스위치로 전송되며 외부 라우터 또는 게이트웨이를 통해 전송되는 경우에만 동일한 호스트 시스템의 대상 게스트로 전달되고 이를 호스트로 다시 보냅니다. 개인 모드는 단일 호스트의 개별 게스트가 서로 통신하지 못하도록 방지하는 데 사용할 수 있습니다. 소스 또는 대상 장치가 개인 모드인 경우 이 절차를 따릅니다.
그림 18.26. 비공개 모드
- passthrough
- 이 기능은 마이그레이션 기능을 손실하지 않고 물리적 인터페이스 장치 또는 SR-IOV VF(가상 기능)를 게스트에 직접 연결합니다. 모든 패킷은 지정된 네트워크 장치로 직접 전송됩니다. 네트워크 장치는 통과 모드의 게스트 간에 공유할 수 없으므로 단일 네트워크 장치를 단일 게스트로만 전달할 수 있습니다.
그림 18.27. Passthrough 모드
가상 스테이션 인터페이스 유형
- managerid
- VSI Manager ID는 VSI 유형 및 인스턴스 정의가 포함된 데이터베이스를 식별합니다. 이는 정수 값이며 값 0이 예약됩니다.
- typeid
- VSI 유형 ID는 네트워크 액세스를 나타내는 VSI 유형을 식별합니다. VSI 유형은 일반적으로 네트워크 관리자가 관리합니다. 정수 값입니다.
- typeidversion
- VSI 유형 버전에서는 여러 버전의 VSI 유형을 사용할 수 있습니다. 정수 값입니다.
- InstanceID
- VSI 인스턴스 ID 식별자는 VSI 인스턴스(가상 시스템의 가상 인터페이스)가 생성될 때 생성됩니다. 이는 전역적으로 고유한 식별자입니다.
- profileid
- 프로필 ID에는 이 인터페이스에 적용할 포트 프로필의 이름이 포함되어 있습니다. 이 이름은 port 프로필 데이터베이스에서 포트 프로필에서 네트워크 매개 변수로 확인하며 해당 네트워크 매개 변수가 이 인터페이스에 적용됩니다.
18.12. 네트워크 필터링 적용 링크 복사링크가 클립보드에 복사되었습니다!
18.12.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
- network
- 이더넷 - 브리징 모드에서 사용해야 합니다.
- 브릿지
예 18.1. 네트워크 필터링의 예
예 18.2. 설명 연장
18.12.2. 필터링 체인 링크 복사링크가 클립보드에 복사되었습니다!
- 루트
- mac
- STP(범위 트리 프로토콜)
- vlan
- ARP 및 rarp
- ipv4
- ipv6
예 18.3. ARP 트래픽 필터링
18.12.3. 체인 우선순위 필터링 링크 복사링크가 클립보드에 복사되었습니다!
| 체인(prefix) | 기본 우선순위 |
|---|---|
| stp | -810 |
| mac | -800 |
| vlan | -750 |
| ipv4 | -700 |
| ipv6 | -600 |
| ARP | -500 |
| RARP | -400 |
18.12.4. 필터에서 변수 사용 링크 복사링크가 클립보드에 복사되었습니다!
MAC 은 네트워크 인터페이스의 MAC 주소로 지정됩니다. 이 변수를 참조하는 필터링 규칙은 인터페이스의 MAC 주소로 자동으로 교체됩니다. 사용자가 MAC 매개 변수를 명시적으로 제공하지 않아도 됩니다. 위의 IP 매개변수와 유사한 MAC 매개 변수를 지정할 수는 있지만 libvirt에서 인터페이스에서 사용할 MAC 주소를 알고 있으므로 권장되지 않습니다.
IP 는 지정된 인터페이스에서 가상 머신 내부의 운영 체제가 사용할 것으로 예상되는 IP 주소를 나타냅니다. libvirt 데몬이 매개 변수가 명시적으로 제공되지 않고 참조되는 경우 인터페이스에서 사용 중인 IP 주소(및 IP 매개변수 값)를 확인하려고 하면 IP 매개변수가 특수하게 됩니다. IP 주소 감지에 대한 현재 제한 사항은 이 기능을 사용하는 방법과 사용할 때 예상해야 하는 사항에 대한 제한 18.12.12절. “제한 사항” 섹션을 참조하십시오. 18.12.2절. “필터링 체인” 에 표시된 XML 파일에는 MAC 및 IP 변수를 참조하는 데 네트워크 필터 XML을 사용하는 예입니다.
$ 문자 접두사가 지정됩니다. 변수 값 형식은 XML에서 식별되는 필터 특성에 따라 예상되는 유형이어야 합니다. 위의 예에서 IP 매개변수는 표준 형식으로 법률 IP 주소를 보유해야 합니다. 올바른 구조를 제공하지 않으면 필터 변수가 값으로 교체되지 않아 핫 플러그를 사용할 때 가상 머신이 시작되지 않거나 인터페이스가 연결되지 않습니다. 각 XML 특성에 예상되는 일부 유형은 예제 예 18.4. “샘플 변수 유형” 에 표시됩니다.
예 18.4. 샘플 변수 유형
<rule action='accept' direction='in' priority='500'>
<tcp srpipaddr='$IP'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<tcp srpipaddr='$IP'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<udp dstportstart='$DSTPORTS[1]'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<udp dstportstart='$DSTPORTS[1]'/>
</rule>
예 18.5. 다양한 변수 사용
<rule action='accept' direction='in' priority='500'>
<ip srcipaddr='$SRCIPADDRESSES[@1]' dstportstart='$DSTPORTS[@2]'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<ip srcipaddr='$SRCIPADDRESSES[@1]' dstportstart='$DSTPORTS[@2]'/>
</rule>
SRCIPADDRESSES = [ 10.0.0.1, 11.1.2.3 ] DSTPORTS = [ 80, 8080 ]
SRCIPADDRESSES = [ 10.0.0.1, 11.1.2.3 ]
DSTPORTS = [ 80, 8080 ]
- 10.0.0.1, 80
- 10.0.0.1, 8080
- 11.1.2.3, 80
- 11.1.2.3, 8080
- 10.0.0.1, 80
- 11.1.2.3, 8080
18.12.5. 자동 IP 주소 탐지 및 DHCP 스누핑 링크 복사링크가 클립보드에 복사되었습니다!
18.12.5.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
CTRL_IP_LEARNING 을 사용하여 사용할 IP 주소 학습 방법을 지정할 수 있습니다. 유효한 값에는 모든,dhcp, 또는 none 이 있습니다.
TRL_IP_LEARNING 변수가 설정되지 않은 경우 기본 설정입니다. 이 메서드는 인터페이스당 단일 IP 주소만 감지합니다. 게스트 가상 머신의 IP 주소가 감지되면 해당 IP 네트워크 트래픽이 해당 주소로 잠깁니다. 예를 들어 필터 중 하나로 IP 주소 스푸핑이 차단됩니다. 이 경우 VM의 사용자는 guest 가상 머신 내부의 인터페이스의 IP 주소를 변경할 수 없으므로 IP 주소 스푸핑으로 간주됩니다. 게스트 가상 머신이 다른 호스트 물리적 시스템으로 마이그레이션되거나 일시 중지 작업 후에 다시 시작되면 게스트 가상 시스템에서 보낸 첫 번째 패킷은 게스트 가상 머신이 특정 인터페이스에서 사용할 수 있는 IP 주소를 다시 결정합니다.
18.12.5.2. DHCP 스누핑 링크 복사링크가 클립보드에 복사되었습니다!
DHCPSERVER 를 유효한 DHCP 서버의 IP 주소로 설정하고 이 변수를 사용하여 수신되는 DHCP 응답을 필터링하는 필터를 제공합니다.
예 18.6. DHCP 스누핑을 위한 IP 활성화
18.12.6. 예약된 변수 링크 복사링크가 클립보드에 복사되었습니다!
| 변수 이름 | 정의 |
|---|---|
| MAC | 인터페이스의 MAC 주소 |
| IP | 인터페이스에서 사용하는 IP 주소 목록 |
| IPV6 | 현재 구현되지 않음: 인터페이스에서 사용 중인 IPV6 주소 목록 |
| DHCPSERVER | 신뢰할 수 있는 DHCP 서버의 IP 주소 목록 |
| DHCPSERVERV6 | 현재 구현되지 않음: 신뢰할 수 있는 DHCP 서버의 IPv6 주소 목록 |
| CTRL_IP_LEARNING | IP 주소 탐지 모드 선택 |
18.12.7. 요소 및 속성 개요 링크 복사링크가 클립보드에 복사되었습니다!
<filter> 입니다. name 특성은 지정된 필터의 고유 이름을 제공합니다. chain 속성은 선택 사항이지만 기본 호스트 물리적 시스템의 방화벽 하위 시스템에서 보다 효율적으로 처리하기 위해 특정 필터를 더 효과적으로 구성할 수 있습니다. 현재 시스템은 루트,ipv4,ipv6,arp 및 rarp 등 체인만 지원합니다.
18.12.8. 기타 필터에 대한 참조 링크 복사링크가 클립보드에 복사되었습니다!
예 18.7. 정리된 트래픽 필터의 예
18.12.9. 필터 규칙 링크 복사링크가 클립보드에 복사되었습니다!
예 18.8. 네트워크 트래픽 필터링의 예
- 작업은 다음 값을 가질 수 있습니다.
- 삭제( 규칙을 자동으로 일치시키면 추가 분석 없이 패킷을 자동으로 삭제)
- 거부( 규칙을 일치하면 추가 분석 없이 ICMP 거부 메시지가 생성됨)
- 수락( 규칙을 더 이상 분석 없이 패킷을 수락)
- 반환( 규칙이 이 필터를 통과하고 추가 분석을 위해 호출 필터에 제어를 반환)
- 계속(조치 분석을 위한 다음 규칙으로 일치)
- 방향은 다음 값을 가질 수 있습니다.
- 들어오는 트래픽의 경우
- 나가는 트래픽의 경우
- 들어오고 나가는 트래픽의 수신 수신
- priority는 선택 사항입니다. 규칙의 우선 순위는 다른 규칙에 따라 규칙을 인스턴스화할 순서를 제어합니다. 값이 낮은 규칙이 더 높은 값이 있는 규칙보다 먼저 인스턴스화됩니다. 유효한 값은 -1000에서 1000까지의 범위에 있습니다. 이 속성을 제공하지 않으면 우선순위 500이 기본적으로 할당됩니다. 루트 체인의 필터링 규칙은 우선 순위에 따라 루트 체인에 연결된 필터와 함께 정렬됩니다. 이를 통해 필터 체인에 대한 액세스 권한이 있는 필터링 규칙을 인터리브할 수 있습니다. 자세한 내용은 18.12.3절. “체인 우선순위 필터링” 를 참조하십시오.
- statematch는 선택 사항입니다. 가능한 값은 기본 연결 상태를 끄는 '0' 또는 'false'입니다. 기본 설정은 'true' 또는 1입니다.
18.12.10. 지원되는 프로토콜 링크 복사링크가 클립보드에 복사되었습니다!
srcipaddr 을 표시했습니다. 다음 섹션에서는 어떤 속성이 유효한지와 예상되는 데이터 유형을 보여줍니다. 다음 데이터 유형을 사용할 수 있습니다.
- UINT8 : 8 비트 정수; 0-255 범위
- UINT16: 16비트 정수, 범위 0-65535
- MAC_ADDR: 00:11:22:33:44:55와 같이 점으로 10진수 형식의 MAC 주소
- MAC_MASK: FF:FF:FC:00과 같은 MAC 주소 형식의 MAC 주소 마스크
- IP_ADDR: 10.1.2.3과 같은 점으로 10.1.2.3 형식의 IP 주소
- IP_MASK: 점으로 지정된 10진수 형식(255.255.248.0) 또는 CIDR 마스크(0-32)의 IP 주소 마스크
- IPV6_ADDR: FFFF::1과 같은 번호 형식으로 IPv6 주소
- IPV6_MASK: IPv6 mask in numbers format (FFFF:FFFF:FC00::) 또는 CIDR 마스크(0-128)
- 문자열: 문자열
- BOOLEAN: 'true', 'yes', '1' 또는 'false', 'no', '0'
- IPSETFLAGS: 최대 6개의 'src' 또는 'dst' 요소에서 패킷 헤더의 소스 또는 대상 부분(예: src,src,dst)에서 기능을 선택하는 ipset의 소스 및 대상 플래그입니다. 여기에서 제공할 'selectors' 수는 참조되는 ipset 유형에 따라 다릅니다.
IP_MASK 또는 IPV6_MASK 유형의 속성을 제외한 모든 속성은 값이 없는 match 속성을 사용하여 부정할 수 있습니다. 여러 개의 부정 특성을 함께 그룹화할 수 있습니다. 다음 XML 조각은 추상 특성을 사용하는 이러한 예를 보여줍니다.
value 1 과 protocol property attribute 2 가 value2 와 일치하지 않고 protocol 속성 속성3이 value 3 과 일치하는 경우에만 삭제됩니다.
18.12.10.1. MAC (Ethernet) 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAC_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| protocolid | UINT16 (0x600-0xffff), STRING | 계층 3 프로토콜 ID입니다. 유효한 문자열에는 [arp, rarp, ipv4, ipv6] |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
[...] <mac match='no' srcmacaddr='$MAC'/> [...]
[...]
<mac match='no' srcmacaddr='$MAC'/>
[...]
18.12.10.2. VLAN (802.1Q) 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAC_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| vlan-id | UINT16 (0x0-0xfff, 0 - 4095) | VLAN ID |
| encap-protocol | UINT16 (0x03c-0xfff), 문자열 | 캡슐화된 계층 3 프로토콜 ID, 유효한 문자열은 arp, ipv4, ipv6입니다. |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
18.12.10.3. STP(Spanning Tree Protocol) 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| type | UINT8 | 브릿지 프로토콜 데이터 단위(BICE) 유형 |
| 플래그 | UINT8 | BECDHE 플래그dstmacmask |
| root-priority | UINT16 | 루트 우선 순위 범위 시작 |
| root-priority-hi | UINT16 (0x0-0xfff, 0 - 4095) | 루트 우선 순위 범위 종료 |
| root-address | MAC _ADDRESS | 루트 MAC 주소 |
| root-address-mask | MAC _MASK | 루트 MAC 주소 마스크 |
| 로터 비용 | UINT32 | 루트 경로 비용(시작 기준) |
| root-cost-hi | UINT32 | 루트 경로 비용 범위 종료 |
| sender-priority-hi | UINT16 | 보낸 사람 우선 순위 범위 종료 |
| sender-address | MAC_ADDRESS | B92) 발신자 MAC 주소 |
| sender-address-mask | MAC_MASK | B typical sender MAC 주소 마스크 |
| port | UINT16 | 포트 식별자(범위 시작) |
| port_hi | UINT16 | 포트 식별자 범위 종료 |
| msg-age | UINT16 | 메시지 기간 타이머 (시작 범위) |
| msg-age-hi | UINT16 | 메시지 기간 타이머 범위 종료 |
| max-age-hi | UINT16 | 최대 수명 범위 종료 |
| hello-time | UINT16 | hello 시간 타이머(시작 기준) |
| hello-time-hi | UINT16 | hello 시간 타이머 범위 종료 |
| forward-delay | UINT16 | 전달 지연 (시작 범위) |
| forward-delay-hi | UINT16 | 전달 지연 범위 종료 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
18.12.10.4. ARP/RARP 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAC_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| hwtype | UINT16 | 하드웨어 유형 |
| protocoltype | UINT16 | 프로토콜 유형 |
| opcode | UINT16, STRING | opcode 유효한 문자열: Request, Reply, Request_Reverse, Reply_Reverse, DRARP_Request, DRARP_Reply, DRARP_Error, InARP_Request, ARP_NAK |
| arpsrcmacaddr | MAC_ADDR | ARP/RARP 패킷의 소스 MAC 주소 |
| arpdstmacaddr | MAC _ADDR | ARP/RARP 패킷의 대상 MAC 주소 |
| arpsrcipaddr | IP_ADDR | ARP/RARP 패킷의 소스 IP 주소 |
| arpdstipaddr | IP_ADDR | ARP/RARP 패킷의 대상 IP 주소 |
| gratuitous | 부울 | ELS Indiating whether to check for a gratuitous ARP 패킷 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
18.12.10.5. IPv4 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAC_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| 프로토콜 | UINT8, 문자열 | 계층 4 프로토콜 식별자 프로토콜의 유효한 문자열: tcp, udp, udplite, esp, ah, icmp, igmp, sctp |
| srcportstart | UINT16 | 유효한 소스 포트 범위 시작; 필요한 프로토콜 |
| srcportend | UINT16 | 유효한 소스 포트의 끝 부분; 필요한 프로토콜 |
| dstportstart | UNIT16 | 유효한 대상 포트 범위 시작; 필요한 프로토콜 |
| dstportend | UNIT16 | 유효한 대상 포트의 끝, 필요한 프로토콜 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
18.12.10.6. IPv6 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAC_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| 프로토콜 | UINT8, 문자열 | 계층 4 프로토콜 식별자 프로토콜의 유효한 문자열: tcp, udp, udplite, esp, ah, icmpv6, sctp |
| scrportstart | UNIT16 | 유효한 소스 포트 범위 시작; 필요한 프로토콜 |
| srcportend | UINT16 | 유효한 소스 포트의 끝 부분; 필요한 프로토콜 |
| dstportstart | UNIT16 | 유효한 대상 포트 범위 시작; 필요한 프로토콜 |
| dstportend | UNIT16 | 유효한 대상 포트의 끝, 필요한 프로토콜 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
18.12.10.7. TCP/UDP/SCTP 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| scripto | IP_ADDR | 소스 IP 주소 범위 시작 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| scrportstart | UNIT16 | 유효한 소스 포트 범위 시작; 필요한 프로토콜 |
| srcportend | UINT16 | 유효한 소스 포트의 끝 부분; 필요한 프로토콜 |
| dstportstart | UNIT16 | 유효한 대상 포트 범위 시작; 필요한 프로토콜 |
| dstportend | UNIT16 | 유효한 대상 포트의 끝, 필요한 프로토콜 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| 플래그 | 문자열 | TCP 전용: 마스크/플래그와 함께 마스크/플래그의 포맷은 각각 SYN,ACK,URG,PSH,FIN,RST 또는 NONE 또는 ALL의 쉼표로 구분된 목록일 수 있습니다. |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.10.8. ICMP 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAD_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위 시작 |
| scripto | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| type | UNIT16 | ICMP 유형 |
| 코드 | UNIT16 | ICMP 코드 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.10.9. IGMP, ESP, AH, UDPLITE, 'ALL' 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcmacmask | MAC_MASK | 보낸 사람의 MAC 주소에 적용되는 마스크 |
| dstmacaddr | MAD_ADDR | 대상의 MAC 주소 |
| dstmacmask | MAC_MASK | 대상의 MAC 주소에 적용되는 마스크 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위 시작 |
| scripto | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.10.10. TCP/UDP/SCTP over IPV6 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위 시작 |
| scripto | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| srcportstart | UINT16 | 유효한 소스 포트 범위 시작 |
| srcportend | UINT16 | 유효한 소스 포트 범위 종료 |
| dstportstart | UINT16 | 유효한 대상 포트 범위 시작 |
| dstportend | UINT16 | 유효한 대상 포트 범위 종료 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.10.11. ICMPv6 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위 시작 |
| scripto | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| type | UINT16 | ICMPv6 유형 |
| 코드 | UINT16 | ICMPv6 코드 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.10.12. IPv6를 통한 IGMP, ESP, AH, UDPLITE, 'ALL' 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 이름 | datatype | 정의 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 보낸 사람의 MAC 주소 |
| srcipaddr | IP_ADDR | 소스 IP 주소 |
| srcipmask | IP_MASK | 소스 IP 주소에 적용되는 마스크 |
| dstipaddr | IP_ADDR | 대상 IP 주소 |
| dstipmask | IP_MASK | 대상 IP 주소에 적용되는 마스크 |
| srcipfrom | IP_ADDR | 소스 IP 주소 범위 시작 |
| scripto | IP_ADDR | 소스 IP 주소 범위의 끝 |
| dstipfrom | IP_ADDR | 대상 IP 주소 범위 시작 |
| dstipto | IP_ADDR | 대상 IP 주소 범위의 끝 |
| 주석 | 문자열 | 256자까지 텍스트 문자열 |
| 상태 | 문자열 | 콤마로 구분된 NEW,ESTABLISHED,RELATED,INVALID 또는 NONE |
| ipset | 문자열 | libvirt 외부에서 관리되는 IPSet의 이름입니다. |
| ipsetflags | IPSETFLAGS | IPSet의 플래그입니다. ipset 속성이 필요합니다. |
18.12.11. 고급 필터 구성 주제 링크 복사링크가 클립보드에 복사되었습니다!
18.12.11.1. 연결 추적 링크 복사링크가 클립보드에 복사되었습니다!
예 18.9. TCP 포트 연결을 해제하는 XML 예
18.12.11.2. 연결 수 제한 링크 복사링크가 클립보드에 복사되었습니다!
예 18.10. 연결에 제한을 설정하는 XML 샘플 파일
sysfs 의 시간 제한을 조정하는 것입니다.# echo 3 > /proc/sys/netfilter/nf_conntrack_icmp_timeout. 이 명령은 ICMP 연결 추적 타임아웃을 3초로 설정합니다. 이는 한 번 ping이 종료되면 다른 ping이 3초 후에 시작될 수 있다는 것입니다.
18.12.11.3. 명령줄 툴 링크 복사링크가 클립보드에 복사되었습니다!
nwfilter 로 시작합니다. 다음 명령을 사용할 수 있습니다.
- nwfilter-list : 모든 네트워크 필터의 UUID와 이름을 나열
- nwfilter-define : 새 네트워크 필터를 정의하거나 기존 네트워크 필터를 업데이트합니다(이름을 제공해야 함)
- nwfilter-undefine : 지정된 네트워크 필터를 삭제합니다(이름을 제공해야 함). 현재 사용 중인 네트워크 필터를 삭제하지 마십시오.
- nwfilter-dumpxml : 지정된 네트워크 필터를 표시합니다(이름을 제공해야 함)
- nwfilter-edit : 지정된 네트워크 필터 편집 (이름을 제공해야 함)
18.12.11.4. 기존 네트워크 필터 링크 복사링크가 클립보드에 복사되었습니다!
| 명령 이름 | 설명 |
|---|---|
| no-arp-spoofing | 게스트 가상 머신이 ARP 트래픽을 스푸핑하지 못하도록 합니다. 이 필터는 ARP 요청 및 응답 메시지만 허용하며 해당 패킷에 게스트 가상 머신의 MAC 및 IP 주소를 포함하도록 강제 적용합니다. |
| allow-dhcp | 게스트 가상 머신에서 DHCP를 통해 IP 주소를 요청할 수 있습니다(모든 DHCP 서버에서) |
| allow-dhcp-server | 게스트 가상 머신에서 지정된 DHCP 서버의 IP 주소를 요청할 수 있습니다. DHCP 서버의 점선 IP 주소는 이 필터에 대한 참조로 제공되어야 합니다. 변수의 이름은 DHCPSERVER 여야 합니다. |
| no-ip-spoofing | 게스트 가상 머신이 패킷 내부와 다른 소스 IP 주소로 IP 패킷을 보내지 못하도록 합니다. |
| no-ip-multicast | 게스트 가상 머신이 IP 멀티 캐스트 패킷을 보내지 못하도록 합니다. |
| clean-traffic | MAC, IP 및 ARP 스푸핑을 방지합니다. 이 필터는 다른 여러 필터를 빌딩 블록으로 참조합니다. |
18.12.11.5. 자체 필터 작성 링크 복사링크가 클립보드에 복사되었습니다!
- mac
- STP(범위 트리 프로토콜)
- VLAN(802.1Q)
- ARP, rarp
- ipv4
- ipv6
예 18.11. 사용자 정의 필터 생성
- VM의 인터페이스가 MAC, IP 및 ARP 스푸핑을 사용하지 않음
- VM 인터페이스의 TCP 포트 22 및 80만 열기
- VM이 인터페이스에서 ping 트래픽을 보낼 수 있지만 인터페이스에서 VM을 ping하도록 허용하지 않습니다.
- VM에서 DNS 조회(UDP to port 53)를 수행할 수 있습니다.
트래픽 네트워크 필터에 의해 스푸핑을 방지해야 하므로 이 작업을 수행하는 방법은 사용자 정의 필터에서 참조하는 것입니다.
test 이고 필터를 연결할 인터페이스가 eth0 이라고 가정하면 test- eth0 이라는 필터가 생성됩니다.
18.12.11.6. 사용자 정의 필터 샘플 링크 복사링크가 클립보드에 복사되었습니다!
예 18.12. 네트워크 인터페이스 설명을 위한 XML 샘플
<!- - enable outgoing ICMP echo requests- ->
<rule action='accept' direction='out'>
<icmp type='8'/>
</rule>
<!- - enable outgoing ICMP echo requests- ->
<rule action='accept' direction='out'>
<icmp type='8'/>
</rule>
<!- - enable incoming ICMP echo replies- ->
<rule action='accept' direction='in'>
<icmp type='0'/>
</rule>
<!- - enable incoming ICMP echo replies- ->
<rule action='accept' direction='in'>
<icmp type='0'/>
</rule>
예 18.13. 두 번째 예제 사용자 정의 필터
- 게스트 가상 머신의 인터페이스가 MAC, IP 및 ARP 스푸핑을 사용하지 않도록 합니다.
- 게스트 가상 머신 인터페이스에서 TCP 포트 22 및 80만 열기
- 게스트 가상 머신이 인터페이스에서 ping 트래픽을 보낼 수 있지만 인터페이스에서 게스트 가상 머신을 ping할 수 없습니다.
- 게스트 가상 머신이 DNS 조회를 수행할 수 있음 (UDP ~ 53)
- 게스트 가상 머신 내부에서 실행할 수 있도록 ftp 서버(활성 모드)를 활성화합니다.
- #modprobe nf_conntrack_ftp - 사용 가능한 경우 OR
- #modprobe ip_conntrack_ftp 를 위의 코드를 사용할 수 없는 경우
18.12.12. 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 게스트 가상 시스템의 최상위 수준 필터에서 참조하는 전체 필터 트리도 대상 호스트 물리적 시스템에서 사용할 수 있는 경우에만 VM 마이그레이션이 지원됩니다. 예를 들어 네트워크 필터
정리-traffic는 모든 libvirt 설치에서 사용할 수 있으므로 이 필터를 참조하는 게스트 가상 머신의 마이그레이션이 활성화되어야 합니다. 버전 호환성을 보장하기 위해 패키지를 정기적으로 업데이트하여 최신 버전의 libvirt를 사용하고 있는지 확인하십시오. - 인터페이스와 연결된 네트워크 트래픽 필터를 손실하지 않으려면 버전 0.8.1 이상을 설치하는 경우 마이그레이션이 수행되어야 합니다.
- VLAN(802.1Q) 패킷은 게스트 가상 머신에서 전송되는 경우 rp, rarp, ipv4 및 ipv6에 대한 프로토콜 ID 규칙으로 필터링할 수 없습니다. 프로토콜 ID, MAC 및 VLAN으로만 필터링할 수 있습니다. 따라서 예제 필터 clean-traffic 예 18.1. “네트워크 필터링의 예” 가 예상대로 작동하지 않습니다.
18.13. 터널 생성 링크 복사링크가 클립보드에 복사되었습니다!
18.13.1. 멀티 캐스트 터널 생성 링크 복사링크가 클립보드에 복사되었습니다!
<devices> 요소에 다음 XML 세부 정보를 지정합니다.
그림 18.28. 멀티 캐스트 터널 XML 예
18.13.2. TCP 터널 생성 링크 복사링크가 클립보드에 복사되었습니다!
<devices> 요소에 배치합니다.
그림 18.29. TCP 터널 도메인 XMl 예
18.14. vLAN 태그 설정 링크 복사링크가 클립보드에 복사되었습니다!
그림 18.30. v setting VLAN 태그(지원되는 네트워크 유형에서만)
<vlan> 요소에서는 이 네트워크를 사용하여 모든 게스트의 트래픽에 적용되도록 하나 이상의 vlan 태그를 지정할 수 있습니다. (openvswitch 및 type='hostdev' SR-IOV 네트워크는 게스트 트래픽의 투명 VLAN 태그 지정을 지원합니다. 표준 Linux 브리지 및 libvirt의 자체 가상 네트워크를 포함한 기타 모든 기능은 지원하지 않습니다. 802.1QBH(vn-link) 및 802.1Qbg(VEPA) 스위치는 특정 vlans에 게스트 트래픽을 태그하는 고유한 방법( libvirt 제외)을 제공합니다. tag 속성은 사용할 vlan 태그를 지정합니다. 네트워크에 둘 이상의 <vlan> 요소가 정의되어 있는 경우 사용자가 지정된 모든 태그를 사용하여 VLAN 트렁크를 수행하는 것으로 가정합니다. 단일 태그로 VLAN 트렁크를 원하는 경우 선택적 속성 trunk='yes'를 VLAN 요소에 추가할 수 있습니다.
<태그> 요소에서 선택적 nativeMode 특성을 사용합니다. nativeMode는 'tagged' 또는 'untagged'로 설정할 수 있습니다. 요소의 id 속성은 기본 vlan을 설정합니다.
<VLAN> 요소는 <portgroup> 요소와 도메인의 <인터페이스> 요소에 직접 지정할 수도 있습니다. vlan 태그가 여러 위치에 지정된 경우 인터페이스의 설정이 우선한 다음 <인터페이스> 구성에서 선택한 <portgroup> 의 설정이 우선합니다. <네트워크> 의 <vlan> 은 <포트 그룹> 또는 <인터페이스에> 제공되지 않은 경우에만 선택됩니다.
18.15. 가상 네트워크에 QoS 적용 링크 복사링크가 클립보드에 복사되었습니다!
19장. qemu-kvm 명령, 플래그 및 인수 링크 복사링크가 클립보드에 복사되었습니다!
19.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
허용 목록 형식
- <name > - 구문 설명에 사용된 경우 이 문자열을 사용자 정의 값으로 교체해야 합니다.
- [a|b|c] - 구문 설명에 사용된 경우 |로 구분된 문자열 중 하나만 사용됩니다.
- 주석이 없으면 가능한 모든 값과 함께 옵션이 지원됩니다.
19.2. 기본 옵션 링크 복사링크가 클립보드에 복사되었습니다!
에뮬레이션된 시스템
프로세서 유형
- Opteron_G5 - AMD Opteron 63xx 클래스 CPU
- Opteron_G4 - AMD Opteron 62xx 클래스 CPU
- Opteron_G3 - AMD Opteron 23xx(AMD Opteron Gen 3)
- Opteron_G2 - AMD Opteron 22xx(AMD Opteron Gen 2)
- Opteron_G1 - AMD Opteron240(AMD Opteron Gen 1)
- Westmere - 서부 E56xx/L56xx/X56xx (Nehalem-C)
- Haswell - Intel Core Processor (Haswell)
- SandyBridge - Intel Xeon E312xx (Sandy Bridge)
- Nehalem - Intel Core i7 9xx (Nehalem Class Core i7)
- Penryn - Intel Core 2 Duo P9xxx (Penryn Class Core 2)
- Conroe - Intel Celeron_4x0 (Conroe/Merom Class Core 2)
- cpu64-rhel5 - Red Hat Enterprise Linux 5에서 QEMU 가상 CPU 버전 지원
- cpu64-rhel6 - Red Hat Enterprise Linux 6 지원 QEMU 가상 CPU 버전
- default - special 옵션은 위의 기본 옵션을 사용합니다.
프로세서 토폴로지
NUMA 시스템
메모리 크기
키보드 레이아웃
게스트 이름
게스트 UUID
19.3. 디스크 옵션 링크 복사링크가 클립보드에 복사되었습니다!
일반 드라이브
- readonly[on|off]
- werror[enospc|report|stop|ignore]
- rerror[report|stop|ignore]
- id=<id>드라이브 ID에는 if=none에 대한 다음과 같은 제한이 있습니다.
- IDE 디스크에는 다음과 같은 형식의 <id>가 있어야 합니다. drive-ide0-<BUS>-<UNIT>올바른 형식의 예:-drive if=none,id=drive-ide0-<BUS>-<UNIT>,.. -device ide-ide,drive=ide0-<BUS>-<UNIT>,bus=ide.<BUS>,unit=<UNIT>
- file=<file><file> 값은 다음 규칙을 사용하여 구문 분석됩니다.
- 플로피 장치를 <file>으로 전달하는 것은 지원되지 않습니다.
- cd-rom 장치를 <file>으로 전달하는 것은 cdrom 미디어 유형(media=cdrom)에서만 지원되며, IDE 드라이브( if=ide 또는 if=none + -device ide-drive)로만 지원됩니다.
- <file>이 블록이나 문자 장치가 없는 경우 ':'을 포함하지 않아야 합니다.
- if=<interface>다음 인터페이스가 지원됩니다. none, ide, virtio, 플로피.
- index=<index>
- media=<media>
- cache=<cache>지원되는 값: none, writeback 또는 writethrough.
- copy-on-read=[on|off]
- snapshot=[yes|no]
- 직렬 =< serial>
- aio=<aio>
- format=<format>이 옵션은 필수가 아니며 생략할 수 있습니다. 그러나 보안 위험을 나타내므로 원시 이미지에는 권장되지 않습니다. 지원되는 형식은 다음과 같습니다.
- qcow2
- raw
부팅 옵션
스냅샷 모드
19.4. 표시 옵션 링크 복사링크가 클립보드에 복사되었습니다!
그래픽 비활성화
VGA 카드 에뮬레이션
- Cirrus - Cirrus logic GD5446 비디오 카드
- STD - Bochs VBE 확장이 포함된 표준 VGA 카드.
- QXL - Spice paravirtual 카드.
- none - VGA 카드 비활성화.
VNC 디스플레이
- [<host>]:<port>
- unix:<path>
- share[allow-exclusive|force-shared|ignore]
- none - 다른 옵션이 지정되지 않은 상태에서 지원됩니다.
- to=<port>
- reverse
- 암호
- tls
- X 509 =</path/to/certificate/dir> - tls 가 지정될 때 지원됨
- X 509verify =</path/to/certificate/dir> - tls 가 지정될 때 지원됨
- sasl
- acl
SPICE 데스크탑
- port=<number>
- addr=<addr>
- ipv4ipv6
- password=<secret>
- disable-ticketing
- disable-copy-paste
- tls-port=<number>
- x509-dir=</path/to/certificate/dir>
- x509-key-file=<file>x509-key-password=<file>x509-cert-file=<file>x509-cacert-file=<file>x509-dh-key-file=<file>
- tls-cipher=<list>
- tls-channel[main|display|cursor|inputs|record|playback]plaintext-channel[main|display|cursor|inputs|record|playback]
- image-compression=<compress>
- jpeg-wan-compression=<value>zlib-glz-wan-compression=<value>
- streaming-video=[off|all|filter]
- agent-mouse=[on|off]
- playback-compression=[on|off]
- seamless-migratio=[on|off]
19.5. 네트워크 옵션 링크 복사링크가 클립보드에 복사되었습니다!
TAP 네트워크
- ifname
- fd
- script
- downscript
- sndbuf
- vnet_hdr
- vhost
- vhostfd
- vhostforce
19.6. 장치 옵션 링크 복사링크가 클립보드에 복사되었습니다!
일반 장치
- id
- bus
- pci-assign
- host
- bootindex
- configfd
- addr
- rombar
- romfile
- Multifunction
장치에 여러 기능이 있는 경우 해당 장치를 모두 동일한 게스트에 할당해야 합니다. - rtl8139
- mac
- netdev
- bootindex
- addr
- e1000
- mac
- netdev
- bootindex
- addr
- virtio-net-pci
- ioeventfd
- vectors
- 간접
- event_idx
- csum
- guest_csum
- gso
- guest_tso4
- guest_tso6
- guest_ecn
- guest_ufo
- host_tso4
- host_tso6
- host_ecn
- host_ufo
- mrg_rxbuf
- status
- ctrl_vq
- ctrl_rx
- ctrl_vlan
- ctrl_rx_extra
- mac
- netdev
- bootindex
- x-txtimer
- x-txburst
- tx
- addr
- qxl
- ram_size
- vram_size
- 버전
- cmdlog
- addr
- ide-drive
- 단위
- 드라이브
- physical_block_size
- bootindex
- ver
- wwn
- virtio-blk-pci
- 클래스
- 드라이브
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ioeventfd
- vectors
- indirect_desc
- event_idx
- scsi
- addr
- virtio-scsi-pci - 6.3의 기술 프리뷰는 6.4 이후 지원됩니다.Windows 게스트의 경우 기술 프리뷰인 Windows Server 2003은 6.5부터 더 이상 지원되지 않습니다. 그러나 Windows Server 2008 및 2012 및 Windows 데스크탑 7 및 8은 6.5 이후 완전히 지원됩니다.
- vectors
- indirect_desc
- event_idx
- num_queues
- addr
- isa-debugcon
- isa-serial
- index
- iobase
- IRQ
- chardev
- virtserialport
- nr
- chardev
- name
- virtconsole
- nr
- chardev
- name
- virtio-serial-pci
- vectors
- 클래스
- indirect_desc
- event_idx
- max_ports
- flow_control
- addr
- ES1370
- addr
- AC97
- addr
- intel-hda
- addr
- hda-duplex
- cabf
- hda-micro
- cabf
- hda-output
- cabf
- i6300esb
- addr
- ib700 - 속성이 없음
- SGA - 속성이 없음
- virtio-balloon-pci
- indirect_desc
- event_idx
- addr
- usb-tablet
- migrate
- port
- usb-kbd
- migrate
- port
- usb-mouse
- migrate
- port
- USB-ccid - 6.2 이후 지원
- port
- 슬롯
- USB-호스트 - 6.2 이후 기술 프리뷰
- hostbus
- hostaddr
- hostport
- vendorID
- ProductID
- isobufs
- port
- USB-hub - 6.2에서 지원
- port
- USB-ehci - 6.2 이후 기술 프리뷰
- freq
- maxframes
- port
- USB-storage - 6.2 이후 기술 프리뷰
- 드라이브
- bootindex
- serial
- removable
- port
- USB-redir - 6.4에서 지원되는 6.3 기술 프리뷰
- chardev
- filter
- SCSI-cd - 6.3의 기술 프리뷰, 6.4 이후 지원
- 드라이브
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- LUN
- channel-scsi
- wwn
- SCSI-hd - 6.4에서 지원되는 6.3의 기술 프리뷰
- 드라이브
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- LUN
- channel-scsi
- wwn
- SCSI-block - 6.4 이후 지원되는 6.3의 기술 프리뷰
- 드라이브
- bootindex
- SCSI-disk - 6.3의 기술 프리뷰
- drive=drive
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- LUN
- channel-scsi
- wwn
- piix3-usb-uhci
- piix4-usb-uhci
- ccid-card-passthru
글로벌 장치 설정
- isa-fdc
- driveA
- driveB
- bootindexA
- bootindexB
- qxl-vga
- ram_size
- vram_size
- 버전
- cmdlog
- addr
문자 장치
- null,id=<id> - null 장치
- socket,id=<id>,port=<port>[,host=<host>][,ipv4][,ipv6][,nodelay][,server][,nowait][,telnet] - tcp socket
- socket,id=<id>,path=<path>[,server][,nowait][,telnet] - unix socket
- 파일,id=<id>,path=<path> - 파일에 trafit.
- stdio,id=<id> - standard i/o
- spicevmc,id=<id>,name=<name> - spice 채널
USB 활성화
19.7. Linux/Multiboot Boot 링크 복사링크가 클립보드에 복사되었습니다!
커널 파일
RAM 디스크
명령줄 매개 변수
19.8. 전문가 옵션 링크 복사링크가 클립보드에 복사되었습니다!
KVM 가상화
커널 모드 PIT Reinjection 비활성화
no shutdown
재부팅 없음
직렬 포트, 모니터, QMP
- stdio - 표준 입력/출력
- null - null 장치
- file:<filename> - 파일로 출력됩니다.
- TCP:[<host>]:<port>[,server][,nowait][,nodelay] - TCP Net console
- Unix:<path>[,server][,nowait] - Unix 도메인 소켓.
- Mon:<dev_string> - 위의 모든 장치도 멀티플렉스 모니터에 사용됩니다.
- None - disable, -serial에만 유효합니다.
- chardev:<id> - -chardev로 생성된 문자 장치입니다.
리디렉션 모니터링
수동 CPU 시작
RTC
Watchdog
워치독 재작업
게스트 메모리 백업
SMBIOS Entry
19.9. 도움말 및 정보 옵션 링크 복사링크가 클립보드에 복사되었습니다!
help
버전
오디오 도움말
19.10. 기타 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Migration
기본 설정 없음
장치 설정 파일
로드된 저장 상태
20장. 도메인 XML 조작 링크 복사링크가 클립보드에 복사되었습니다!
<도메인> 요소를 나타냅니다. 도메인 XML에는 두 가지 속성이 있습니다. type 은 도메인 실행에 사용되는 하이퍼바이저를 지정합니다. 허용되는 값은 드라이버별로 고유하지만 KVM 등을 포함합니다. ID 는 실행 중인 게스트 가상 머신의 고유 정수 식별자입니다. 비활성 머신에는 id 값이 없습니다. 이 장의 섹션은 도메인 XML의 구성 요소를 다룹니다. 이 설명서의 추가 장에서는 도메인 XML을 조작해야 할 때 이 장을 참조할 수 있습니다.
20.1. 일반 정보 및 메타데이터 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.1. 도메인 XML 메타데이터
| element | 설명 |
|---|---|
<name> | 가상 머신의 이름을 할당합니다. 이 이름은 alpha-numeric 문자로만 구성되어야 하며 단일 호스트 물리적 시스템의 범위 내에서 고유해야 합니다. 종종 영구 구성 파일을 저장하기 위한 파일 이름을 형성하는 데 사용됩니다. |
<uuid> | 가상 시스템의 전역적으로 고유한 식별자를 할당합니다. 형식은 RFC 4122 호환, eg 3e3fce45-4f53-4fa7-bb32-11f34168b82b 여야 합니다. 새 시스템을 정의/생성할 때 생략된 경우 임의의 UUID가 생성됩니다. UUID에 sysinfo 사양을 제공할 수도 있습니다. |
<title> | 제목: 도메인에 대한 간단한 설명을 위한 공간이 생성됩니다. 제목에는 줄 바꿈이 포함되어 있지 않습니다. |
<description> | 제목과 달리 이 데이터는 libvirt에서 사용하지 않으며 사용자가 표시하려는 정보를 포함할 수 있습니다. |
<metadata> | 애플리케이션에서 사용자 지정 메타데이터를 XML 노드/트리 형식으로 저장하는 데 사용할 수 있습니다. 애플리케이션에서는 네임스페이스당 최상위 요소만 있는 XML 노드/트리에서 사용자 지정 네임스페이스를 사용해야 합니다(애플리케이션에 구조가 필요한 경우 네임스페이스 요소에 하위 요소가 있어야 함) |
20.2. 운영 체제 부팅 링크 복사링크가 클립보드에 복사되었습니다!
20.2.1. BIOS Boot loader 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.2. BIOS 부트 로더 도메인 XML
| element | 설명 |
|---|---|
<type> | 게스트 가상 머신에서 부팅할 운영 체제 유형을 지정합니다. H VM 은 OS가 베어 메탈에서 실행되도록 설계된 것이므로 완전한 가상화가 필요하다는 것을 나타냅니다. Linux 는 Xen 3 하이퍼바이저 게스트 ABI를 지원하는 OS를 나타냅니다. arch 는 CPU 아키텍처를 가상화에 지정하는 것과 시스템 유형을 참조하는 시스템 등 두 가지 선택적 특성도 있습니다. 자세한 내용은 드라이버 기능을 참조하십시오. |
<Loader> | 도메인 생성 프로세스를 지원하는 데 사용되는 펌웨어 부분을 나타냅니다. Xen 완전히 가상화된 도메인 사용에만 필요합니다. |
<boot> | fd,hd,cdrom 또는 network 값 중 하나를 사용하고 다음 부팅 장치를 지정하는 데 사용됩니다. 부팅 요소는 차례로 시도하도록 부팅 장치의 우선 순위 목록을 설정하기 위해 여러 번 반복할 수 있습니다. 동일한 유형의 여러 장치가 버스 순서를 유지하면서 목표에 따라 정렬됩니다. 도메인을 정의한 후 libvirt에서 반환된 XML 구성(virDomainGetXMLDesc)는 정렬된 순서로 장치를 나열합니다. 정렬되면 첫 번째 장치가 부팅 가능한 것으로 표시됩니다. 자세한 내용은 BIOS 부트로더 를 참조하십시오. |
<bootmenu> | 게스트 가상 머신 시작 시 대화형 부팅 메뉴 프롬프트를 활성화할지 여부를 결정합니다. enable 속성은 yes 또는 no 일 수 있습니다. 지정하지 않으면 하이퍼바이저 기본값이 사용됩니다. |
<SMBIOS> | 게스트 가상 시스템에서 SMBIOS 정보를 표시하는 방법을 결정합니다. 호스트물리적 시스템의 SMBIOS 값에서 UUID를 제외한 모든 블록 0 및 Block 1을 에뮬레이션 하여 mode 속성을 지정해야 합니다. virConnectGetSysinfo 호출을 사용하여 복사되는 값을 확인할 수 있습니다. 지정하지 않으면 하이퍼바이저 기본 설정이 사용됩니다. |
<BIOS> | 이 요소에는 가능한 값이 yes 또는 no 인 attribute useserial 이 있습니다. 이 특성은 직렬 포트에서 BIOS 메시지를 볼 수 있는 직렬 그래픽 어댑터를 활성화하거나 비활성화합니다. 따라서 직렬 포트가 정의되어 있어야 합니다. 또 다른 속성이 있습니다. rebootTimeout 은 부팅이 실패하는 경우 게스트 가상 머신이 다시 부팅을 시작하는지 여부와 이후에 부팅을 시작하는지 여부를 제어합니다. 값은 밀리초 단위이며 최대 65535 이고 특수 값 -1 은 재부팅을 비활성화합니다. |
20.2.2. 호스트 물리적 시스템 부팅 로더 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.3. 호스트 물리적 시스템 부트 로더 도메인 XML
... <bootloader>/usr/bin/pygrub</bootloader> <bootloader_args>--append single</bootloader_args> ...
...
<bootloader>/usr/bin/pygrub</bootloader>
<bootloader_args>--append single</bootloader_args>
...
| element | 설명 |
|---|---|
<bootloader> | 호스트 물리적 머신 OS에서 실행 가능한 부트 로더에 대한 정규화된 경로를 제공합니다. 이 부트 로더는 부팅할 커널을 선택합니다. 부트 로더의 필요한 출력은 사용 중인 하이퍼바이저에 따라 다릅니다. |
<bootloader_args> | 명령줄 인수를 부트 로더에 전달할 수 있음(선택 사항) |
20.2.3. 직접 커널 부팅 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.4. 커널 부팅 직접
| element | 설명 |
|---|---|
<type> | BIOS 부팅 섹션에 설명된 것과 동일합니다. |
<Loader> | BIOS 부팅 섹션에 설명된 것과 동일합니다. |
<kernel> | 호스트 물리적 머신 OS에서 커널 이미지의 정규화된 경로를 지정합니다. |
<initrd> | 호스트 물리적 머신 OS의 (선택 사항) ramdisk 이미지의 정규화된 경로를 지정합니다. |
<cmdline> | 부팅 시 커널(또는 설치 프로그램)에 전달할 인수를 지정합니다. 이는 종종 대체 기본 콘솔(예: 직렬 포트) 또는 설치 미디어 소스 / kickstart 파일을 지정하는 데 사용됩니다. |
20.3. SMBIOS 시스템 정보 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.5. SMBIOS 시스템 정보
<sysinfo> 요소에는 하위 요소의 레이아웃을 결정하는 필수 특성 유형이 있으며 다음과 같이 정의할 수 있습니다.
SMBIOS- 하위 요소가 특정 SMBIOS 값을 호출하면<os>요소의 하위 요소와 함께 사용되는 경우 게스트 가상 머신에 영향을 미칩니다. sysinfo의 각 하위 요소 이름은 SMBIOS 블록이며 이러한 요소 내에 블록 내의 필드를 설명하는 항목 요소 목록이 될 수 있습니다. 다음 블록 및 항목이 인식됩니다.BIOS- 이는 블록 0의 SMBIOS이며공급업체,버전,날짜및릴리즈에서가져온 입력 이름이 제공됩니다.<시스템>- 이는 SMBIOS 블록 1이며,제조업체,제품, 버전 ,버전,직렬,sku,family에서 가져온 입력 이름이 있습니다.uuid항목이 최상위 uuid 요소와 함께 제공되는 경우 두 값이 일치해야 합니다.
20.4. CPU 할당 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.6. CPU 할당
<cpu> 요소는 게스트 가상 머신 운영 체제에 할당된 최대 가상 CPU(vCPU) 수를 1에서 하이퍼바이저에서 지원하는 최대값이어야 합니다. 이 요소에는 도메인 프로세스 및 가상 CPU를 기본적으로 고정할 수 있는 물리적 CPU 번호의 쉼표로 구분된 목록인 선택적 cpuset 속성이 포함될 수 있습니다.
cputune 특성을 사용하여 도메인 프로세스 및 가상 CPU의 고정 정책을 별도로 지정할 수 있습니다. emulatorpin 속성이 <cputune> 에 지정되면 <vcpu> 에서 지정한 cpuset 값이 무시됩니다.
vcpupin 에 대한 값을 설정한 가상 CPU로 인해 cpuset 설정이 무시됩니다. vcpupin 이 지정되지 않은 가상 CPU는 cpuset 에 의해 지정된 물리적 CPU에 고정됩니다. cpuset 목록의 각 요소는 단일 CPU 번호, CPU 번호 범위 또는 캐럿(^) 다음에 이전 범위에서 제외할 CPU 번호입니다. current 속성을 사용하여 최대 가상 CPU 수를 활성화할지 여부를 지정할 수 있습니다.
배치 를 사용하여 도메인 프로세스의 CPU 배치 모드를 지정할 수 있습니다. 배치 를 정적 또는 auto 로 설정할 수 있습니다. <vcpu placement='auto'> 를 설정하면 시스템은 numad를 쿼리하고 <numatune> 태그에 지정된 설정을 사용하고 <vcpu> 의 다른 설정을 무시합니다. <vcpu placement='static'> 을 설정하면 시스템은 <numatune> 의 설정 대신 <vcpu 배치> 태그에 지정된 설정을 사용합니다.
20.5. CPU 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.7. CPU 튜닝
| element | 설명 |
|---|---|
<cputune> | 도메인의 CPU 튜닝 가능 매개변수에 대한 세부 정보를 제공합니다. 이는 선택 사항입니다. |
<vcpupin> | 도메인의 VCPU가 고정되는 호스트 물리적 시스템의 물리적 CPU를 지정합니다. 이 값을 생략하고 <vcpu> 요소의 cpuset 속성이 지정되지 않은 경우 vCPU는 기본적으로 모든 물리적 CPU에 고정됩니다. 여기에는 두 개의 필수 속성이 포함되어 있습니다. vcpu 는 id 를 지정하고 cpuset 속성은 <vcpu> 요소의 cpuset 속성과 동일합니다. |
<emulatorpin> | vcpu를 포함하지 않는 도메인의 하위 집합인 호스트 물리적 시스템 CPU, "emulator" 중 어느 것이 고정되는지를 지정합니다. 이 값을 생략하고 요소 <vcpu> 의 특성 cpuset 가 지정되지 않은 경우 기본적으로 모든 물리적 CPU에 "emulator"가 고정되어 있습니다. 고정할 물리적 CPU를 지정하는 cpuset 라는 하나의 필수 특성이 포함되어 있습니다. 요소 <vcpu> 의 특성 배치 자동 경우 emulatorpin 은 허용되지 않습니다. |
<공유> | 도메인의 비례 가중치 공유를 지정합니다. 이 값을 생략하면 운영 체제에 고유한 기본값이 설정됩니다. 값에 대한 단위가 없는 경우 다른 게스트 가상 시스템의 설정을 기준으로 계산됩니다. 예를 들어 게스트 가상 시스템이 2048로 구성된 경우 값이 1024인 게스트 가상 머신의 처리 시간이 두 배 증가합니다. |
<기간> | 적용 간격을 마이크로초로 지정합니다. 기간을 사용하여 각 도메인의 vcpu는 런타임 시 할당된 할당량보다 더 많이 사용할 수 없습니다. 이 값은 다음 범위 내에 있어야 합니다: 1000-1000000. 값이 0 인 period >는 값이 없음을 의미합니다. |
<quota> | 마이크로초에 허용되는 최대 대역폭을 지정합니다. 할당량 을 음수 값으로 사용하는 도메인은 도메인에 무한 대역폭이 있으며 대역폭이 제어되지 않음을 나타냅니다. 값은1000 - 18446744073709551 또는 0 미만이어야 합니다. 값이 0 인 할당량 은 값이 없음을 의미합니다. 이 기능을 사용하여 모든 vcpu가 동일한 속도로 실행되도록 할 수 있습니다. |
<emulator_period> | 적용 간격을 마이크로초로 지정합니다. <emulator_period> 내에서 도메인의 에뮬레이터 스레드(vcpus를 제외하고) 에뮬레이터 스레드는 런타임의 <emulator_quota> 값 이상을 사용할 수 없습니다. <emulator_period> 값은 다음 범위에 있어야 합니다. 1000 - 1000000. 값이 0 인 <emulator_period> 는 값이 없음을 의미합니다. |
<emulator_quota> | 도메인의 에뮬레이터 스레드(vcpu 제외)에 대해 허용되는 최대 대역폭을 지정합니다. <에뮬레이터_quota> 값이 음수인 도메인은 도메인에 에뮬레이터 스레드(vcpus 제외)에 대한 무한 대역폭이 있으며 대역폭이 제어되지 않음을 나타냅니다. 값은 1000 - 18446744073709551 또는 0 미만이어야 합니다. 값이 0 인 <emulator_quota> 는 값이 없음을 의미합니다. |
20.6. 메모리 백업 링크 복사링크가 클립보드에 복사되었습니다!
<memoryBacking> 요소에는 <hugepages> 요소가 설정될 수 있습니다. 이는 하이퍼바이저에 일반 기본 페이지 크기 대신 hugepages를 사용하여 메모리를 할당해야 함을 나타냅니다.
그림 20.8. 메모리 백업
20.7. 메모리 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.9. 메모리 튜닝
| element | 설명 |
|---|---|
<memtune> | 도메인의 메모리 조정 가능한 매개변수에 대한 세부 정보를 제공합니다. 이 값을 생략하면 기본값으로 OS에서 제공하는 기본값으로 설정됩니다. 이 매개변수는 제한을 설정할 때 전체 프로세스에 적용되므로 게스트 가상 머신 RAM, 게스트 가상 머신 비디오 RAM을 추가하고 일부 메모리 오버헤드를 허용해야 합니다. 마지막 부분은 하나의 평가판과 오류를 결정하기가 어렵습니다. 각 튜닝 가능 항목의 경우 <메모리> 와 동일한 값을 사용하여 입력에 있는 단위를 지정할 수 있습니다. 이전 버전과의 호환성을 위해 출력은 항상 KiB 단위입니다. |
<hard_limit> | 게스트 가상 머신에서 사용할 수 있는 최대 메모리입니다. 이 값의 단위는 kibibytes (24 바이트의 블록)로 표현됩니다. |
<soft_limit> | 이는 메모리 경합 중에 시행되는 메모리 제한입니다. 이 값의 단위는 kibibytes (24 바이트의 블록)로 표현됩니다. |
<swap_hard_limit> | 이는 게스트 가상 머신에서 사용할 수 있는 최대 메모리 및 스왑 메모리입니다. 이 값의 단위는 kibibytes (24바이트 블록)로 표시됩니다. 이 값은 <hard_limit> 값보다 많이 제공해야 합니다. |
<min_guarantee> | 이는 게스트 가상 머신에 대해 보장된 최소 메모리 할당입니다. 이 값의 단위는 kibibytes (24 바이트의 블록)로 표현됩니다. |
20.8. NUMA 노드 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.10. NUMA 노드 튜닝
| element | 설명 |
|---|---|
<numatune> | 도메인 프로세스에 대한 NUMA 정책을 제어하여 NUMA 호스트 물리적 시스템의 성능을 튜닝하는 방법에 대한 세부 정보를 제공합니다. |
<memory> | NUMA 호스트 물리적 시스템에서 도메인 프로세스에 메모리를 할당하는 방법을 지정합니다. 여기에는 몇 가지 선택적 속성이 포함되어 있습니다. 특성 모드는 interleave,strict 또는 preferred 중 하나입니다. 값을 지정하지 않으면 기본값은 strict 입니다. 특성 nodeset 은 <vcpu> 요소의 cpuset 속성과 동일한 구문을 사용하여 NUMA 노드를 지정합니다. 특성 배치 를 사용하여 도메인 프로세스의 메모리 배치 모드를 나타낼 수 있습니다. 값은 static 또는 auto 일 수 있습니다. 특성 <nodeset> 이 지정된 경우 기본값은 <vcpu> 또는 정적 의 <배치> 로 설정됩니다. Auto 는 도메인 프로세스에서 numad 쿼리에서 반환된 권고 노드 집합의 메모리만 할당하며 특성 노드 집합의 값은 지정된 경우 무시됩니다. vcpu 의 속성 배치 가 자동 이고, 특성 <numatune> 이 지정되지 않은 경우 <배치> 자동 및 모드 Strict인 기본 numatune이 암시적으로 추가됩니다. |
20.9. 블록 I/O 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.11. 블록 I/O 튜닝
| element | 설명 |
|---|---|
<blkiotune> | 이 선택적 요소는 도메인의 Blkio cgroup 조정 가능 매개변수를 조정하는 기능을 제공합니다. 이 값을 생략하면 기본값으로 OS에서 제공하는 기본값으로 설정됩니다. |
<weight> | 이 선택적 가중치 요소는 게스트 가상 머신의 전체 I/O 가중치입니다. 값은 100~1000 범위 내에 있어야 합니다. |
<device> | 도메인에는 도메인에서 사용 중인 각 호스트 물리적 시스템 블록 <장치에> 대한 가중치를 추가로 조정하는 여러 장치 요소가 있을 수 있습니다. 여러 게스트 가상 머신 디스크는 단일 호스트 물리적 시스템 블록 장치를 공유할 수 있습니다. 또한 동일한 호스트 물리적 머신 파일 시스템 내의 파일에 의해 지원되므로 이 튜닝 매개 변수는 각 게스트 가상 머신 디스크 장치(단일 <디스크에>적용할 수 있는 <iotune> 요소에 제한) 대신 글로벌 도메인 수준에 있습니다. 각 장치 요소에는 두 개의 필수 하위 요소, 장치의 절대 경로를 설명하는 경로, 장치의 절대 경로를 설명하는 가중치, 허용 가능한 범위 100~1000이 있는 해당 장치의 상대적 가중치가 있습니다. <> <> |
20.10. 리소스 파티셔닝 링크 복사링크가 클립보드에 복사되었습니다!
<리소스 요소는 리소스> 파티션과 관련된 구성을 함께 그룹화합니다. 현재 콘텐츠가 도메인을 배치할 리소스 파티션의 경로를 정의하는 하위 요소 파티션을 지원합니다. 파티션이 나열되어 있지 않으면 도메인이 기본 파티션에 배치됩니다. 게스트 가상 머신을 시작하기 전에 앱이/관리자로 파티션이 존재하는지 확인해야 합니다. (하이퍼바이저 특정) 기본 파티션만 기본적으로 존재한다고 가정할 수 있습니다.
그림 20.12. 리소스 파티션 설정
<resource>
<partition>/virtualmachines/production</partition>
</resource>
<resource>
<partition>/virtualmachines/production</partition>
</resource>
20.11. CPU 모델 및 토폴로지 링크 복사링크가 클립보드에 복사되었습니다!
qemu32 및 qemu64 는 기본 CPU 모델이지만 다른 모델(추가 기능 포함)을 사용할 수 있습니다. 각 모델 및 해당 토폴로지는 도메인 XML의 다음 요소를 사용하여 지정됩니다.
그림 20.13. CPU 모델 및 토폴로지 예 1
그림 20.14. CPU 모델 및 토폴로지 예 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
<cpu mode='host-model'>
<model fallback='forbid'/>
<topology sockets='1' cores='2' threads='1'/>
</cpu>
그림 20.15. CPU 모델 및 토폴로지 예 3
<cpu mode='host-passthrough'/>
<cpu mode='host-passthrough'/>
그림 20.16. CPU 모델 및 토폴로지 예 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
<cpu>
<topology sockets='1' cores='2' threads='1'/>
</cpu>
| element | 설명 |
|---|---|
<cpu> | 이 요소에는 vCPU 기능 세트에 대한 모든 매개변수가 포함되어 있습니다. |
<match> | <cpu> 요소에 표시된 기능이 사용 가능한 vCPU와 얼마나 밀접하게 일치해야 하는지 지정합니다. <topology> 가 <cpu> 요소에 중첩된 유일한 요소인 경우 match 특성을 생략할 수 있습니다. match 속성에 사용 가능한 값은 다음과 같습니다.
<cpu> 요소에서 match 속성이 생략되면 기본 설정 match='exact' 가 사용됩니다. |
<mode> | 이 선택적 특성은 게스트 가상 머신 CPU를 호스트 물리적 머신 CPU에 최대한 가깝게 구성하는 데 더 쉽게 사용할 수 있습니다. mode 특성에 가능한 값은 다음과 같습니다.
|
<model> | 게스트 가상 머신에서 요청한 CPU 모델을 지정합니다. 사용 가능한 CPU 모델 및 해당 정의 목록은 libvirt의 data 디렉터리에 설치된 cpu_map.xml 파일에서 확인할 수 있습니다. 하이퍼바이저가 정확한 CPU 모델을 사용할 수 없는 경우 libvirt는 CPU 기능 목록을 유지하면서 하이퍼바이저에서 지원하는 가장 가까운 모델로 자동 대체됩니다. 선택적 fallback 속성은 이 동작을 금지하는 데 사용할 수 있으며, 이 경우 지원되지 않는 CPU 모델을 요청하는 도메인을 시작하려고 하면 실패합니다. fallback 속성에 지원되는 값은 allow (기본값) 및 forbid 입니다. 선택적 vendor_id 특성은 게스트 가상 머신에 표시된 벤더 ID를 설정하는 데 사용할 수 있습니다. 정확히 12자 길이여야 합니다. 설정되지 않은 경우 호스트 물리적 시스템의 벤더 ID가 사용됩니다. 일반적인 가능한 값은 AuthenticAMD 및 GenuineIntel 입니다. |
<vendor> | 게스트 가상 머신에서 요청한 CPU 벤더를 지정합니다. 이 요소가 누락된 경우 게스트 가상 머신은 벤더에 관계없이 지정된 기능과 일치하는 CPU에서 실행됩니다. 지원되는 공급 업체 목록은 cpu_map.xml 에서 확인할 수 있습니다. |
<토폴로지> | 게스트 가상 머신에 제공된 가상 CPU의 요청된 토폴로지를 지정합니다. 소켓, 코어, 스레드 수, 소켓당 코어 수, 코어당 코어 수, 코어당 3개의 스레드 수를 각각 지정해야 합니다. |
<기능> | 선택한 CPU 모델에서 제공하는 기능을 미세 조정하는 데 사용되는 0개 이상의 요소를 포함할 수 있습니다. 알려진 기능 이름 목록은 CPU 모델과 동일한 파일에서 확인할 수 있습니다. 각 feature 요소의 의미는 다음 값 중 하나로 설정해야 하는 policy 특성에 따라 달라집니다.
|
20.11.1. 게스트 가상 머신 NUMA 토폴로지 링크 복사링크가 클립보드에 복사되었습니다!
<numa> 요소와 도메인 XML에서 다음을 사용하여 게스트 가상 머신 NUMA 토폴로지를 지정할 수 있습니다.
그림 20.17. 게스트 가상 머신 NUMA 토폴로지
CPU 는 노드에 포함된 CPU의 CPU 또는 범위를 지정합니다. memory 는 노드 메모리를 kibibytes(24바이트의 블록)로 지정합니다. 각 셀 또는 노드에는 0부터 시작하는 순서에 따라 cellid 또는 nodeid 가 할당됩니다.
20.12. 이벤트 구성 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.18. 이벤트 구성
<on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <on_lockfailure>poweroff</on_lockfailure>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<on_lockfailure>poweroff</on_lockfailure>
| 상태 | 설명 |
|---|---|
<on_poweroff> | 게스트 가상 머신이 전원을 요청할 때 실행할 작업을 지정합니다. 가능한 네 가지 인수를 사용할 수 있습니다.
|
<on_reboot> | 게스트 가상 머신이 재부팅을 요청할 때 실행할 작업을 지정합니다. 가능한 네 가지 인수를 사용할 수 있습니다.
|
<on_crash> | 게스트 가상 머신이 충돌할 때 실행할 작업을 지정합니다. 또한 다음과 같은 추가 작업을 지원합니다.
|
<on_lockfailure> | 잠금 관리자에서 리소스 잠금이 손실될 때 수행할 작업을 지정합니다.Specifies what action should be taken when a lock manager loses resource locks. libvirt에서 다음 작업을 인식하지만 일부 작업은 개별 잠금 관리자에서 지원할 필요는 없습니다. 작업을 지정하지 않으면 각 잠금 관리자가 기본 작업을 수행합니다. 다음 인수를 사용할 수 있습니다.
|
20.13. 전원 관리 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.19. 전원 관리
<pm> 요소는 no 인수를 사용하여 yes 또는 disabled를 사용하여 활성화할 수 있습니다. suspend-to-disk 및 S4 인수 suspend-to-mem ACPI sleep 상태를 사용하여 S3에 대해 BIOS 지원을 구현할 수 있습니다. 아무것도 지정하지 않으면 하이퍼바이저가 기본값으로 유지됩니다.
20.14. 하이퍼바이저 기능 링크 복사링크가 클립보드에 복사되었습니다!
state='off') 할 수 있습니다(state='off').
그림 20.20. 하이퍼바이저 기능
<상태가> 지정되지 않은 경우 <features> 요소 내에 모든 기능이 나열됩니다. 기능 XML을 호출하여 사용 가능한 기능을 찾을 수 있지만 완전히 가상화된 도메인에 대한 공통 세트는 다음과 같습니다.
| 상태 | 설명 |
|---|---|
<pae> | 물리적 주소 확장 모드를 사용하면 32비트 게스트 가상 머신이 4GB 이상의 메모리를 처리할 수 있습니다. |
<acpi> | 전원 관리에 유용합니다(예: KVM 게스트 가상 시스템을 사용하는 경우 정상적으로 종료해야 함). |
<apic> | 프로그래밍 가능한 IRQ 관리를 사용할 수 있습니다. 이 요소에는 게스트 가상 머신에 대한 EOI (End of Interrupt)의 가용성을 설정하고 값이 있는 선택적 속성 eoi 가 있습니다. |
<ap> | 하드웨어에서 사용할 수 있는 경우 Hardware Assisted Paging을 사용할 수 있습니다. |
HyperV | Microsoft Windows를 실행하는 게스트 가상 머신의 동작을 개선하기 위해 다양한 기능을 사용할 수 있습니다. 또는 off 의 값으로 완화 된 선택적 속성을 사용하여 타이머 에 대한 완화 제약 조건을 활성화하거나 비활성화합니다. |
20.15. 시간 유지 링크 복사링크가 클립보드에 복사되었습니다!
현지 시간으로 설정해야 합니다.
그림 20.21. 시간 유지
| 상태 | 설명 |
|---|---|
<clock> | offset 속성은 4가지 값을 사용하므로 게스트 가상 시스템 시계가 호스트 물리적 시스템에 어떻게 동기화되는지 세부적으로 제어할 수 있습니다. 모든 시간 소스에서 모든 정책을 지원할 필요는 없습니다.
|
<타이머> | 참고 보기 |
<빈도> | name="tsc" 가 실행되는 빈도를 지정하는 서명되지 않은 정수입니다. |
<mode> | mode 속성은 name="tsc" <타이머> 를 관리하는 방법을 제어합니다. auto,native,emulate,paravirt, 또는 smpsafe 로 설정할 수 있습니다. 다른 타이머는 항상 에뮬레이션됩니다. |
<present> | 게스트 가상 머신에서 특정 타이머를 사용할 수 있는지 여부를 지정합니다. yes 또는 no로 설정할 수 있습니다. |
<timer> 요소에는 name 속성이 포함되어야 하며 지정된 이름에 따라 다음 속성이 있을 수 있습니다.
<name>- 수정되는타이머를 선택합니다. 사용할 수 있는 값은kvmclock(QEMU-KVM),pit(QEMU-KVM), 또는rtc(QEMU-KVM) 또는tsc(libxl만 해당)입니다.플랫폼은현재 지원되지 않습니다.- track - 타이머 경로를 지정합니다. 다음 값을 사용할 수 있습니다.
부팅,게스트또는벽.track은name="rtc"에만 유효합니다. tickpolicy- 게스트 가상 머신에 대한 틱을 삽입하는 데 필요한 데드라인이 누락된 경우를 결정합니다. 다음 값을 할당할 수 있습니다.delay-will은 계속해서 정상 속도로 진드기를 전달합니다. 늦은 눈금으로 인해 게스트 가상 머신 시간이 지연됩니다.catchup- 누락된 진드기를 찾기 위해 더 높은 속도로 진드를 전달합니다. catchup이 완료되면 게스트 가상 머신 시간이 표시되지 않습니다. 또한 각각 양의 정수( threshold, slew, limit)의 세 가지 선택적 특성이 있을 수 있습니다.병합- 누락된 눈금을 하나의 눈금에 병합하여 삽입합니다. 병합 수행 방법에 따라 게스트 가상 머신 시간이 지연될 수 있습니다.삭제- 누락된 눈금을 버리고 기본 간격 설정에서 향후 삽입을 계속합니다. 손실된 틱을 처리하기 위한 명시적 선언이 없는 한 게스트 가상 머신 시간이 지연될 수 있습니다.
20.16. 장치 링크 복사링크가 클립보드에 복사되었습니다!
- virtio-scsi-pci - PCI 버스 스토리지 장치
- virtio-9p-pci - PCI 버스 스토리지 장치
- virtio-blk-pci - PCI 버스 스토리지 장치
- virtio-net-pci - virtio-net이라고도 하는 PCI 버스 네트워크 장치
- virtio-serial-pci - PCI 버스 입력 장치
- virtio-balloon-pci - PCI 버스 메모리 balloon 장치
- virtio-rng-pci - PCI 버스 가상 임의 번호 생성기 장치
벡터 값을 32보다 크게 설정하지 않는 것이 좋습니다. virtio-balloon-pci 및 virtio-rng-pci를 제외한 모든 virtio 장치는 벡터 인수를 허용합니다.
그림 20.22. 장치 - 하위 요소
<에뮬레이터 요소의 내용은 장치 모델 에뮬레이터> 바이너리에 대한 정규화된 경로를 지정합니다. capabilities XML은 각 특정 도메인 유형 또는 아키텍처 조합에 사용할 권장 기본 에뮬레이터를 지정합니다.
20.16.1. 하드 드라이브, Floppy 디스크, CDROM 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.23. 장치 - 하드 드라이브, 플로피 디스크, CDROM
20.16.1.1. 디스크 요소 링크 복사링크가 클립보드에 복사되었습니다!
<disk> 요소는 디스크를 설명하는 기본 컨테이너입니다. 특성 유형은 <disk> 요소와 함께 사용할 수 있습니다. 다음 유형을 사용할 수 있습니다.
file블록dirnetwork
20.16.1.2. source 요소 링크 복사링크가 클립보드에 복사되었습니다!
<디스크 type='file''> 의 경우 file 속성은 디스크를 포함하는 파일의 정규화된 경로를 지정합니다. <디스크 type='block'> 의 경우 dev 속성은 디스크로 사용할 호스트 물리적 시스템 장치의 경로를 지정합니다. 파일과 블록 모두를 사용하면 아래에 설명된 하나 이상의 하위 요소 seclabel 을 사용하여 해당 소스 파일에 대한 도메인 보안 레이블 지정 정책을 재정의할 수 있습니다. 디스크 유형이 dir 이면 dir 속성은 디스크로 사용할 디렉터리의 정규화된 경로를 지정합니다. 디스크 유형이 네트워크 이면 protocol 속성은 요청된 이미지에 액세스할 프로토콜을 지정합니다. 가능한 값은 nbd,rbd,sheepdog 또는 gluster 입니다.
rbd,sheepdog 또는 gluster 이면 사용할 볼륨 및 또는 이미지를 지정하는 추가 속성 이름이 필요합니다. 디스크 유형이 네트워크 인 경우, 소스에 는 type='dir' 및 type='network' 를 포함하여 연결할 호스트 물리적 시스템을 지정하는 데 사용되는 호스트 하위 요소가 0개 이상 있을 수 있습니다. cdrom 또는 coat(Device 속성)를 나타내는 파일 디스크 유형의 경우 소스 파일에 액세스할 수 없는 경우 디스크로 수행할 작업을 정의할 수 있습니다. 이 작업은 다음 값과 함께 startupPolicy 특성을 조작하여 수행됩니다.
- 어떤 이유로든 누락된 경우
필수적으로오류가 발생합니다. 이 설정은 기본 설정입니다. requisite부팅 시 누락된 경우 오류가 발생하는 경우 migrate/restore/revert에 누락된 경우 드롭- 시작 시도에 누락된 경우
선택적드롭
20.16.1.3. mirror 요소 링크 복사링크가 클립보드에 복사되었습니다!
<미러> 위치가 결국 소스와 동일한 내용이 있고 속성 형식의 파일 형식(소스 형식과 다를 수 있음)을 사용하는 경우 존재합니다. 준비가 된 속성이 있는 경우 디스크가 피벗할 준비가 된 것으로 알려져 있습니다. 그렇지 않으면 디스크를 계속 복사합니다. 현재 이 요소는 출력에서만 유효하므로 입력에서 무시됩니다.
20.16.1.4. target 요소 링크 복사링크가 클립보드에 복사되었습니다!
<target> 요소는 디스크가 게스트 가상 머신 OS에 노출되는 버스 / 장치를 제어합니다. dev 속성은 논리 장치 이름을 나타냅니다. 지정된 실제 장치 이름은 게스트 가상 머신 OS의 장치 이름에 매핑되지 않습니다. 선택적 bus 속성은 에뮬레이션할 디스크 장치 유형을 지정합니다. 가능한 값은 일반적인 값인scsi,virtio,xen,usb 또는 sata 와 함께 드라이버별로 다릅니다. 생략하면 버스 유형이 장치 이름의 스타일에서 유추됩니다. 예를 들어 'sda' 라는 장치는 일반적으로 SCSI 버스를 사용하여 내보냅니다. 선택적 속성 트레이 는 이동식 디스크(예: CD-ROM 또는 Floppy 디스크)의 트레이 상태를 나타냅니다. 값은 열거나 닫을 수 있습니다. 기본 설정은 폐쇄 입니다. 자세한 내용은 대상 항목을 참조하십시오.
20.16.1.5. iotune 링크 복사링크가 클립보드에 복사되었습니다!
<iotune> 요소는 장치별 I/O 튜닝을 추가로 제공할 수 있는 기능을 제공하며, 장치마다 다를 수 있는 값을 제공합니다(이 요소는 도메인에 전역적으로 적용되는 blkiotune 요소에 제한). 이 요소에는 다음과 같은 선택적 하위 요소가 있습니다. 하위 요소가 지정되거나 전혀 지정되지 않거나 0 값으로 지정되지 않거나 지정된 하위 항목은 제한이 없음을 나타냅니다.
<total_bytes_sec>- 초당 총 처리량 제한(바이트)입니다. 이 요소는<read_bytes_sec>또는<write_bytes_sec>과 함께 사용할 수 없습니다.<read_bytes_sec>- 초당 읽기 처리량 제한(바이트)입니다.<write_bytes_sec>- 초당 쓰기 처리량 제한(바이트)입니다.<total_iops_sec>초당 총 I/O 작업 수입니다. 이 요소는<read_iops_sec>또는<write_iops_sec>과 함께 사용할 수 없습니다.<read_iops_sec>초당 읽기 I/O 작업 수입니다.<write_iops_sec>- 초당 쓰기 I/O 작업 수입니다.
20.16.1.6. 드라이버 링크 복사링크가 클립보드에 복사되었습니다!
<드라이버> 요소를 사용하면 디스크를 제공하는 데 사용되는 하이퍼바이저 드라이버와 관련된 추가 세부 정보를 지정할 수 있습니다. 다음 옵션을 사용할 수 있습니다.
- 하이퍼바이저가 여러 백엔드 드라이버를 지원하는 경우
name속성은 기본 백엔드 드라이버 이름을 선택하는 반면 선택적 type 속성은 하위 유형을 제공합니다. 사용 가능한 유형 목록은 Driver Element를 참조하십시오. - 선택적
캐시 속성은 캐시메커니즘을 제어합니다. 가능한 값은기본,none,writethrough, writeback ,writeback,directsync(호스트 물리적 머신 페이지 캐시쓰기가 가능) 및 안전하지 않음(호스트 물리적 시스템 페이지 캐시가 무시됨) 및안전하지 않은(호스트 가상 머신 가상 머신의 모든 디스크 io, 동기화 요청을 캐시할 수 있음)입니다. - 선택적
error_policy속성은 하이퍼바이저가 디스크 읽기 또는 쓰기 오류에서 작동하는 방식을 제어합니다. 가능한 값은중지,보고, ,ignore,enospace.error_policy의 기본 설정은보고서입니다. 읽기 오류에 대한 동작을 제어하는 선택적rerror_policy도 있습니다.rerror_policy가 제공되지 않으면error_policy가 읽기 및 쓰기 오류 모두에 사용됩니다.rerror_policy를 지정하면 읽기 오류가 있는지error_policy를 덮어씁니다. 또한enospace는 읽기 오류에 대한 유효한 정책이 아니므로error_policy가enospace로 설정되어 있고rerror_policy가 제공되지 않으면 기본 설정인report가 사용되는 읽기 오류입니다. - 선택적
io속성은 I/O에서 특정 정책을 제어합니다.qemu게스트 가상 머신 가상 머신은스레드및네이티브를 지원합니다. 선택적ioeventfd특성을 사용하면 사용자가 디스크 장치에 대한 도메인 I/O 비동기 처리를 설정할 수 있습니다. 기본값은 하이퍼바이저의 재량에 따라 다릅니다. 허용되는 값은설정 및입니다. 이를 활성화하면 별도의 스레드에서 I/O를 처리하는 동안 게스트 가상 머신 가상 머신을 실행할 수 있습니다. 일반적으로 게스트 가상 머신 가상 머신은 I/O 중에 시스템 CPU 사용률이 높아지는 데 도움이 됩니다. 반면 과부하된 호스트 물리적 시스템은 게스트 가상 머신 가상 시스템 I/O 대기 시간을 늘릴 수 있습니다. IOS를 조작할 필요가 있다는 것을 완전히 인증하지 않는 한, 기본 설정을 변경하지 않고 하이퍼바이저가 설정을 지시할 수 있도록 하는 것이 좋습니다.해제 - 선택적
event_idx속성은 장치 이벤트 처리의 일부 측면을 제어하며,켜거나끌수 있습니다. 이 경우 중단 횟수를 줄이고 게스트 가상 머신 가상 시스템에 대해 종료됩니다. 기본값은 하이퍼바이저에 따라 결정되며 기본 설정은에 있습니다. 이 동작이 낙관적 인 상황이 있는 경우 이 속성은 기능을 강제로끌수 있는 방법을 제공합니다.event_idx를 조작해야 한다는 것을 완전히 인증하지 않는 한 기본 설정을 변경하지 않고 하이퍼바이저가 설정을 지정할 수 있도록 하는 것이 좋습니다. - 선택 사항인
copy_on_read속성은 읽기 백업 파일을 이미지 파일에 복사할지 여부를 제어합니다. 허용되는 값은<설정 또는 해제>일수 있습니다.copy-on-read는 동일한 백업 파일 섹터에 반복적으로 액세스하는 것을 방지하고 백업 파일이 느린 네트워크를 할 때 유용합니다. 기본적으로copy-on-read는해제되어 있습니다.
20.16.1.7. 추가 장치 요소 링크 복사링크가 클립보드에 복사되었습니다!
장치 요소 내에서 사용할 수 있습니다.
<Boot - 디스크를 부팅>할 수 있도록 지정합니다.추가 부팅 값
<순서>- 부팅 시퀀스 중에 장치를 시도하는 순서를 결정합니다.<장치별>부팅 요소는 BIOS 부트 로더 섹션의 일반 부트 요소와 함께 사용할 수 없습니다.
<Encryption>- 볼륨의 암호화 방법을 지정합니다. 자세한 내용은 스토리지 암호화 페이지를 참조하십시오.<readonly>- 게스트 가상 머신 가상 머신에서 장치를 수정할 수 없음을 나타냅니다. 이 설정은attributedevice='cdrom'이 있는 디스크의 기본값입니다.공유 가능은 장치가 도메인 간에 공유되어야 함을 나타냅니다(하이퍼바이저와 OS 지원의 경우).공유할 수 있는경우 해당 장치에cache='no'를 사용해야 합니다.<일시적>- 게스트 가상 머신 가상 머신이 종료되면 장치 콘텐츠에 대한 변경 사항을 자동으로 되돌리야 함을 나타냅니다. 일부 하이퍼바이저에서는 디스크를 임시로표시하면 도메인이 마이그레이션 또는 스냅샷에 참여하지 않습니다.<serial>- 게스트 가상 머신 가상 머신의 하드 드라이브의 일련 번호를 지정합니다. 예를 들어<직렬>WD-WMAP9A966149</직렬>입니다.<wwn>- 가상 하드 디스크 또는 CD-ROM 드라이브의 WWN(World Wide Name)을 지정합니다. 16개의 16진수로 구성되어야 합니다.<vendor>- 가상 하드 디스크 또는 CD-ROM 장치의 벤더를 지정합니다. 8 인쇄 가능한 문자보다 길면 안 됩니다.<product>- 가상 하드 디스크 또는 CD-ROM 장치의 제품을 지정합니다. 16 인쇄 가능 문자보다 길면 안 됩니다.<Host - 4 속성 지원: 각각 호스트>이름,포트번호,전송유형 및소켓경로를 지정하는viz, 이름 , 포트 , 전송 및 소켓을 지원합니다. 이 요소의 의미와 요소 수는 다음과 같이protocol속성에 따라 달라집니다.추가 호스트 속성
- NBD -
nbd-server를 실행하는 서버를 지정하고 하나의 호스트 물리적 컴퓨터에만 사용할 수 있습니다. RBD- RBD 유형의 서버를 모니터링하고 하나 이상의 호스트 물리적 시스템에 사용할 수 있습니다.- Sheepdog -
sheepdog서버 중 하나를 지정합니다(기본값은 localhost:7000)이며 호스트 물리적 시스템 중 하나 또는 none을 사용할 수 있습니다. Gluster- iLO 데몬을 실행하는 서버를 지정하고 하나의 호스트 물리적 시스템에 대해서만 사용할 수 있습니다. transport 속성에 유효한 값은tcp,rdma또는unix입니다. 아무것도 지정되지 않은 경우tcp를 가정합니다. transport가unix인 경우socket속성은 unix 소켓의 경로를 지정합니다.
<address>- 컨트롤러의 지정된 슬롯에 디스크를 연결합니다. 실제<컨트롤러>장치는 종종 가 유추할 수 있지만 명시적으로 지정할 수도 있습니다.type속성은 필수이며 일반적으로pci또는드라이브입니다.pci컨트롤러의 경우버스,슬롯및함수에 대한 추가 속성과 선택적있어야도메인및 다중 기능이합니다.Multifun ction의 기본값은off입니다.드라이브컨트롤러의 경우 추가 특성컨트롤러,버스,대상및유닛을사용할 수 있으며 각각 기본 설정이0입니다.auth- 소스에 액세스하는 데 필요한 인증 자격 증명을 제공합니다. 인증 중에 사용할사용자이름을 식별하는 필수 특성 사용자 이름 및 필수 속성유형의하위 요소가 포함되도록 하는 필수 속성 사용자 이름 이 포함됩니다.자세한 내용은 장치 요소(Deviceelement)에서 확인할 수 있습니다.지오메트리 - 지오메트리설정을 재정의하는 기능을 제공합니다. 이는 S390 DASD-disks 또는 이전 DOS-disks에 주로 유용합니다.Cyls- 실린더 수를 지정합니다.heads- 헤드 수를 지정합니다.secs- 트랙당 섹터 수를 지정합니다.trans- BIOS-Translation-Modus를 지정하고 다음 값을 가질 수 있습니다:none,lba또는autoblockio- 아래 블록 장치 속성 중 하나로 블록 장치를 덮어쓸 수 있습니다.blockio 옵션
logical_block_size- 게스트 가상 머신 가상 머신 OS에 보고하고 디스크 I/O의 최소 단위를 설명합니다.physical_block_size- 게스트 가상 머신 가상 머신 OS에 보고하고 디스크 데이터의 정렬과 관련이 있는 디스크의 하드웨어 섹터 크기를 설명합니다.
20.16.2. 파일 시스템 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.24. 장치 - 파일 시스템
filesystem 속성에는 다음과 같은 가능한 값이 있습니다.
type='mount'- 게스트 가상 머신에 마운트할 호스트 물리적 머신 디렉터리를 지정합니다. 이 값은 지정되지 않은 경우 기본 유형입니다. 이 모드에는 속성type='path'또는type='handle'이 있는 선택적 하위 요소드라이버도 있습니다. 드라이버 블록에 호스트 물리적 시스템 페이지 캐시와의 상호 작용을 추가로 제어하는 선택적 속성wrpolicy가 있습니다. 속성을 생략하면 속성은 기본 설정으로 되돌아갑니다. 값을 직접 지정하면 게스트 가상 머신 파일 쓰기 작업 중에 연결된 모든 페이지에 대해 호스트 물리적 시스템 쓰기가 즉시 트리거된다는 것을 의미합니다.type='template'- OpenVZ 파일 시스템 템플릿을 지정하며 OpenVZ 드라이버에서만 사용됩니다.type='file'- 호스트 물리적 머신 파일이 이미지로 처리되어 게스트 가상 머신에 마운트되도록 지정합니다. 이 파일 시스템 형식은 자동 탐지되며 LXC 드라이버에서만 사용됩니다.type='block'- 게스트 가상 머신에 마운트할 호스트 물리적 머신 블록 장치를 지정합니다. 파일 시스템 형식은 자동 탐지되며 LXC 드라이버에서만 사용됩니다.type='ram'- 호스트 물리적 머신 OS의 메모리를 사용하여 메모리 내 파일 시스템을 사용하도록 지정합니다. 소스 요소에는 메모리사용량제한을 kibibytes로 제공하고 LXC 드라이버에서만 사용하는 단일 특성 사용이 있습니다.type='bind'- 게스트 가상 머신 내부의 다른 디렉터리에 바인딩되는 디렉터리를 지정합니다. 이 요소는 LXC 드라이버에서만 사용됩니다.AccessMode- 소스 액세스에 대한 보안 모드를 지정합니다. 현재 이는 QEMU/KVM 드라이버의 type='mount'에서만 작동합니다. 가능한 값은 다음과 같습니다.Passthrough- 게스트 가상 머신 내부에서 설정된 사용자의 권한 설정을 사용하여 소스에 액세스하도록 지정합니다. 이 모드는 지정되지 않은 경우 기본 액세스 모드입니다.mapped- 하이퍼바이저의 권한 설정을 사용하여 소스에 액세스하도록 지정합니다.스쿼시-'passthrough'와 유사하게, 예외는chown과 같은 권한 있는 작업의 실패가 무시된다는 것입니다. 이로 인해 루트가 아닌 하이퍼바이저를 실행하는 사용자가 passthrough 유사 모드를 사용할 수 있습니다.
<Source>- 게스트 가상 머신에서 액세스 중인 호스트 물리적 머신의 리소스를 지정합니다.name속성은<type='template'>과 함께 사용해야 하며dir속성은<type='mount'>와 함께 사용해야 합니다.usage속성은<type='ram'>과 함께 사용하여 메모리 제한을 KB로 설정합니다.target- 게스트 가상 시스템에서 소스 드라이버에 액세스할 수 있는 위치를 파악합니다. 대부분의 드라이버의 경우 이는 자동 마운트 지점이지만 QEMU-KVM의 경우 이는 마운트할 위치에 대한 힌트로 게스트 가상 시스템으로 내보낸 임의의 문자열 태그일 뿐입니다.readonly- 기본적으로 읽기-쓰기액세스 권한이 지정되므로 게스트 가상 시스템의 읽기 전용 마운트로 합성 파일을 내보낼 수 있습니다.space_hard_limit- 이 게스트 가상 머신의 파일 시스템에서 사용할 수 있는 최대 공간을 지정합니다.space_soft_limit- 이 게스트 가상 시스템의 파일 시스템에서 사용할 수 있는 최대 공간을 지정합니다. 컨테이너는 유예 기간 동안 소프트 제한을 초과할 수 있습니다. 그 후 하드 제한이 적용됩니다.
20.16.3. 장치 주소 링크 복사링크가 클립보드에 복사되었습니다!
<주소> 하위 요소가 있습니다. 입력 시 주소(또는 주소 내의 선택적 속성)를 생략하면 libvirt에서 적절한 주소를 생성합니다. 그러나 레이아웃을 추가로 제어해야 하는 경우 명시적 주소가 필요합니다. address 요소를 포함한 장치 예제는 아래를 참조하십시오.
유형이 있습니다. 지정된 장치에 사용할 주소 중 일부는 장치 및 게스트 가상 머신의 아키텍처가 제한됩니다. 예를 들어, 디스크 장치는 type='disk' 를 사용하지만 콘솔 장치는 32비트 AMD 및 Intel 아키텍처 또는 AMD64 및 Intel 64 게스트 가상 머신에서 type='pci' 을 사용하거나 PowerPC64 pseries 게스트 가상 머신의 type='spapr-vio' 를 사용합니다. 각 주소 <유형에> 는 장치가 배치될 버스 위치를 제어하는 추가 선택적 속성이 있습니다. 추가 속성은 다음과 같습니다.
type='pci'- PCI 주소에는 다음과 같은 추가 속성이 있습니다.도메인(현재 qemu에서 사용되지 않는 2바이트 16x 정수)버스(0xff와 0xff 사이의 16진수 값)슬롯(0x0과 0x1f 사이의 16진수 값, 포함)기능(0)에서 7 사이의 값 (포함)- 또한 사용할 수 있는 다중function 속성으로 PCI 제어 레지스터의 특정 슬롯/기능에 대한 다기능 비트 켜기를 제어합니다.
이 multifunction 속성은 기본적으로'off'로 설정되지만 함수 0에 대해 여러 함수가 사용되는 슬롯의 경우'on'로 설정되어야 합니다.
type='drive- 드라이브 주소에는 다음과 같은 추가 속성이 있습니다.컨트롤러- (두 자리 컨트롤러 번호)버스- (두 자리 버스 번호)대상- (두 자리 버스 번호)단원- (버스에 있는 2자리 단위 번호)
type='virtio-serial'- 각 virtio-serial 주소에는 다음과 같은 추가 속성이 있습니다.컨트롤러- (두 자리 컨트롤러 번호)버스- (두 자리 버스 번호)슬롯- (버스 내의 두 자리 슬롯)
type='ccid'- 스마트 카드에 사용되는 CCID 주소에는 다음과 같은 추가 속성이 있습니다.버스- (두 자리 버스 번호)슬롯속성 - (버스 내의 두 자리 슬롯)
type='usb'- USB 주소에는 다음과 같은 추가 속성이 있습니다.bus- (0xfff 사이의 16진수 값, 포함)포트- ( 1.2 또는 2.1.3.1과 같이 최대 4개의 8진수로 구분된 표기법)
type='spapr-vio- On PowerPC pseries 게스트 가상 머신, 장치는 SPAPR-VIO 버스에 할당할 수 있습니다. 플랫 64비트 주소 공간이 있습니다. 규칙에 따라 장치는 0이 아닌 0x1000의 숫자로 일반적으로 할당되지만 다른 주소는 libvirt에서 유효하며 허용됩니다. 추가 특성: reg(시작 레지스터의 16진수 값)를 이 속성에 할당할 수 있습니다.
20.16.4. 컨트롤러 링크 복사링크가 클립보드에 복사되었습니다!
<컨트롤러> 요소를 제공해야 할 수도 있습니다.
그림 20.25. 컨트롤러 요소
유형 이 있습니다. "ide", "fdc", "scsi", "sata", "usb", "ccid" 또는 "virtio-serial", 및 "virtio-serial" , 버스 컨트롤러가 발생하는 순서를 설명하는 필수 특성 색인 ( address 요소의 컨트롤러 속성 사용)이어야 합니다. "virtio-serial" 컨트롤러에는 컨트롤러를 통해 연결할 수 있는 장치 수를 제어하는 두 가지 추가 선택적 속성인 ports 및 vectors 가 있습니다.
<컨트롤러 type='scsi'> 에는 선택적 속성 모델이 있습니다. "auto", "buslogic", "ibmvscsi", "lsilogic" , "lsilogic", "lsias1068 ", "virtio-scsi 또는 "vmpvscsi". virtio-scsi 컨트롤러와 드라이버는 KVM 및 Windows 게스트 가상 머신 모두에서 작동합니다. 또한 <컨트롤러 type='scsi'> 에는 지정된 대기열 수에 대해 다중 큐 지원을 지원하는 num_queues 속성이 있습니다.
"usb" 컨트롤러에는 선택적 속성 모델이 있습니다. "piix3-uhci", "piix3-uhci", "ehci", "ehci" , "ich9-ehci1", "ich9-u hci1" , "ich9-uhci1", "ich9-uhci2", , "ich9-uhci2 ", "ich9-uhci3 ", "vt82c686b-uhci", " pci-ohci" 또는 "nec-xhci". 또한 게스트 가상 머신에 대해 USB 버스를 명시적으로 비활성화해야 하는 경우 model='none' 을 사용할 수 있습니다. PowerPC64 "spapr-vio" 주소에는 연결된 컨트롤러가 없습니다.
주소는 위에 제공된 의미와 함께 컨트롤러의 정확한 관계를 마스터 버스와 지정할 수 있습니다.
마스터 컨트롤러와의 정확한 관계를 지정하기 위한 선택적 하위 요소 마스터가 있습니다. 파트너 컨트롤러는 마스터와 동일한 버스에 있으므로 companion index 값이 동일해야 합니다.
그림 20.26. 장치 - 컨트롤러 - USB
20.16.5. 장치 리스 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.27. 장치 - 장치 리스
lease 섹션에는 다음 인수가 있을 수 있습니다.
잠금 공간- 키가 보관된 잠금 공간을 식별하는 임의의 문자열입니다. 잠금 관리자는 포맷 또는 잠금 공간 이름의 길이에 추가 제한을 적용할 수 있습니다.key- 임대를 고유하게 식별하는 임의의 문자열입니다. 잠금 관리자는 키 형식 또는 길이에 추가 제한을 적용할 수 있습니다.target- 잠금 공간과 연결된 파일의 정규화된 경로입니다. 오프셋은 리스가 파일 내에 저장된 위치를 지정합니다. 잠금 관리자가 오프셋을 필요로 하지 않으면 이 값을0으로 설정합니다.
20.16.6. 호스트 물리적 시스템 장치 할당 링크 복사링크가 클립보드에 복사되었습니다!
20.16.6.1. USB / PCI 장치 링크 복사링크가 클립보드에 복사되었습니다!
hostdev 요소를 사용하여 호스트 물리적 시스템의 USB 및 PCI 장치를 게스트 가상 시스템으로 전달할 수 있습니다. 관리 툴을 사용하여 도메인 xml 파일의 다음 섹션이 구성됩니다.
그림 20.28. 장치 - 호스트 물리적 시스템 장치 할당
그림 20.29. 장치 - 호스트 물리적 시스템 장치 할당 대안
| 매개변수 | 설명 |
|---|---|
hostdev | 호스트 물리적 시스템 장치를 설명하는 기본 컨테이너입니다. USB 장치 패스스루 모드 의 경우 항상 하위 시스템이며 유형은 USB 장치의 경우 usb 이고 PCI 장치의 경우 pci 입니다. PCI 장치에 대해 관리되는 경우 게스트 가상 머신에 전달되기 전에 호스트 물리적 시스템에서 분리되고 게스트 가상 머신이 종료된 후 호스트 물리적 시스템에 다시 연결됩니다. managed 가 생략되거나 PCI 장치용 no 인 경우 사용자는 게스트 가상 머신을 시작하기 전에 virNodeDeviceDettach 인수(또는 virsh nodedev-dettach)를 사용하고, 게스트 가상 머신을 핫 플러그하거나 중지한 후 virNodeDeviceReAttach (또는 virsh nodedev-reattach)를 사용해야 합니다. |
소스 | 호스트 물리적 시스템에서 볼 수 있는 장치를 설명합니다. USB 장치는 vendor 및 product 요소를 사용하여 공급 업체 / 제품 ID를 사용하거나 address 요소를 사용하여 호스트 물리적 시스템의 장치 주소로 처리할 수 있습니다. 반면 PCI 장치는 주소에 의해서만 설명될 수 있습니다. USB 장치의 소스 요소에는 지정된 호스트 물리적 시스템 USB 장치가 없는 경우 수행할 작업을 위한 규칙을 정의하는 데 사용할 수 있는 startupPolicy 속성이 포함될 수 있습니다. 속성에는 다음 값을 사용할 수 있습니다.
|
공급 업체, 제품 | 이러한 요소에는 각각 USB 공급업체 및 제품 ID를 지정하는 id 속성이 있습니다. ID는 10진수, 16진수(0x로 시작) 또는 8진수(0)로 시작할 수 있습니다. |
boot | 장치를 부팅할 수 있도록 지정합니다. 특성의 순서에 따라 부팅 순서 중 장치가 시도되는 순서가 결정됩니다. 장치별 부팅 요소는 BIOS 부트 로더 섹션의 일반 부트 요소와 함께 사용할 수 없습니다. |
Rom | PCI 장치의 Rom이 게스트 가상 머신에 표시되는 방식을 변경하는 데 사용됩니다. 선택 사항인 bar 속성을 on 또는 off 로 설정할 수 있으며, 장치의om이 게스트 가상 머신의 메모리 맵에 표시되는지 여부를 결정할 수 있습니다. ( PCI 문서의 경우, rombar 설정은 Rom에 대한 기본 주소 등록의 존재를 제어합니다.) rom bar를 지정하지 않으면 기본 설정이 사용됩니다. 선택적 파일 속성은 게스트 가상 머신이 장치의 ROM BIOS로 표시되도록 바이너리 파일을 가리키는 데 사용됩니다. 이는 예를 들어 sr-iov 가능 이더넷 장치의 가상 기능에 PXE 부팅 롬을 제공하는 데 유용할 수 있습니다( VF에 대한 부팅 Rom이 없는 경우). |
주소 | 또한 호스트 물리적 시스템의 USB 버스 및 장치 번호를 지정하는 버스 및 장치 속성이 있습니다. 이러한 속성의 값은 10진수, 16진수(0x로 시작) 또는 8진수( 0으로 시작) 형식으로 지정할 수 있습니다. PCI 장치의 경우 요소는 lspci 또는 virsh nodedev-list를 사용하여 찾을 수 있는 것처럼 장치를 지정할 수 있는 3개의 속성을 전달합니다. |
20.16.6.2. 블록 / 문자 장치 링크 복사링크가 클립보드에 복사되었습니다!
hostdev 요소를 수정하는 관리 툴을 사용하여 게스트 가상 머신에 전달할 수 있습니다. 이는 컨테이너 기반 가상화에서만 가능합니다.
그림 20.30. 장치 - 호스트 물리적 시스템 장치 할당 블록 문자 장치
그림 20.31. 장치 - 호스트 물리적 시스템 장치 할당 블록 문자 장치 대안 1
그림 20.32. 장치 - 호스트 물리적 시스템 장치 할당 블록 문자 장치 대안 2
| 매개변수 | 설명 |
|---|---|
hostdev | 호스트 물리적 시스템 장치를 설명하는 기본 컨테이너입니다. 블록/문자 장치 통과 모드 의 경우 항상 기능 이며, 문자 장치의 경우 블록 장치 및 char 에 대한 유형이 차단됩니다. |
소스 | 이는 호스트 물리적 시스템에서 표시된 대로 장치를 설명합니다. 블록 장치의 경우 호스트 물리적 머신 OS의 블록 장치 경로는 중첩 블록 요소에 제공되며 문자 장치의 경우 char 요소가 사용됩니다. |
20.16.7. 리디렉션된 장치 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.33. 장치 - 리디렉션된 장치
| 매개변수 | 설명 |
|---|---|
redirdev | 리디렉션된 장치를 설명하는 기본 컨테이너입니다. 버스는 USB 장치 용 USB가 되어야 합니다. 터널의 호스트 물리적 시스템 측면을 설명하기 위해 지원되는 직렬 장치 유형 중 하나와 일치하는 추가 특성 유형이 필요합니다. type='tcp' 또는 type='spicevmc' ( SPICE 그래픽 장치의 usbredir 채널을 사용하는)가 일반적입니다. redirdev 요소에는 특정 컨트롤러에 장치를 연결할 수 있는 선택적 하위 요소가 있습니다. 소스( source )와 같은 추가 서브-요소는 특정 유형에 따라 요구될 수 있지만,target 서브-요소는 필요하지 않다(상자 장치의 소비자는 게스트 가상 머신에 표시되는 장치가 아닌 하이퍼바이저 자체임). |
boot | 장치를 부팅할 수 있도록 지정합니다. order 속성은 부팅 시퀀스 중 장치를 시도하는 순서를 결정합니다. 장치별 부팅 요소는 BIOS 부트 로더 섹션의 일반 부트 요소와 함께 사용할 수 없습니다. |
redirfilter | 이는 리디렉션에서 특정 장치를 필터링하기 위해 필터 규칙을 생성하는 데 사용됩니다. 하위 요소 usbdev 를 사용하여 각 필터 규칙을 정의합니다. class 속성은 USB 클래스 코드입니다. |
20.16.8. 스마트 카드 장치 링크 복사링크가 클립보드에 복사되었습니다!
호스트 머신의 USB 스마트 카드 판독기 장치는 호스트와 게스트 둘 다에서 사용할 수 없으므로 간단한 장치 패스스루가 있는 게스트에서 사용할 수 없으며 게스트에서 호스트 컴퓨터를 잠글 수 있습니다. 따라서 일부 하이퍼바이저는 게스트 가상 머신에 스마트 카드 인터페이스를 제공할 수 있는 특수 가상 장치를 제공하며, 호스트 시스템에서 자격 증명을 얻는 방법 또는 타사 스마트 카드 공급자가 생성한 채널을 설명할 수 있는 여러 가지 모드를 제공합니다. 문자 장치를 통해 USB 장치 리디렉션에 대한 매개 변수를 설정하려면 도메인 XML의 다음 섹션을 편집합니다.
그림 20.34. 장치 - 스마트 카드 장치
스마트 카드 요소에는 필수 속성 모드가 있습니다. 다음 모드가 지원됩니다. 각 모드에서 게스트 가상 머신은 USB 버스에서 장치를 확인하여 물리적 USB CCID(Chip/Smart Card Interface Device) 카드처럼 작동합니다.
| 매개변수 | 설명 |
|---|---|
mode='host' | 이 모드에서 하이퍼바이저는 게스트 가상 머신에서 NSS를 통해 호스트 물리적 시스템의 스마트 카드로 모든 직접 액세스 요청을 릴레이합니다. 다른 속성이나 하위 요소가 필요하지 않습니다. 선택적 주소 하위 요소 사용에 대한 아래를 참조하십시오. |
mode='host-certificates' | 이 모드를 사용하면 호스트 물리적 시스템에 스마트 카드를 연결할 필요 없이 호스트 물리적 시스템의 데이터베이스에 있는 세 개의 NSS 인증서 이름을 제공할 수 있습니다. 이러한 인증서는 certutil -d /etc/pki/nssdb -x -t CT,CT -S -s CN=cert1 -n cert1 명령을 사용하여 생성할 수 있으며 결과 세 개의 인증서 하위 요소 각각에 대한 콘텐츠로 결과 세 개의 인증서 이름을 제공해야 합니다. 추가 하위 요소 데이터베이스 는 대체 디렉터리에 대한 절대 경로를 지정할 수 있습니다(인증서를 생성할 때 certutil 명령의 -d 옵션 일치) 지정하지 않으면 기본값은 /etc/pki/nssdb 입니다. |
mode='passthrough' | 이 모드를 사용하면 하이퍼바이저가 호스트 물리적 시스템과 직접 통신하는 대신 보조 문자 장치를 통해 모든 요청을 타사 공급자에게 터널링할 수 있습니다(따라서 스마트 카드 또는 세 개의 인증서 파일을 사용할 수 있음). 이 모드에서는 지원되는 직렬 장치 유형 중 하나와 함께, 터널의 호스트 물리적 시스템 측면을 설명하기 위해 추가 특성 유형이 필요합니다. type='tcp' 또는 type='spicevmc' ( SPICE 그래픽 장치의 스마트 카드 채널을 사용하는)가 일반적입니다. 소스( source )와 같은 서브-요소는 특정 유형에 따라 요구될 수 있지만, target 서브-요소는 필요하지 않다(자본 장치의 소비자는 게스트 가상 머신에서 볼 수 있는 장치가 아닌 하이퍼바이저 자체임). |
주소를 지원합니다.
20.16.9. 네트워크 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.35. 장치 - 네트워크 인터페이스
<인터페이스> 요소에는 인터페이스 type='pci' ( 20.16.3절. “장치 주소”참조)을 사용하여 인터페이스를 특정 pci 슬롯에 연결할 수 있는 선택적 <주소> 하위 요소가 있습니다.
20.16.9.1. 가상 네트워크 링크 복사링크가 클립보드에 복사되었습니다!
<네트워크> 정의에서 별도로 설명되는 다중 호스트 물리적 머신 환경)에 대한 일반적인 게스트 가상 머신 연결에 권장되는 구성입니다. 또한 이름이 지정된 네트워크 정의에서 세부 정보를 설명하는 연결을 제공합니다. 가상 네트워크의 전달 모드 구성에 따라 네트워크는 완전히 격리되고( <전방> 요소가 제공되지 않음), NAT가 명시적 네트워크 장치 또는 기본 경로(forward mode='nat'), NAT 없이 라우팅된(forward mode='route'/), 또는 호스트 물리적 시스템의 네트워크 인터페이스( macvtap) 또는 브리지 (pass bridge) 중 하나에 직접 연결할 수 있습니다.
<대상> 요소( 20.16.9.11절. “대상 요소 덮어쓰기”참조)로 덮어쓸 수도 있습니다.
<직접> 네트워크 연결(아래 설명)과 유사하게, 유형 네트워크 의 연결은 <가상 포트> 요소를 지정하고, 구성 데이터를 vepa(802.1Qbg) 또는 802.1Qbh 호환 스위치 또는 Open vSwitch 가상 스위치로 전달할 수 있습니다.
<네트워크> 구성에 따라 다를 수 있으므로, virtualport type 속성을 생략하고, 여러 가상 포트 유형(및 특정 속성 종료)에서 속성을 지정하는 것이 허용됩니다. 도메인 시작 시, 완전한 <가상 포트> 요소는 네트워크에 참조되는 포트그룹과 인터페이스에 정의된 유형 및 속성을 병합하여 구성됩니다. 새로 추가된 가상 포트는 둘 다의 조합입니다. 더 낮은 virtualport의 속성은 상위 가상 포트에 정의된 속성을 변경할 수 없습니다. 인터페이스는 우선 순위가 가장 높으며 portgroup이 가장 낮은 우선 순위입니다.
profileid 와 interfaceid 를 모두 제공해야 합니다. managerid,typeid 또는 profileid 와 같은 가상 포트에서 채울 다른 속성은 선택 사항입니다.
그림 20.36. 장치 - 네트워크 인터페이스-가상 네트워크
20.16.9.2. 브릿지 LAN 링크 복사링크가 클립보드에 복사되었습니다!
<vnetN> 이라는 이름으로 생성된 관련 tun 장치가 있으며, <대상> 요소( 20.16.9.11절. “대상 요소 덮어쓰기”참조)로 덮어쓸 수도 있습니다. <tun> 장치는 브리지에 종속됩니다. IP 범위/네트워크 구성은 LAN에서 사용되는 모든 항목입니다. 그러면 물리적 시스템과 마찬가지로 들어오는 게스트 가상 머신에서 들어오고 나가는 네트워크 액세스가 가능합니다.
virtualport type='openvswitch'/ 를 인터페이스 정의에 추가하여 open vSwitch 브리지 장치에 연결할 수도 있습니다. Open vSwitch 유형 virtualport는 Open vSwitch에 대한 이 특정 인터페이스를 고유하게 식별하는 데 사용되는 표준 uuid인 interfaceid 와 인터페이스 <포트-> 프로필으로 Open vSwitch로 전송된 선택적 profileid 를 사용자에게 생성합니다. 브리지를 LAN 설정으로 설정하려면 도메인 XML의 다음 부분을 구성하는 관리 도구를 사용합니다.
그림 20.37. 장치 - 네트워크 인터페이스 - LAN에 대한 브리지
20.16.9.3. 포트 마스커레이딩 범위 설정 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.38. 포트 마스커레이딩 범위
<forward mode='nat'> <address start='192.0.2.1' end='192.0.2.10'/> </forward> ...
<forward mode='nat'>
<address start='192.0.2.1' end='192.0.2.10'/>
</forward> ...
20.16.9.4. 사용자 공간 SLIRP 스택 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.39. 장치 - 네트워크 인터페이스- 사용자 공간 SLIRP 스택
20.16.9.5. 일반 이더넷 연결 링크 복사링크가 클립보드에 복사되었습니다!
vnetN 이라는 이름으로 생성되는 tun 장치가 있으며 이는 target 요소로 재정의할 수도 있습니다. tun 장치를 만든 후에는 필요한 호스트 물리적 시스템 네트워크 통합이 필요한 모든 작업을 수행할 것으로 예상되는 쉘 스크립트를 실행합니다. 기본적으로 이 스크립트는 /etc/qemu-ifup 이라고 하지만 덮어쓸 수 있습니다( 20.16.9.11절. “대상 요소 덮어쓰기”참조).
그림 20.40. 장치 - 네트워크 인터페이스- 일반 이더넷 연결
20.16.9.6. 물리적 인터페이스에 직접 연결 링크 복사링크가 클립보드에 복사되었습니다!
<인터페이스 type='direct'> 를 사용하면 가상 시스템의 NIC를 호스트의 지정된 물리적 인터페이스에 연결합니다.
vepa ( 'Virtual Ethernet Port Aggregator'), 기본 모드, 브리지 또는 개인 모드입니다.
그림 20.41. 장치 - 네트워크 인터페이스 - 물리적 인터페이스에 직접 연결
| element | 설명 |
|---|---|
vepa | 모든 게스트 가상 머신의 패킷은 외부 브리지로 전송됩니다. 패킷이 시작된 위치와 동일한 호스트 물리적 시스템의 게스트 가상 머신인 패킷은 VEPA 가능 브릿지(일반적으로 VEPA가 사용할 수 없음)에 의해 호스트 물리적 시스템으로 다시 전송됩니다. |
bridge | 대상이 시작된 위치와 동일한 호스트 물리적 시스템에 있는 패킷은 대상 macvtap 장치로 직접 전달됩니다. 오리진 장치와 대상 장치 모두 직접 전달을 위해 브리지 모드에 있어야 합니다. 둘 중 하나가 vepa 모드에 있는 경우 VEPA 가능 브릿지가 필요합니다. |
비공개 | 모든 패킷은 외부 브리지로 전송되며 외부 라우터 또는 게이트웨이를 통해 전송되고 해당 장치가 호스트 물리적 시스템으로 다시 전송하는 경우에만 동일한 호스트 물리적 시스템의 대상 VM으로 전달됩니다. 소스 또는 대상 장치가 개인 모드인 경우 이 절차를 따릅니다. |
passthrough | 이 기능은 마이그레이션 기능을 손실하지 않고 SRIOV 가능 NIC의 가상 기능을 게스트 가상 머신에 직접 연결합니다. 모든 패킷은 구성된 네트워크 장치의 VF/IF로 전송됩니다. 장치의 추가 사전 요구 사항 또는 제한 사항이 적용될 수 있습니다. 예를 들어 커널 2.6.38 이상이 필요합니다. |
| element | 설명 |
|---|---|
managerid | VSI Manager ID는 VSI 유형 및 인스턴스 정의가 포함된 데이터베이스를 식별합니다. 이는 정수 값이며 값 0 이 예약됩니다. |
typeid | VSI 유형 ID는 네트워크 액세스를 나타내는 VSI 유형을 식별합니다. VSI 유형은 일반적으로 네트워크 관리자가 관리합니다. 정수 값입니다. |
typeidversion | VSI 유형 버전에서는 여러 버전의 VSI 유형을 사용할 수 있습니다. 정수 값입니다. |
instanceid | VSI 인스턴스 ID 식별자는 VSI 인스턴스(가상 시스템의 가상 인터페이스)가 생성될 때 생성됩니다. 이는 전역적으로 고유한 식별자입니다. |
profileid | 프로필 ID에는 이 인터페이스에 적용할 포트 프로필의 이름이 포함되어 있습니다. 이 이름은 port 프로필 데이터베이스에서 포트 프로필에서 네트워크 매개 변수로 확인하며 해당 네트워크 매개 변수가 이 인터페이스에 적용됩니다. |
그림 20.42. 장치 - 네트워크 인터페이스 - 물리적 인터페이스에 직접 연결 추가 매개변수
그림 20.43. 장치 - 네트워크 인터페이스 - 물리적 인터페이스에 직접 연결 더 추가 매개변수
profileid 특성에는 이 인터페이스에 적용할 포트 프로필의 이름이 포함되어 있습니다. 이 이름은 port 프로필 데이터베이스에서 포트 프로필에서 네트워크 매개 변수로 확인하며 해당 네트워크 매개 변수가 이 인터페이스에 적용됩니다.
20.16.9.7. PCI 패스스루 링크 복사링크가 클립보드에 복사되었습니다!
소스 요소에 의해 지정됨)는 먼저 장치의 MAC 주소를 구성된 값으로 설정하고 선택적으로 지정된 가상 포트 요소를 사용하여 장치를 802.1Qbhable 스위치와 연결하는 후 일반 장치 통과를 사용하는 게스트 가상 머신에 직접 할당됩니다(type='direct' 네트워크 장치에 대해 위에 지정된 가상 포트의 예제 참조). 표준 단일 포트 PCI 이더넷 카드 설계의 제한으로 인해 - SR-IOV(Single Root I/O Virtualization) 가상 기능(VF) 장치만 이러한 방식으로 할당할 수 있습니다. 표준 단일 포트 PCI 또는 PCIe 이더넷 카드를 게스트 가상 머신에 할당하려면 기존 hostdev 장치 정의를 사용합니다.
hostdev 장치의 기능과 매우 유사합니다. 이 방법은 통과된 장치에 대한 MAC 주소와 가상 포트를 지정할 수 있다는 점입니다. 이러한 기능이 필요하지 않은 경우, SR-IOV를 지원하지 않는 표준 단일 포트 PCI, PCIe 또는 USB 네트워크 카드가 있는 경우(또는 게스트 가상 머신 도메인에 할당된 후 재설정 중에 구성된 MAC 주소가 손실됨) 또는 0.9.11 이전 버전의 libvirt를 사용하는 경우 표준 hostdev 를 사용하여 해당 장치를 게스트 가상 머신에 할당해야 합니다.
그림 20.44. 장치 - 네트워크 인터페이스- PCI 패스스루
20.16.9.8. 멀티 캐스트 터널 링크 복사링크가 클립보드에 복사되었습니다!
mcast 로 설정/변경하고 mac 및 소스 주소를 제공하여 생성됩니다. 이 결과는 도메인 XML의 변경 사항에 표시됩니다.
그림 20.45. 장치 - 네트워크 인터페이스- 캐스트 터널
20.16.9.9. TCP 터널 링크 복사링크가 클립보드에 복사되었습니다!
인터페이스 유형을 조작하고 서버 또는 클라이언트로 설정/변경하고 mac 및 소스 주소를 제공하여 생성됩니다. 이 결과는 도메인 XML의 변경 사항에 표시됩니다.
그림 20.46. 장치 - 네트워크 인터페이스- TCP 터널
20.16.9.10. NIC 드라이버별 옵션 설정 링크 복사링크가 클립보드에 복사되었습니다!
드라이버 하위 요소의 속성으로 설정됩니다. 이러한 옵션은 도메인 XML의 다음 섹션을 구성하는 관리 도구를 사용하여 설정됩니다.
그림 20.47. 장치 - 네트워크 인터페이스- NIC 드라이버별 옵션 설정
| 매개변수 | 설명 |
|---|---|
name | 선택적 name 속성은 사용할 백엔드 드라이버 유형을 강제 적용합니다. 값은 qemu (사용자 공간 백엔드) 또는 vhost (커널 백엔드)(커널에서 vhost 모듈을 제공해야 하는 커널 백엔드)일 수 있습니다. 커널 지원이 없는 vhost 드라이버가 필요합니다. vhost 드라이버가 있는 경우 기본 설정은 vhost 이며, 그렇지 않은 경우 자동으로 qemu 로 대체됩니다. |
txmode | 전송 버퍼가 가득 차 있을 때 패킷 전송을 처리하는 방법을 지정합니다. 값은 iothread 또는 timer 일 수 있습니다. iothread 로 설정하면 패킷 tx는 모두 드라이버 하단의 iothread에서 수행됩니다. 이 옵션은 "tx=bh" 를 qemu 명령줄 -device virtio-net-pci 옵션에 추가합니다. 타이머 로 설정하면 tx 작업이 qemu에서 수행되며 현재 전송 가능한 것보다 더 많은 tx 데이터가 있는 경우 qemu가 다른 작업을 수행하기 전에 타이머가 설정됩니다. 타이머가 다른 작업을 수행할 때, 또 다른 시도는 더 많은 데이터를 전송하도록 시도합니다. 일반적으로 이 옵션을 단독으로 남겨 두는 경우 이를 변경하는 것이 절대적인 필수 사항입니다. |
ioeventfd | 사용자가 인터페이스 장치에 대한 도메인 I/O 비동기 처리를 설정할 수 있습니다. 기본값은 하이퍼바이저의 재량에 따라 다릅니다. 허용되는 값은 설정 및 입니다. 이 옵션을 활성화하면 qemu가 게스트 가상 머신을 실행할 수 있으며 별도의 스레드에서 I/O를 처리할 수 있습니다. 일반적으로 게스트 가상 머신은 I/O 중에 시스템 CPU 사용률이 높아집니다. 반면 물리적 호스트 물리적 시스템의 과부하로 인해 게스트 가상 머신 I/O 대기 시간도 증가할 수 있습니다. 따라서 이 옵션을 변경하는 것이 절대적인 필수임을 확신하지 않는 한 이 옵션을 그대로 남겨 두어야 합니다. |
event_idx | event_idx 속성은 장치 이벤트 처리의 일부 측면을 제어합니다. 값은 on 또는 off 일 수 있습니다. 를 선택하면 인터럽트 수가 줄어들고 게스트 가상 머신에 대해 종료됩니다. 기본값은 ON 입니다. 이 동작이 낙관적 인 상황이 있는 경우 이 속성은 기능을 강제로 끌 수 있는 방법을 제공합니다. 매우 확신하지 않는 한 이 옵션을 그대로 두는 것이 절대적인 필요성입니다. |
20.16.9.11. 대상 요소 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.48. devices - 네트워크 인터페이스-대상 요소를 덮어씁니다.
20.16.9.12. 부팅 순서 지정 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.49. 부팅 순서 지정
20.16.9.13. 인터페이스롬 BIOS 구성 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.50. 인터페이스롬 BIOS 구성
bar 속성을 on 또는 off 로 설정할 수 있으며, 장치의om이 게스트 가상 머신의 메모리 맵에 표시되는지 여부를 결정할 수 있습니다. ( PCI 문서의 경우 "로바" 설정은 Rom에 대한 기본 주소 등록의 존재를 제어합니다. rom bar를 지정하지 않으면 qemu 기본값이 사용됩니다(디렉터 버전의 qemu는 기본값을 사용했지만 최신 qemus의 기본값은 )입니다. 선택적 파일 속성은 게스트 가상 머신이 장치의 ROM BIOS로 표시되도록 바이너리 파일을 가리키는 데 사용됩니다. 이는 네트워크 장치에 대한 대체 부트 롬을 제공하는 데 유용할 수 있습니다.
20.16.9.14. 서비스 품질 링크 복사링크가 클립보드에 복사되었습니다!
대역폭 요소는 가장 많은 인바운드 및 최대 하나의 아웃바운드 자식 요소를 가질 수 있습니다. 이러한 하위 요소 중 하나를 벗어나면 해당 트래픽 방향에 QoS가 적용되지 않습니다. 따라서 도메인의 들어오는 트래픽만 셰이프하려면 인바운드만 사용하고 그 반대의 경우도 마찬가지입니다.
평균 (또는 아래에 설명된 대로 바닥 )이 있습니다. 평균은 형성되는 인터페이스의 평균 비트 속도를 지정합니다. 그런 다음 두 가지 선택적 속성이 있습니다. 최대 속도에서 데이터를 보낼 수 있는 최대 속도를 지정하는 최대 속도의 최대 속도를 지정하는 최대 속도이며 버스트 는 최대 속도에서 버스트될 수 있는 바이트 수를 지정합니다. 특성에 허용되는 값은 정수 번호입니다.
평균 및 최대 속성의 단위는 초당 킬로바이트이며 burst 는 킬로바이트 단위로만 설정됩니다. 또한 인바운드 트래픽은 필요한 경우Flaim 특성을 가질 수 있습니다.In addition, inbound traffic can optionally have a floor attribute. 이렇게 하면 셰이프된 인터페이스에 대한 처리량이 최소화됩니다. 플로어 를 사용하려면 모든 트래픽이 QoS 결정을 내릴 수 있는 한 지점을 통과해야 합니다. 따라서 인터페이스 type='network'/ 가 앞으로 ,nat, or no forward 를 가진 경우에만 사용될 수 있습니다. 가상 네트워크 내에서 연결된 모든 인터페이스는 최소한 인바운드 QoS 세트(최소 평균)를 보유해야 하지만, floor 속성은평균 을 지정할 필요가 없습니다. 그러나 최대 및 버스트 속성은 여전히 평균이 필요합니다. 현재 수신 qdiscs에는 클래스가 없을 수 있으므로 층은 인바운드 및 아웃 바운드 트래픽에만 적용될 수 있습니다.
그림 20.51. 서비스 품질
20.16.9.15. VLAN 태그 설정 (지원되는 네트워크 유형에서만) 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.52. VLAN 태그 설정 (지원되는 네트워크 유형에서만)
vlan 요소는 게스트 가상 머신의 네트워크 트래픽(openvswitch 및 type='hostdev' SR-IOV 인터페이스)에 적용하도록 하나 이상의 vlan 태그를 지정할 수 있습니다. 802.1QBH(vn-link) 및 802.1Qbg(VEPA) 스위치는 게스트 가상 머신 트래픽을 특정 vlans에 태그하기 위한 고유한 방법(VEPA)을 제공합니다. 여러 태그의 사양( vlan 트렁크의 경우)을 허용하려면 하위 element, 태그, 사용할 vlan 태그(예: 태그 id='42'/ )를 지정합니다. 인터페이스에 두 개 이상의 vlan 요소가 정의되어 있는 경우 사용자가 지정된 모든 태그를 사용하여 VLAN 트렁크를 수행하는 것으로 가정합니다. 단일 태그로 vlan 트렁크가 필요한 경우 최상위 vlan 요소에 선택적 속성 trunk='yes' 를 추가할 수 있습니다.
20.16.9.16. 가상 링크 상태 수정 링크 복사링크가 클립보드에 복사되었습니다!
상태에 가능한 값은 up 및 down 입니다. down 이 값으로 지정되면 인터페이스는 네트워크 케이블의 연결이 끊어진 것처럼 작동합니다. 이 요소가 지정되지 않은 경우 기본 동작으로 링크 상태가 되게 합니다.
그림 20.53. 가상 링크 상태 수정
20.16.10. 입력 장치 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.54. 입력 장치
<input> 요소에는 하나의 필수 특성이 있습니다. type: mouse 또는 tablet 으로 설정할 수 있습니다. 전자는 상대 이동을 사용하는 동안 절대 커서 이동을 제공합니다. 선택적 bus 속성은 정확한 장치 유형을 구체화하는 데 사용할 수 있으며 xen (para virtualized), ps2 및 usb 로 설정할 수 있습니다.
<주소가> 있습니다.
20.16.11. hub Devices 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.55. hub devices
...
<devices>
<hub type='usb'/>
</devices>
...
...
<devices>
<hub type='usb'/>
</devices>
...
usb 일 수 있는 형식입니다. hub 요소에는 특정 컨트롤러에 장치를 연결할 수 있는 type='usb'가 있는 선택적 하위 요소 주소가 있습니다.
20.16.12. 그래픽 프레임 버퍼 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.56. 그래픽 프레임 버퍼
graphics 요소에는 아래 설명과 같이 sdl,vnc,rdp 또는 desktop 값을 사용하는 필수 type 속성이 있습니다.
| 매개변수 | 설명 |
|---|---|
sdl | 그러면 호스트 물리적 시스템 데스크탑에 창이 표시되며, 3개의 선택적 인수를 사용할 수 있습니다. 디스플레이에 사용할 표시 특성, 인증 식별자에 대한 xauth 속성, 값을 수락하는 선택적 전체 화면 특성( 예 또는 없음)이 필요합니다. |
vnc | VNC 서버를 시작합니다. port 속성은 TCP 포트 번호(자동 할당되어야 함을 나타내는 레거시 구문으로 -1 포함)를 지정합니다. autoport 속성은 사용할 TCP 포트 자동 할당을 나타내는 새로운 기본 구문입니다. listen 속성은 서버가 수신 대기할 IP 주소입니다. passwd 속성은 일반 텍스트로 VNC 암호를 제공합니다. keymap 속성은 사용할 키맵을 지정합니다. 암호 유효성에 대한 제한을 설정하여 타임 스탬프 passwdValidTo='2010-04-09T15:51:00' 을 UTC로 지정할 수 있습니다. 연결된 속성을 사용하면 암호 변경 중에 연결된 클라이언트를 제어할 수 있습니다. VNC는 keep 값만 허용하고 모든 하이퍼바이저에서 지원되지 않을 수 있습니다. QEMU는 listen/port를 사용하는 대신 unix 도메인 소켓 경로에서 수신 대기하도록 소켓 속성을 지원합니다. |
SPICE | SPICE 서버를 시작합니다. port 속성은 TCP 포트 번호(-1를 사용하여 자동할 수 있음을 나타내는 레거시 구문으로) 지정하지만 tlsPort 는 대체 보안 포트 번호를 제공합니다. autoport 속성은 두 포트 번호의 자동 할당을 나타내는 새로운 기본 구문입니다. listen 속성은 서버가 수신 대기할 IP 주소입니다. passwd 속성은 일반 텍스트로 SPICE 암호를 제공합니다. keymap 속성은 사용할 키맵을 지정합니다. 암호 유효성에 대한 제한을 설정하여 타임 스탬프 passwdValidTo='2010-04-09T15:51:00' 을 UTC로 지정할 수 있습니다. 연결된 속성을 사용하면 암호 변경 중에 연결된 클라이언트를 제어할 수 있습니다. SPICE는 계속 클라이언트 연결을 유지하고, 클라이언트 연결을 끊을 수 있으며, 암호 변경에 실패하게 됩니다. 모든 하이퍼바이저에서 지원되지 않습니다. defaultMode 속성은 기본 채널 보안 정책, 유효한 값은 안전하지 않은 보안 및 기본값 any 입니다(가능한 경우 안전하지 않은 경우 안전하지만 보안 경로가 없는 경우 오류 발생 대신 비보안 으로 대체됨). |
그래픽 요소 내에 하나 이상의 channel 요소를 추가하여 달성됩니다. 유효한 채널 이름에는 주요 채널 이름,디스플레이,입력,커서,재생,기록, 스마트 카드; 및 usbredir 이 포함됩니다.
그림 20.57. SPICE 구성
이미지 압축을 설정하는 이미지(수용 auto_glz, auto_lz, quick, glz, lz, off), wan(수명, 절대, 절대)을 구성하여 이미지의 JPEG 압축을 위한 jpeg 를 사용할 수 있습니다(수신 이미지 압축 구성(수동, 절대, 절대) 및 외부 스트림 압축을 구성하는 경우 zlib.
streaming 요소에 의해 설정되며, mode 특성을 필터,all 또는 off 중 하나로 설정합니다.
클립보드 요소에 의해 복사 및 붙여넣기 기능( SPICE 에이전트 사용)이 설정됩니다. 기본적으로 활성화되어 있으며 copy paste 속성을 no 로 설정하여 비활성화할 수 있습니다.
마우스 요소에 의해 설정되며, 해당 mode 특성을 서버 또는 클라이언트 중 하나로 설정합니다. 모드를 지정하지 않으면 qemu 기본값이 사용됩니다(클라이언트 모드).
| 매개변수 | 설명 |
|---|---|
rdp | RDP 서버를 시작합니다. port 속성은 TCP 포트 번호(자동 할당되어야 함을 나타내는 레거시 구문으로 -1 포함)를 지정합니다. autoport 속성은 사용할 TCP 포트 자동 할당을 나타내는 새로운 기본 구문입니다. replaceUser 속성은 VM에 대한 여러 동시 연결이 허용되는지 여부를 결정하는 부울입니다. 기존 연결을 삭제해야 하는지 여부와 새 연결은 새 클라이언트가 단일 연결 모드로 연결할 때 VRDP 서버에서 설정해야 합니다. |
desktop | 이 값은 현재Space 도메인에 대해 예약되어 있습니다. "sdl"과 마찬가지로 호스트 물리적 머신 데스크탑에 창을 표시하지만 VirtualBox 뷰어를 사용합니다. "sdl"과 마찬가지로 선택적 특성 표시 및 전체 화면을 허용합니다. |
listen | 그래픽 유형 vnc와 spice에 대한 수신 대기 소켓을 설정하는 데 사용되는 주소 정보를 두는 대신 listen 속성, listen 특성, listen 이라는 그래픽 의 개별 하위 요소를 지정할 수 있습니다(위의 예제 참조). listen 은 다음 속성을 허용합니다.
|
20.16.13. 비디오 장치 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.58. 비디오 장치
graphics 요소에는 아래에 설명된 대로 "sdl", "vnc", "rdp" 또는 "desktop" 값을 사용하는 필수 유형 속성이 있습니다.
| 매개변수 | 설명 |
|---|---|
video | 비디오 요소는 비디오 장치를 설명하는 컨테이너입니다. 이전 버전과의 호환성을 위해 동영상이 설정되지 않지만 domain xml에 그래픽 요소가 있는 경우 libvirt는 게스트 가상 머신 유형에 따라 기본 비디오를 추가합니다. "ram" 또는 "vram"이 기본값을 제공하지 않으면 사용됩니다. |
model | 여기에는 사용 가능한 하이퍼바이저 기능에 따라 vga,cirrus,vmvga,xen,vbox 또는 qxl 값을 사용하는 필수 유형 속성이 있습니다. vram 및 heads가 있는 그림의 수를 사용하여 kibibytes(24바이트의 블록)에서 비디오 메모리 크기를 제공할 수도 있습니다. |
| 가속 | 가속도가 지원되는 경우 가속 요소의 accel3d 및 accel2d 특성을 사용하여 활성화해야 합니다. |
주소 | 선택적 주소 하위 요소를 사용하여 비디오 장치를 특정 PCI 슬롯에 연결할 수 있습니다. |
20.16.14. 콘솔, 직렬, 병렬 및 채널 장치 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.59. 콘솔, 직렬, 병렬 및 채널 장치
주소가 있습니다.
20.16.15. 게스트 가상 머신 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.60. 게스트 가상 머신 인터페이스 병렬 포트
<target> 에는 포트 번호를 지정하는 port 속성이 있을 수 있습니다. 포트가 0에서 시작하여 번호가 매겨집니다. 일반적으로 0, 1 또는 2개의 병렬 포트가 있습니다.
그림 20.61. 게스트 가상 머신 인터페이스 직렬 포트
<target> 에는 포트 번호를 지정하는 port 속성이 있을 수 있습니다. 포트가 0에서 시작하여 번호가 매겨집니다. 일반적으로 0, 1 또는 2개의 직렬 포트가 있습니다. 값에 대해 두 가지 선택 사항이 있는 선택적 type 속성도 있습니다. 하나는 isa-serial 이고 다른 하나는 usb-serial 입니다. type 이 없는 경우 isa-serial 은 기본적으로 사용됩니다. usb-serial의 type='usb' 가 있는 선택적 하위 요소 <주소는> 위에 설명된 특정 컨트롤러에 장치를 연결할 수 있습니다.
<console> 요소는 대화형 콘솔을 나타내는 데 사용됩니다. 사용 중인 게스트 가상 머신 유형에 따라 콘솔이 반가상화 장치이거나 다음 규칙에 따라 직렬 장치의 복제일 수 있습니다.
targetType속성이 설정되지 않은 경우 기본 장치유형은하이퍼바이저의 규칙에 따라 다릅니다. XML을 libvirt에 다시 쿼리할 때 기본유형이추가됩니다. 완전히 가상화된 게스트 가상 머신의 경우 기본 장치 유형은 일반적으로 직렬 포트입니다.targetType속성이serial이면<serial>요소가 없는 경우 콘솔 요소가<serial>요소에 복사됩니다.<serial>요소가 이미 있는 경우 Console 요소는 무시됩니다.targetType속성이직렬로 지정되지 않은 경우 일반적으로 처리됩니다.- 첫 번째
<콘솔>요소만serial의targetType을 사용할 수 있습니다. 보조 콘솔은 모두 반가상화여야 합니다. - s390에서 콘솔 요소는 sclp 또는 sclplm(line mode)의 targetType을 사용할 수 있습니다. SCLP는 s390의 기본 콘솔 유형입니다. SCLP 콘솔과 연결된 컨트롤러가 없습니다.
그림 20.62. 게스트 가상 머신 인터페이스 - virtio 콘솔 장치
<target> 요소는 직렬 포트와 동일한 특성을 갖습니다. 일반적으로 하나의 콘솔만 있습니다.
20.16.16. 채널 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.63. 채널
<채널은> <대상> 요소의 type 특성에 지정됩니다. 채널 유형에는 다음과 같이 대상 속성이 다릅니다.
guestfwd- 게스트 가상 시스템에서 지정된 IP 주소로 전송한 TCP 트래픽을 호스트 물리적 시스템의 채널 장치로 전달되도록 합니다.target요소에는 address 및 port 속성이 있어야 합니다.virtio- 반가상화 virtio 채널.<채널은>/dev/vport*아래의 게스트 가상 머신에 노출되며 선택적 요소이름이지정된 경우/dev/virtio-ports/$name(자세한 내용은 http://fedoraproject.org/wiki/Features/VirtioSerial을 참조하십시오). 선택적 요소주소는위에 설명된 특정type='virtio-serial'컨트롤러에 채널을 연결할 수 있습니다. QEMU를 사용하면 이름이 "org.qemu.guest_agent.0"인 경우 libvirt는 게스트 가상 머신에 설치된 게스트 가상 머신 에이전트와 상호 작용하여 게스트 가상 머신 종료 또는 파일 시스템 격리와 같은 작업을 수행할 수 있습니다.spicevmc- 반가상화 SPICE 채널. 도메인에는 그래픽 장치로 SPICE 서버도 있어야 합니다. 이 장치에는 기본 채널의 물리적 머신 비둘기 메시지 호스트도 있어야 합니다. 속성type='virtio'과 함께target요소가 있어야 합니다. 선택적 속성이름은게스트 가상 머신이 채널에 액세스하는 방법을 제어하고 기본값은name='com.redhat.spice.0'입니다. 선택적<address>요소는 채널을 특정type='virtio-serial'컨트롤러에 연결할 수 있습니다.
20.16.17. 호스트 물리적 시스템 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
| 매개변수 | 설명 | XML 스니펫 |
|---|---|---|
| 도메인 로그 파일 | 문자 장치의 모든 입력을 비활성화하고 가상 시스템의 logfile로 출력을 보냅니다. |
<devices>
<console type='stdio'>
<target port='1'/>
</console>
</devices>
|
| 장치 로그 파일 | 파일이 열리고 문자 장치로 전송된 모든 데이터가 파일에 기록됩니다. |
|
| 가상 콘솔 | 가상 콘솔의 그래픽 프레임 버퍼에 문자 장치를 연결합니다. 이는 일반적으로 "ctrl+alt+3"과 같은 특수 핫키 시퀀스를 통해 액세스됩니다. |
<devices>
<serial type='vc'>
<target port="1"/>
</serial>
</devices>
|
| null 장치 | void에 문자 장치를 연결합니다. 입력에 데이터가 제공되지 않습니다. 기록된 모든 데이터는 삭제됩니다. |
<devices>
<serial type='null'>
<target port="1"/>
</serial>
</devices>
|
| 의사 TTY | Pseudo TTY는 /dev/ptmx 를 사용하여 할당됩니다. virsh 콘솔 과 같은 적절한 클라이언트는 직렬 포트와 로컬로 상호 작용하기 위해 연결할 수 있습니다. |
|
| NB 특별 케이스 | <콘솔 type='pty'> 인 경우 NB 특수 케이스는 TTY 경로도 최상위 <콘솔> 태그의 tty='/dev/pts/3 속성으로 중복됩니다. 이렇게 하면 <콘솔> 태그에 대한 기존 구문이 표시됩니다. | |
| 호스트 물리적 머신 장치 프록시 | 문자 장치는 기본 물리적 문자 장치로 전달됩니다. 장치 유형이 일치해야 합니다. 에뮬레이션된 직렬 포트는 호스트 물리적 시스템 직렬 포트에만 연결해야 합니다. 직렬 포트를 병렬 포트에 연결하지 마십시오. |
|
| 명명된 파이프 | 문자 장치는 명명된 파이프에 출력을 씁니다. 자세한 내용은 pipe(7) 매뉴얼 페이지를 참조하십시오. |
|
| TCP 클라이언트/서버 | 문자 장치는 원격 서버에 연결하는 TCP 클라이언트 역할을 합니다. |
또는 TCP 서버가 클라이언트 연결을 대기 중인 경우.
또는 raw TCP 대신 telnet을 사용할 수 있습니다. 또한 telnets(보안 telnet) 및 tls를 사용할 수도 있습니다.
|
| UDP 네트워크 콘솔 | 문자 장치는 UDP netconsole 서비스 역할을 하며 패킷을 전송 및 수신합니다. 이것은 손실된 서비스입니다. |
|
| UNIX 도메인 소켓 클라이언트/서버 | 문자 장치는 로컬 클라이언트의 연결을 수락하는 UNIX 도메인 소켓 서버 역할을 합니다. |
|
20.17. 사운드 장치 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.64. 가상 사운드 카드
...
<devices>
<sound model='es1370'/>
</devices>
...
...
<devices>
<sound model='es1370'/>
</devices>
...
model 이 있습니다. 유효한 값은 기본 하이퍼바이저에 한정되지만 일반적인 선택 사항은 'es1370', 'sb16', 'ac97', 'ich6' 입니다. 또한 ich6 모델의 사운드 요소에는 다양한 오디오 코덱을 오디오 장치에 첨부하기 위한 선택적인 하위 요소 codec 가 있을 수 있습니다. 지정하지 않으면 재생 및 레코딩을 허용하도록 기본 codec가 첨부됩니다. 유효한 값은 'duplex' (경로 및 줄 아웃) 및 '마이크아웃 ' (고유자 및 마이크로폰을 반전)입니다.
그림 20.65. 사운드 장치
<주소가> 있습니다.
20.18. 워치독 장치 링크 복사링크가 클립보드에 복사되었습니다!
<> 워치독 장치에는 게스트 가상 머신에 추가 드라이버 및 관리 데몬이 필요합니다. libvirt 구성에서 워치독을 활성화하면 자체적으로 유용한 작업은 없습니다. 현재 워치독이 실행되는 경우 지원 알림이 없습니다.
그림 20.66. 워치독 장치
모델- 필요한모델속성은 실제 워치독 장치가 에뮬레이션된 것을 지정합니다. 유효한 값은 기본 하이퍼바이저에 따라 다릅니다.model속성은 다음 값을 사용할 수 있습니다.i6300esb- PCI Intel 6300baremetal를 에뮬레이션하는 권장 장치ib700- wrong iBase IB700을 에뮬레이션
동작- 선택적action속성은 워치독이 만료될 때 수행할 작업을 설명합니다. 유효한 값은 기본 하이퍼바이저에 따라 다릅니다.action속성에는 다음 값이 있을 수 있습니다.reset- 기본 설정, 게스트 가상 머신 강제 재설정shutdown- guest 가상 머신을 정상적으로 종료합니다(권장하지 않음)poweroff- 게스트 가상 머신의 전원을 강제로 끕니다.pause- 게스트 가상 머신 일시 정지없음- 아무것도 하지 않음dump- guest 가상 머신을 자동으로 덤프합니다.
20.19. 메모리 Balloon 장치 링크 복사링크가 클립보드에 복사되었습니다!
<memballoon> 요소라고 볼 수 있습니다. 적절한 경우 자동으로 추가되므로 특정 PCI 슬롯을 할당해야 하는 경우를 제외하고 게스트 가상 머신 XML에 이 요소를 명시적으로 추가할 필요가 없습니다. memballoon 장치를 명시적으로 비활성화해야하는 경우 model='none' 을 사용할 수 있습니다.
그림 20.67. 메모리 풍선 장치
...
<devices>
<memballoon model='virtio'/>
</devices>
...
...
<devices>
<memballoon model='virtio'/>
</devices>
...
그림 20.68. 메모리 풍선 장치가 수동으로 추가됨
모델 속성은 제공되는 풍선 장치의 유형을 지정합니다. 유효한 값은 가상화 플랫폼에 따라 다릅니다. 'virtio' 은 Xen 하이퍼바이저의 기본 설정인 KVM 하이퍼바이저 또는 'xen' 의 기본 설정인 'virtio'입니다.
20.20. 보안 레이블 링크 복사링크가 클립보드에 복사되었습니다!
<seclabel> 요소를 사용하면 보안 드라이버 작업을 제어할 수 있습니다. libvirt에서 고유한 보안 레이블을 자동으로 생성하는 '동적'의 기본 모드는 세 가지입니다. 여기서 libvirt는 고유한 보안 레이블을 자동으로 생성합니다. 애플리케이션/관리자가 레이블을 선택하거나, 제한을 해제하는 'none' 입니다. 동적 레이블 생성을 사용하면 libvirt는 항상 가상 머신과 연결된 모든 리소스의 레이블을 자동으로 다시 지정합니다. 정적 레이블 할당에서는 기본적으로 관리자 또는 애플리케이션에서 모든 리소스에 레이블이 올바르게 설정되어 있는지 확인해야 합니다. 그러나 원하는 경우 자동 재레이블을 활성화할 수 있습니다.
모델 Valid input XML 구성을 사용하여 정의할 수 있습니다.
그림 20.69. 보안 레이블
'type' 속성이 제공되지 않으면 보안 드라이버 기본 설정이 사용되며 'none' 또는 'dynamic' 일 수 있습니다. <baselabel> 이 설정되어 있지만 'type' 이 설정되지 않은 경우 유형은 '동시 '로 간주됩니다. 자동 리소스가 활성 상태인 실행 중인 게스트 가상 머신의 XML을 볼 때 추가 XML 요소인 imagelabel 이 포함됩니다. 이는 출력 전용 요소이므로 사용자가 제공한 XML 문서에서 무시됩니다.
type-정적, 동적또는none을 선택하여 libvirt가 고유한 보안 레이블을 자동으로 생성하는지 여부를 확인합니다.모델- 현재 활성화된 보안 모델과 일치하는 유효한 보안 모델 이름입니다.레이블 다시 지정-예 또는입니다. 동적 레이블 할당이 사용되는 경우 항상아니요예여야 합니다. 정적 레이블을 할당하면 기본값은no입니다.<label>- 정적 라벨을 사용하는 경우 가상 도메인에 할당할 전체 보안 레이블을 지정해야 합니다. 콘텐츠 형식은 사용 중인 보안 드라이버에 따라 다릅니다.selinux: SELinux 컨텍스트.AppArmor: AppArmor 프로필.DAC: 소유자와 그룹은 콜론으로 구분됩니다. 사용자/그룹 이름 또는 uid/gid로 모두 정의할 수 있습니다. 드라이버는 먼저 이러한 값을 이름으로 구문 분석하려고 하지만 선행 기호를 사용하여 드라이버를 uid 또는 gid로 구문 분석하도록 할 수 있습니다.
<baselabel>- 동적 라벨을 사용하는 경우 선택적으로 기본 보안 레이블을 지정하는 데 사용할 수 있습니다. 콘텐츠 형식은 사용 중인 보안 드라이버에 따라 다릅니다.<imagelabel>- 출력 전용 요소이며, 가상 도메인과 연결된 리소스에 사용되는 보안 레이블을 표시합니다. 콘텐츠 형식은 레이블을 비활성화할 때 사용 중인 보안 드라이버를 사용하는 보안 드라이버에 따라 달라지며, 레이블링을 비활성화하여(파일이 보안 레이블링이 없는 경우 NFS 또는 기타 파일 시스템에 존재하는 경우 사용) 또는 대체 라벨을 요청하는 방식으로 특정 소스 파일 이름에 대해 수행되는 레이블을 미세 조정할 수 있습니다(관리 애플리케이션에서 일부 리소스를 공유하도록 허용하는 경우 특수 레이블이 생성됨). seclabel 요소가 최상위 도메인 할당이 아닌 특정 경로에 연결된 경우 특성 재레이블 또는 하위 요소 레이블만 지원됩니다.
20.21. 도메인 XML 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
그림 20.70. 도메인 XML 구성 예
그림 20.71. 도메인 XML 구성 예
21장. 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
21.1. 디버깅 및 문제 해결 툴 링크 복사링크가 클립보드에 복사되었습니다!
- kvm_stat - 참조 21.4절. “kvm_stat”
- trace-cmd
- ftrace 참조 Red Hat Enterprise Linux 개발자 가이드
- vmstat
- iostat
- lsof
- systemtap
- crash
- sysrq
- sysrq t
- sysrq w
- ifconfig
- tcpdumptcpdump 명령 'sniffs' 네트워크 패킷. tcpdump 는 네트워크 비정상 및 네트워크 인증 문제를 찾는 데 유용합니다. wireshark 라는 그래픽 버전의 tcpdump 가 있습니다.
- brctlbrctl 은 Linux 커널에서 이더넷 브리지 구성을 검사하고 구성하는 네트워킹 도구입니다. 다음 예제 명령을 수행하기 전에 root 액세스 권한이 있어야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- strace 는 다른 프로세스에서 수신하고 사용하는 시스템 호출 및 이벤트를 추적하는 명령입니다.
- vncviewer: 서버 또는 가상 머신에서 실행 중인 VNC 서버에 연결합니다. yum installwnvnc 명령을 사용하여 vncviwer 를 설치합니다.
- vncserver: 서버에서 원격 데스크탑을 시작합니다. 원격 세션을 통해 virt-manager와 같은 그래픽 사용자 인터페이스를 실행할 수 있는 기능을 제공합니다. yum installpxevnc-server 명령을 사용하여 vncserver 를 설치합니다.
21.2. 재해 복구 준비 링크 복사링크가 클립보드에 복사되었습니다!
/etc/libvirt디렉토리에서 모든 파일./var/lib/libvirt디렉토리에서 다음 항목을 백업하십시오.- 현재 dnsmasq DHCP 리스는
/var/lib/libvirt/dnsmasq에 있습니다. /var/lib/libvirt/network에 있는 실행 중인 가상 네트워크 구성 파일- 게스트의 현재 상태를 저장할 때 virt-manager 에서 생성한 게스트 가상 머신 파일(있는 경우). 해당 파일은
/var/lib/libvirt/qemu/save/디렉터리에서 찾을 수 있습니다. virsh save 명령을 사용하여 가상 시스템을 생성하는 경우 사용자가 virsh save 에 대해 지정된 위치에서 파일을 찾을 수 있습니다. - qemu-img create 및 virsh snapshot-create 명령을 통해 생성된 게스트 가상 시스템 스냅샷 파일은 사용자가 명령에 지정된 위치에 있습니다.
- virt-manager 에서 생성한 게스트 가상 머신 디스크 이미지(있는 경우)는
/var/lib/libvirt/images/디렉토리에 있습니다. virsh pool-define 명령이 가상 스토리지를 생성하는 데 사용된 경우, 이미지 파일은 사용자가 virsh pool-define 에 지정된 위치에서 찾을 수 있습니다. 게스트 이미지 파일을 백업하는 방법에 대한 지침은 절차 21.1. “재해 복구를 위해 게스트 가상 머신의 디스크 이미지 백업 생성” 에 설명된 단계를 사용하십시오.
- 브리지를 사용하는 경우
/etc/sysconfig/network-scripts/ifcfg-<bridge_name에 있는 파일도 백업해야 합니다. - 선택적으로
/var/lib/libvirt/qemu/dump에 있는 게스트 가상 머신 코어 덤프 파일은 실패의 원인을 분석하기 위해 사용할 수도 있습니다. 그러나 이러한 파일은 일부 시스템에서 매우 커질 수 있습니다.
절차 21.1. 재해 복구를 위해 게스트 가상 머신의 디스크 이미지 백업 생성
- 게스트 가상 머신 디스크 이미지만 백업하려면
/var/lib/libvirt/images에 있는 파일을 백업하십시오. LVM 논리 볼륨으로 게스트 가상 머신 디스크 이미지를 백업하려면 다음 명령을 실행합니다.lvcreate --snapshot --name snap --size 8G /dev/vg0/data
# lvcreate --snapshot --name snap --size 8G /dev/vg0/dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 64G 볼륨의 일부로 크기가 8G인 snap라는 스냅샷 볼륨을 생성합니다. - 이 명령과 유사한 명령을 사용하여 스냅샷에 대한 파일을 생성합니다.
mkdir /mnt/virt.snapshot
# mkdir /mnt/virt.snapshotCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 사용하여 생성한 디렉터리 및 스냅샷 볼륨을 마운트합니다.
mount /dev/vg0/snap /mnt/virt.snapshot
# mount /dev/vg0/snap /mnt/virt.snapshotCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령 중 하나를 사용하여 볼륨을 백업합니다.
tar -pzc -f /mnt/backup/virt-snapshot-MM-DD-YYYY.tgz /mnt/virt.snapshot++++++++++++
# tar -pzc -f /mnt/backup/virt-snapshot-MM-DD-YYYY.tgz /mnt/virt.snapshot++++++++++++Copy to Clipboard Copied! Toggle word wrap Toggle overflow rsync -a /mnt/virt.snapshot/ /mnt/backup/virt-snapshot.MM-DD-YYYY/
# rsync -a /mnt/virt.snapshot/ /mnt/backup/virt-snapshot.MM-DD-YYYY/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. virsh Dump 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
#virsh dump <domain> <corefilepath> [--bypass-cache] { [--live] | [--crash] | [--reset] } [--verbose] [--memory-only]
#virsh dump <domain> <corefilepath> [--bypass-cache] { [--live] | [--crash] | [--reset] } [--verbose] [--memory-only]
- --live 는 실행 중인 머신에 덤프 파일을 생성하고 일시 중지하지 않습니다.
- --crash 는 guest 가상 머신을 중지하고 덤프 파일을 생성합니다. 주요 차이점은 게스트 가상 머신이 중지됨으로 나열되지 않으며 이유는 Crashed입니다. virt-manager 에서는 상태가 Paused로 나열됩니다.
- --reset 은 성공적인 덤프로 게스트 가상 머신을 재설정합니다. 이 세 스위치는 함께 사용할 수 없습니다.
- --bypass-cache 는 O_DIRECT를 사용하여 파일 시스템 캐시를 바이패스합니다.
- --memory-only 덤프 파일은 elf 파일로 저장되며 도메인의 메모리 및 cpu 공통 레지스터 값만 포함합니다. 이 옵션은 도메인이 호스트 장치를 직접 사용하는 경우 매우 유용합니다.
- --verbose 는 덤프의 진행 상황을 표시합니다.
21.4. kvm_stat 링크 복사링크가 클립보드에 복사되었습니다!
kvm 커널 모듈에서 런타임 통계를 검색하는 python 스크립트입니다. kvm_stat 명령은 kvm 에 표시되는 게스트 동작을 진단하는 데 사용할 수 있습니다. 특히 게스트와 관련된 성능 관련 문제는 다음과 같습니다. 현재 보고된 통계는 전체 시스템에 대한 것이며 실행 중인 모든 게스트의 동작이 보고됩니다. 이 스크립트를 실행하려면 qemu-kvm-tools 패키지를 설치해야 합니다.
kvm 커널 모듈이 로드되고 debugfs 가 마운트됩니다. 이러한 기능 중 하나를 활성화하지 않으면 명령은 debugfs 또는 kvm 모듈을 활성화하는 데 필요한 단계를 출력합니다. 예를 들어 다음과 같습니다.
kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded
# kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded
mount -t debugfs debugfs /sys/kernel/debug
# mount -t debugfs debugfs /sys/kernel/debug
kvm_stat 출력
kvm_stat 명령은 모든 게스트 및 호스트에 대한 통계를 출력합니다. 명령이 종료될 때까지 출력이 업데이트됩니다( Ctrl+c 또는 q 키 사용).
변수에 대한 설명:
- efer_reload
- EFER(Extended Feature Enable Register)가 다시 로드되는 수입니다.
- 종료
- 모든
VMEXIT호출 수입니다. - fpu_reload
VMENTRY가 FPU 상태를 다시 로드한 횟수입니다. 게스트가FPU(유동 포인트 단위)를 사용하는 경우 fpu_reload 가 증가합니다.- halt_exits
중지호출으로 인한 게스트 종료 수입니다. 이러한 유형의 종료는 일반적으로 게스트가 유휴 상태일 때 표시됩니다.- halt_wakeup
- 중지에서 발생한 오류 발생 수
입니다. - host_state_reload
- 호스트 상태에 대한 전체 재로드 수(현재 MSR 설정 및 게스트 MSR 읽기)입니다.
- 하이퍼 호출
- 게스트 하이퍼바이저 서비스 호출 수입니다.
- insn_emulation
- 호스트에서 에뮬레이션한 게스트 명령 수입니다.
- insn_emulation_fail
- 실패한
insn_emulation시도 수입니다. - io_exits
- I/O 포트 액세스에서 종료되는 게스트 수입니다.
- irq_exits
- 외부 인터럽트로 인해 종료 수입니다.
- irq_injections
- 게스트에 전송된 인터럽트 수입니다.
- irq_window
- 게스트 수는 적용되지 않은 인터럽트 창에서 종료됩니다.
- largepages
- 현재 사용 중인 큰 페이지 수입니다.
- mmio_exits
- Memory mapped I/O (MMIO) 액세스로 인해 게스트 수가 종료됩니다.
- mmu_cache_miss
- 생성된 KVM MMU 섀도우 페이지 수입니다.
- mmu_flooded
- MMU 페이지에 대한 과도한 쓰기 작업의 탐지 수입니다. 이 수는 개별 쓰기 작업이 아닌 쓰기 작업을 감지했습니다.
- mmu_pde_zapped
- PDE(Page Directory entry) 삭제 작업 수입니다.
- mmu_pte_updated
- 페이지 테이블 항목 (PTE) 삭제 작업 수.
- mmu_pte_write
- 게스트 페이지 테이블 항목(PTE) 쓰기 작업 수입니다.
- mmu_recycled
- 회수할 수 있는 그림자 페이지 수입니다.
- mmu_shadow_zapped
- 유효하지 않은 그림자 페이지 수.
- mmu_unsync
- 아직 연결되지 않은 동기화되지 않은 페이지 수입니다.
- nmi_injections
- nMI(Non-maskable Interrupt) 삽입 수입니다.
- nmi_window
- 게스트 수는 (거울) NMI(Non-maskable Interrupt) 창에서 종료됩니다.
- pf_fixed
- 고정되지 않은 페이지 테이블 항목(PTE) 수입니다.
- pf_guest
- 게스트에 삽입된 페이지 폴트 수입니다.
- remote_tlb_flush
- 원격(sibling CPU) Translation lookaside Buffer (TLB) 플러시 요청 수입니다.
- request_irq
- 게스트 중단 창 요청 수가 종료됩니다.
- signal_exits
- 호스트에서 보류 중인 신호 때문에 게스트 수가 종료됩니다.
- tlb_flush
- 하이퍼바이저에서 수행하는
tlb_flush작업의 수입니다.
/sys/kernel/debug/kvm/ 디렉터리에 있는 의사 파일로 KVM 하이퍼바이저에 의해 내보냅니다.
21.5. 게스트 가상 시스템 종료 실패 링크 복사링크가 클립보드에 복사되었습니다!
절차 21.2. 게스트 가상 머신에서 게스트 에이전트 채널 구성
- 게스트 가상 머신을 중지합니다.
- 게스트 가상 머신용 도메인 XML을 열고 다음 스니펫을 추가합니다.
그림 21.1. 게스트 에이전트 채널 구성
<channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel><channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - virsh start [domain] 을 실행하여 게스트 가상 시스템을 시작합니다.
- 게스트 가상 머신(yum install qemu-guest-agent )에 qemu-guest-agent를 설치하고 서비스(qemu-guest-agent.service)로 부팅할 때마다 자동으로 실행되도록 합니다. 자세한 내용은 10장. QEMU-img 및 QEMU 게스트 에이전트 를 참조하십시오.
21.6. 직렬 콘솔 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
- 출력 데이터는 삭제하거나 스크램블될 수 있습니다.
ttyS0 또는 Windows의 COM1 이라고 합니다.
/boot/grub/grub.conf 파일을 수정합니다. 커널 행에 다음을 추가합니다. console=tty0 console=ttyS0,115200.
virsh console
# virsh console
21.7. 가상화 로그 파일 링크 복사링크가 클립보드에 복사되었습니다!
- 각 완전 가상화된 게스트 로그는
/var/log/libvirt/qemu/디렉토리에 있습니다. 각 게스트 로그의 이름은 GuestName.log로 지정되며 크기 제한에 도달하면 정기적으로 압축됩니다.
21.8. 장치 오류 루프 링크 복사링크가 클립보드에 복사되었습니다!
/etc/modprobe.d/디렉터리에서 구성된 루프 장치 수를 조정할 수 있습니다. 다음 행을 추가합니다.
options loop max_loop=64
options loop max_loop=64
21.9. 실시간 마이그레이션 오류 링크 복사링크가 클립보드에 복사되었습니다!
21.10. BIOS에서 Intel VT-x 및 AMD-V 가상화 하드웨어 확장 활성화 링크 복사링크가 클립보드에 복사되었습니다!
절차 21.3. BIOS에서 가상화 확장 활성화
- 컴퓨터를 재부팅하고 시스템의 BIOS 메뉴를 엽니다. 이 작업은 일반적으로 시스템에 따라 키, F1 키 또는 Alt 및 F4 키를 눌러 수행할 수 있습니다.
BIOS에서 가상화 확장 활성화
참고아래의 대부분의 단계는 마더보드, 프로세서 유형, 칩셋 및 OEM에 따라 다를 수 있습니다. 시스템 구성에 대한 올바른 정보는 시스템 관련 설명서를 참조하십시오.- Processor 하위 메뉴를 열고 Chipset,Advanced CPU Configuration 또는 Northbridge 에서 프로세서 설정 메뉴를 숨길 수 있습니다.
- Intel VT-x라고도 하는 Intel Virtualization Technology 를 활성화합니다. AMD-V 확장은 BIOS에서 비활성화할 수 없으며 이미 활성화되어 있어야 합니다. 가상화 확장 기능은 OEM 및 시스템 BIOS에 따라 가상화 확장 기능,Vanderpool 또는 기타 다양한 이름으로 레이블이 지정될 수 있습니다.
- 옵션을 사용할 수 있는 경우 Intel VT-d 또는 AMD IOMMU를 활성화합니다. Intel VT-d 및 AMD IOMMU는 PCI 장치 할당에 사용됩니다.
- Save & Exit를 선택합니다.
- 시스템을 재부팅합니다.
- 머신이 부팅되면 cat /proc/cpuinfo |grep -E "vmx|svm" 을 실행합니다.
--color를 지정하는 것은 선택 사항이지만 검색 용어를 강조 표시하려는 경우 유용합니다. 명령이 출력되면 이제 가상화 확장이 활성화됩니다. 출력이 없는 경우 시스템에 가상화 확장 기능이 없거나 올바른 BIOS 설정이 활성화되어 있지 않을 수 있습니다.
21.11. KVM 네트워킹 성능 링크 복사링크가 클립보드에 복사되었습니다!
e1000) 드라이버도 에뮬레이션된 드라이버 선택으로 지원됩니다. e1000 드라이버를 사용하려면 아래 절차의 virtio 를 e1000 으로 교체합니다. 최상의 성능을 위해서는 virtio 드라이버를 사용하는 것이 좋습니다.
절차 21.4. virtio 드라이버로 전환
- 게스트 운영 체제를 종료합니다.
- virsh 명령을 사용하여 게스트의 설정 파일을 편집합니다(여기서
GUEST는 게스트 이름임).virsh edit GUEST
# virsh edit GUESTCopy to Clipboard Copied! Toggle word wrap Toggle overflow virsh edit 명령은 $EDITOR 쉘 변수를 사용하여 사용할 편집기를 결정합니다. - 구성의 네트워크 인터페이스 섹션을 찾습니다. 이 섹션은 아래 코드 조각과 유사합니다.
<interface type='network'> [output truncated] <model type='rtl8139' /> </interface>
<interface type='network'> [output truncated] <model type='rtl8139' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - model 요소의 type 속성을
'rtl8139'에서'virtio'으로 변경합니다. 이렇게 하면 드라이버가 rtl8139 드라이버에서 e1000 드라이버로 변경됩니다.<interface type='network'> [output truncated] <model type='virtio' /> </interface>
<interface type='network'> [output truncated] <model type='virtio' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 저장하고 텍스트 편집기를 종료합니다.
- 게스트 운영 체제를 다시 시작합니다.
다른 네트워크 드라이버를 사용하여 새 게스트 생성
또는 다른 네트워크 드라이버를 사용하여 새 게스트를 생성할 수 있습니다. 네트워크 연결을 통해 게스트를 설치하는 데 문제가 있는 경우 이 작업이 필요할 수 있습니다. 이 방법을 사용하려면 하나 이상의 게스트가 이미 생성되어(CD 또는 DVD에서 설치될 수 있음) 템플릿으로 사용해야 합니다.
- 기존 게스트에서 XML 템플릿을 생성합니다(이 예에서는 Guest1).
virsh dumpxml Guest1 > /tmp/guest-template.xml
# virsh dumpxml Guest1 > /tmp/guest-template.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - XML 파일을 복사 및 편집하고 가상 시스템 이름, UUID, 디스크 이미지, MAC 주소 및 기타 고유한 매개변수 등 고유한 필드를 업데이트합니다. UUID 및 MAC 주소 행을 삭제할 수 있으며 virsh는 UUID 및 MAC 주소를 생성합니다.
cp /tmp/guest-template.xml /tmp/new-guest.xml vi /tmp/new-guest.xml
# cp /tmp/guest-template.xml /tmp/new-guest.xml # vi /tmp/new-guest.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 인터페이스 섹션에 model 행을 추가합니다.<interface type='network'> [output truncated] <model type='virtio' /> </interface>
<interface type='network'> [output truncated] <model type='virtio' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 가상 머신을 생성합니다.
virsh define /tmp/new-guest.xml virsh start new-guest
# virsh define /tmp/new-guest.xml # virsh start new-guestCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.12. libvirt를 사용하여 외부 스냅샷 생성 해결 방법 링크 복사링크가 클립보드에 복사되었습니다!
21.13. 일본어 키보드를 사용하는 게스트 콘솔에서 누락된 문자 링크 복사링크가 클립보드에 복사되었습니다!
atkdb.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0). atkbd.c: Use 'setkeycodes 00 <keycode>' to make it known.
atkdb.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0).
atkbd.c: Use 'setkeycodes 00 <keycode>' to make it known.
- virt-manager 에서 영향을 받는 게스트를 엽니다.
- + 클릭합니다.
- 목록에서 VNC 디스플레이를 선택합니다.
- Keymap 풀다운 메뉴에서 Auto 를 ja 로 변경합니다.
- Apply 버튼을 클릭합니다.
- virsh edit <target guest> 실행
- 태그에 다음 속성을 추가합니다 {c>. keymap='ja'. 예를 들어 다음과 같습니다.
<graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.14. 가상화 확장 확인 링크 복사링크가 클립보드에 복사되었습니다!
- 다음 명령을 실행하여 CPU 가상화 확장을 사용할 수 있는지 확인합니다.
grep -E 'svm|vmx' /proc/cpuinfo
$ grep -E 'svm|vmx' /proc/cpuinfoCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 출력을 분석합니다.
- 다음 출력에는 Intel VT-x 확장 기능이 있는 Intel 프로세서를 나타내는
vmx항목이 포함되어 있습니다.flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lmCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 출력에는 AMD-V 확장 기능이 있는 AMD 프로세서를 나타내는
svm항목이 포함되어 있습니다.flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
출력을 수신하면 프로세서에 하드웨어 가상화 확장 기능이 있습니다. 그러나 경우에 따라 제조업체가 BIOS에서 가상화 확장을 사용하지 않도록 설정합니다."출력 콘텐츠는 시스템의 각 하이퍼스레드, 코어 또는 CPU에 대해 한 번 여러 번 나타날 수 있습니다.BIOS에서 가상화 확장 기능을 비활성화할 수 있습니다. 확장 기능이 나타나지 않거나 전체 가상화가 작동하지 않는 경우 절차 21.3. “BIOS에서 가상화 확장 활성화” 에서 참조하십시오. KVM 하위 시스템이 로드되었는지 확인
추가 검사로kvm모듈이 커널에 로드되었는지 확인합니다.lsmod | grep kvm
# lsmod | grep kvmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에kvm_intel또는kvm_amd가 포함된 경우kvm하드웨어 가상화 모듈이 로드되고 시스템이 요구 사항을 충족합니다.
부록 A. 가상 호스트 지표 데몬(vhostmd) 링크 복사링크가 클립보드에 복사되었습니다!
부록 B. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
B.1. 온라인 리소스 링크 복사링크가 클립보드에 복사되었습니다!
- http://www.libvirt.org/ 은(는) libvirt 가상화 API의 공식 웹 사이트입니다.
- https://virt-manager.org/ 는 가상 머신을 관리하기 위한 그래픽 애플리케이션인 Virtual Machine Manager (virt-manager)의 프로젝트 웹 사이트입니다.
- Red Hat Virtualization - http://www.redhat.com/products/cloud-computing/virtualization/
- Red Hat 제품 설명서 - https://access.redhat.com/documentation/en/
- Virtualization technologies overview - http://virt.kernelnewbies.org
B.2. 설치된 문서 링크 복사링크가 클립보드에 복사되었습니다!
- man virsh 및
/usr/share/doc/libvirt- <version-number> - virsh 가상 시스템 관리 유틸리티에 대한 하위 명령 및 옵션뿐만 아니라libvirt가상화 라이브러리 API에 대한 포괄적인 정보를 포함합니다. /usr/share/doc/gnome-applet-vm- <version-number> - 로컬 실행 가상 머신을 모니터링하고 관리하는 GNOME 그래픽 패널 애플릿에 대한 설명서입니다./usr/share/doc/libvirt-python- <version-number> -libvirt라이브러리의 Python 바인딩에 대한 세부 정보를 제공합니다.libvirt-python패키지를 사용하면 python 개발자가libvirt가상화 관리 라이브러리와 인터페이스하는 프로그램을 만들 수 있습니다./usr/share/doc/python-virtinst- <version-number> - 가상 머신 내부에서 Fedora 및 Red Hat Enterprise Linux 관련 배포판을 설치하는 데 도움이 되는 virt-install 명령에 대한 설명서를 제공합니다./usr/share/doc/virt-manager- <version-number> - 가상 머신을 관리하기 위한 그래픽 도구를 제공하는 Virtual Machine Manager에 대한 설명서를 제공합니다.
부록 C. 개정 내역 링크 복사링크가 클립보드에 복사되었습니다!
| 고친 과정 | |||
|---|---|---|---|
| 고침 1-502 | Mon Mar 08 2017 | ||
| |||
| 고침 1-501 | Mon May 02 2016 | ||
| |||
| 고침 1-500 | Thu Mar 01 2016 | ||
| |||
| 고침 1-449 | Thu Oct 08 2015 | ||
| |||
| 고침 1-447 | Fri Jul 10 2015 | ||
| |||