qemu/kvm을 사용하여 가상 머신을 생성하고 기존 Tap 인터페이스를 가상 머신에 할당하고 싶습니다. virsh
CLI 또는 GUI를 사용하여 virt-manager
이를 수행하는 방법은 무엇입니까 ?
이 수동 qemu 호출에 해당하는 libvirt를 찾고 있습니다.
qemu-system-x86_64 -net nic, 모델=virtio, macaddr= -net tap, ifname=MY_EXISTING_TAP_INTERFACE, script=no
브리지를 포함하여 모든 네트워킹을 직접 관리하는 복잡한 멀티홈 방화벽과 라우터가 있기 때문에 이것을 원합니다. 가상 머신이 내가 준비한 Tap 인터페이스만 사용하고 다른 작업은 수행하지 않기를 원합니다.
답변1
virt-manager GUI를 사용하면 가상 머신의 세부 정보를 볼 수 있고, 버튼을 클릭하고 , 대화 상자에서 세부 정보를 Add Hardware
선택 하고 입력할 수 있습니다.Network
명령줄에서 를 사용할 수 있습니다. virsh attach-interface
또는 NIC에 적합한 XML 조각을 생성/복사한 경우에는 다음을 사용하십시오 virsh attach-device
(BTW, attach-interface
하위 명령에는 --print-xml
인터페이스를 연결하는 대신 XML 조각만 인쇄하는 옵션이 있습니다).
virsh
매뉴얼 페이지와libvirt.org웹 사이트에는 광범위한 내장 도움말도 있습니다. 예를 들어:
# virsh attach-interface --help
NAME
attach-interface - attach network interface
SYNOPSIS
attach-interface <domain> <type> <source> [--target <string>] [--mac <string>]
[--script <string>] [--model <string>] [--alias <string>] [--inbound <string>]
[--outbound <string>] [--persistent] [--config] [--live] [--current] [--print-xml]
[--managed] [--source-mode <string>]
DESCRIPTION
Attach new network interface.
OPTIONS
[--domain] <string> domain name, id or uuid
[--type] <string> network interface type
[--source] <string> source of network interface
--target <string> target network name
--mac <string> MAC address
--script <string> script used to bridge network interface
--model <string> model type
--alias <string> custom alias name of interface device
--inbound <string> control domain's incoming traffics
--outbound <string> control domain's outgoing traffics
--persistent make live change persistent
--config affect next boot
--live affect running domain
--current affect current domain
--print-xml print XML document rather than attach the interface
--managed libvirt will automatically detach/attach the device from/to host
--source-mode <string> mode attribute of <source/> element
# virsh attach-device --help
NAME
attach-device - attach device from an XML file
SYNOPSIS
attach-device <domain> <file> [--persistent] [--config] [--live] [--current]
DESCRIPTION
Attach device from an XML <file>.
OPTIONS
[--domain] <string> domain name, id or uuid
[--file] <string> XML file
--persistent make live change persistent
--config affect next boot
--live affect running domain
--current affect current domain
기억하세요, 와 함께 libvirt
,모든 것VM 정보("도메인")는 궁극적으로 XML을 사용하여 구성됩니다. libvirt 자체와 libvirt가 관리하는 모든 가상 머신에 대한 XML 구성 파일과 구성 파일 조각을 생성하고 수정하기 위한 도구입니다 virsh
.virt-manager
virsh
도메인의 전체 XML 구성이나 특정 장치의 XML 조각을 표준 출력으로 덤프하는 여러 명령이 있습니다. 나중에 사용하기 위해 파일로 리디렉션될 수 있습니다. 또는 이와 유사한 것을 사용하여 수정할 수도 있습니다 xmlstarlet
(XML 출력은 편리하게 거의 라인 지향 형식이므로 awk, sed 또는 perl 등을 사용하여 합리적으로 수정할 수 있지만 도구를 사용하는 것이 더 나을 것입니다). 또는 언어 올바른 XML을 구문 분석하고 생성할 수 있으며 재사용하여 기존 VM을 업데이트하거나 약간 다른 새 VM을 생성할 수 있습니다.
예를 들어 명령 및 XML 구성 파일/조각으로 수행할 수 있는 작업을 virsh help | grep -i xml
확인하려면 실행해 보세요 .virsh
그런데 다양한 "편집" 하위 명령(예: , , edit
등)은 XML을 원하는 편집기(일반 또는 환경 변수를 통해)에 로드하여 편집할 수 있도록 합니다. 변경 사항을 저장한 후 XML이 확인을 통과하면 편집 중인 항목에 따라 가상 머신 또는 자체를 재구성하는 데 사용됩니다.iface-edit
pool-edit
$EDITOR
$VISUAL
libvirt
답변2
같은 문제가 있습니다. 내 (주로) 호스트 기반 네트워크에서 작동하는 XML은 다음과 같습니다.
<interface type="ethernet">
<script path="/vm/qemu/tap-up.sh"/>
<target dev="tap10"/>
<mac address="00:11:22:33:44:55"/>
<model type="virtio"/>
<address type:="pci"/>
</interface>
기본적으로 QEMU를 사용하는 경우 모든 네트워크 구성은 호스트에서 수행되지만 어떤 이유로 libvirt는 여기에 언급된 "managed" 지시문을 무시합니다.https://libvirt.org/formatdomain.html#generic-ethernet-connection
그래서 호스트에 브리지를 구성하고 libvirt가 탭을 생성하도록 했습니다. Tap이 생성된 후 위에 나열된 스크립트는 브리지 인터페이스의 멤버로 "tap10"을 추가합니다. 이상적이지는 않지만 작동합니다.