天天實時:43-KVM虛擬化-利用libvirt服務進行KVM虛擬機管理

2023-01-01 19:23:58 來源:51CTO博客

半虛擬化驅動virtio的工作原理

為了提高內存、硬盤、網絡的性能,需要支持半虛擬化

virtio 是一種 I/O 半虛擬化解決方案,是一套通用 I/O 設備虛擬化的程序,是對半虛擬化 Hypervisor 中的一組通用 I/O 設備的抽象,提供了一套上層應用與各 Hypervisor 虛擬化設備(KVM,Xen,VMware等)之間的通信框架和編程接口,減少跨平臺所帶來的兼容性問題,大大提高驅動程序開發(fā)效率,Windows 系統需要單獨安裝virtio驅 動,Linux系統自帶virtio驅動


【資料圖】


libvirt 架構

如果libvirtd服務意外關閉,將導致相關工具,如:virt-manager等無法和虛擬機連接,但虛擬機仍會正常運行

[root@ubuntu2204 ~]#virsh list --all Id   Name                State------------------------------------ 2    centos7-mooreyxia   running -    rocky8              shut off[root@ubuntu2204 ~]#systemctl status libvirtd● libvirtd.service - Virtualization daemon     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)     Active: active (running) since Sat 2022-12-31 17:53:28 CST; 17h agoTriggeredBy: ● libvirtd-ro.socket             ● libvirtd.socket             ● libvirtd-admin.socket       Docs: man:libvirtd(8)             https://libvirt.org   Main PID: 871 (libvirtd)      Tasks: 23 (limit: 32768)     Memory: 72.6M        CPU: 9.258s     CGroup: /system.slice/libvirtd.service             ├─871 /usr/sbin/libvirtd             ├─987 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper             └─988 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelperDec 31 17:53:30 ubuntu2204.wang.org dnsmasq[987]: using nameserver 127.0.0.53#53Dec 31 17:53:30 ubuntu2204.wang.org dnsmasq[987]: read /etc/hosts - 7 addressesDec 31 17:53:30 ubuntu2204.wang.org dnsmasq[987]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addressesDec 31 17:53:30 ubuntu2204.wang.org dnsmasq-dhcp[987]: read /var/lib/libvirt/dnsmasq/default.hostsfileJan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPDISCOVER(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPOFFER(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPREQUEST(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPACK(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:18:35 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPREQUEST(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:18:35 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPACK(virbr0) 192.168.122.23 52:54:00:18:b7:d2#停止libvirtd服務,socket還在運行,systemctl會自動激活socket,所以libvirtd會自動重啟[root@ubuntu2204 ~]#systemctl stop libvirtdWarning: Stopping libvirtd.service, but it can still be activated by:  libvirtd-ro.socket  libvirtd.socket  libvirtd-admin.socket[root@ubuntu2204 ~]#systemctl status libvirtd-ro.socket● libvirtd-ro.socket - Libvirt local read-only socket     Loaded: loaded (/lib/systemd/system/libvirtd-ro.socket; enabled; vendor preset: enabled)     Active: active (listening) since Sat 2022-12-31 17:53:24 CST; 17h ago   Triggers: ● libvirtd.service     Listen: /run/libvirt/libvirt-sock-ro (Stream)     CGroup: /system.slice/libvirtd-ro.socketDec 31 17:53:24 ubuntu2204.wang.org systemd[1]: Listening on Libvirt local read-only socket.[root@ubuntu2204 ~]#systemctl status libvirtd○ libvirtd.service - Virtualization daemon     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)     Active: inactive (dead) since Sun 2023-01-01 11:27:32 CST; 1min 32s agoTriggeredBy: ● libvirtd-ro.socket             ● libvirtd.socket             ● libvirtd-admin.socket       Docs: man:libvirtd(8)             https://libvirt.org    Process: 871 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=exited, status=0/SUCCESS)   Main PID: 871 (code=exited, status=0/SUCCESS)      Tasks: 2 (limit: 32768)     Memory: 57.1M        CPU: 9.370s     CGroup: /system.slice/libvirtd.service             ├─987 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper             └─988 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelperJan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPREQUEST(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:11:55 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPACK(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:18:35 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPREQUEST(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:18:35 ubuntu2204.wang.org dnsmasq-dhcp[987]: DHCPACK(virbr0) 192.168.122.23 52:54:00:18:b7:d2Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: Stopping Virtualization daemon...Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: libvirtd.service: Deactivated successfully.Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: libvirtd.service: Unit process 987 (dnsmasq) remains running after unit stopped.Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: libvirtd.service: Unit process 988 (dnsmasq) remains running after unit stopped.Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: Stopped Virtualization daemon.Jan 01 11:27:32 ubuntu2204.wang.org systemd[1]: libvirtd.service: Consumed 9.370s CPU time.#徹底停掉libvirt服務,發(fā)現虛擬機還在運行,只是連接虛擬機的窗口失效[root@ubuntu2204 ~]#systemctl stop libvirtd libvirtd.socket libvirtdadmin.socket libvirtd-ro.socketFailed to stop libvirtdadmin.socket: Unit libvirtdadmin.socket not loaded.[root@ubuntu2204 ~]#virsh list --allerror: failed to connect to the hypervisorerror: Failed to connect socket to "/var/run/libvirt/libvirt-sock": Connection refused[root@ubuntu2204 ~]#ps aux |grep kvmroot        1247  0.0  0.0      0     0 ?        I    10:52   0:02 [kworker/5:0-kvm-irqfd-cleanup]libvirt+    1575  5.8  3.2 3853876 532360 ?      Sl   11:17   0:55 /usr/bin/qemu-system-x86_64 -name guest=centos7-mooreyxia,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-2-centos7-mooreyxia/master-key.aes"} -machine pc-q35-6.2,usb=off,vmport=off,dump-guest-core=off,memory-backend=pc.ram -accel kvm -cpu host,migratable=on -m 2048 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648} -overcommit mem-lock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 3492dccc-468d-4fe9-8ec8-b4a251dccf00 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=33,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device pcie-root-port,port=16,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=17,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=18,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=19,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 -device pcie-root-port,port=20,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 -device pcie-root-port,port=21,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 -device pcie-root-port,port=22,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 -device pcie-root-port,port=23,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 -device pcie-root-port,port=24,chassis=9,id=pci.9,bus=pcie.0,multifunction=on,addr=0x3 -device pcie-root-port,port=25,chassis=10,id=pci.10,bus=pcie.0,addr=0x3.0x1 -device pcie-root-port,port=26,chassis=11,id=pci.11,bus=pcie.0,addr=0x3.0x2 -device pcie-root-port,port=27,chassis=12,id=pci.12,bus=pcie.0,addr=0x3.0x3 -device pcie-root-port,port=28,chassis=13,id=pci.13,bus=pcie.0,addr=0x3.0x4 -device pcie-root-port,port=29,chassis=14,id=pci.14,bus=pcie.0,addr=0x3.0x5 -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 -device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/centos7-mooreyxia.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","driver":"qcow2","file":"libvirt-2-storage","backing":null} -device virtio-blk-pci,bus=pci.4,addr=0x0,drive=libvirt-2-format,id=virtio-disk0,bootindex=1 -device ide-cd,bus=ide.0,id=sata0-0-0 -netdev tap,fd=34,id=hostnet0,vhost=on,vhostfd=36 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:18:b7:d2,bus=pci.1,addr=0x0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,fd=32,server=on,wait=off -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -chardev spicevmc,id=charchannel1,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -audiodev {"id":"audio1","driver":"spice"} -spice port=5900,addr=127.0.0.1,disable-ticketing=on,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 -device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x1b -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0,audiodev=audio1 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 -object {"qom-type":"rng-random","id":"objrng0","filename":"/dev/urandom"} -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.6,addr=0x0 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=onroot        1581  0.0  0.0      0     0 ?        S    11:17   0:00 [kvm-nx-lpage-re]root        1586  0.0  0.0      0     0 ?        S    11:17   0:00 [kvm-pit/1575]root        1781  0.0  0.0   9696  2404 pts/1    S+   11:33   0:00 grep --color=auto kvm#重啟libvirtd服務,就可以繼續(xù)連接kvm進行管理[root@ubuntu2204 ~]#systemctl start libvirtd [root@ubuntu2204 ~]#virsh list --all Id   Name                State------------------------------------ 2    centos7-mooreyxia   running -    rocky8              shut off

virt-manager 管理虛擬機

virt-manager是一個圖形化工具,主要功能:

定義和創(chuàng)建虛擬機硬件管理性能監(jiān)視控制臺在線和離線遷移虛擬機的保存和恢復、暫停和繼續(xù)、關閉和啟動

virsh 命令行工具

virsh是使用libvirt managementAPI構建的管理工具,相比virt-manager可以提高效率

#virsh 主要功能[root@ubuntu2204 ~]#virsh --helpvirsh [options]... []virsh [options]...  [args...]options:-c | --connect=URI hypervisor connection URI-d | --debug=NUM debug level [0-4]-e | --escape  set escape sequence for console-h | --help this help-k | --keepalive-interval=NUMkeepalive interval in seconds, 0 for disable-K | --keepalive-count=NUMnumber of possible missed keepalive messages-l | --log=FILE output logging to file-q | --quiet quiet mode-r | --readonly connect readonly-t | --timing print timing information-v short version-V long version--version[=TYPE] version, TYPE is short or long (default short)....Domain Management (help keyword "domain"):Domain Monitoring (help keyword "monitor"):Host and Hypervisor (help keyword "host"):Interface (help keyword "interface"):Network Filter (help keyword "filter"):Networking (help keyword "network"):Node Device (help keyword "nodedev"):Secret (help keyword "secret"):Snapshot (help keyword "snapshot"):Storage Pool (help keyword "pool"):Storage Volume (help keyword "volume"):Virsh itself (help keyword "virsh"):#virsh 子命令說明help #打印基本幫助信息attach-device #使用XML文件中的設備定義在虛擬機中添加設備attach-disk #在虛擬機中附加新磁盤設備attach-interface #在虛擬機中附加新網絡接口create #從 XML 配置文件生成虛擬機并啟動新虛擬機define #為虛擬機輸出XML配置文件destroy #強制虛擬機停止detach-device #從虛擬機中分離設備,使用同樣的XML 描述作為命令attach-devicedetach-disk #從虛擬機中分離磁盤設備detach-interface #從虛擬機中分離網絡接口domblkstat #顯示正在運行的虛擬機的塊設備統計domid #顯示虛擬機IDdomifstat #顯示正在運行的虛擬機的網絡接口統計dominfo #顯示虛擬機信息domname #顯示虛擬機名稱domstate #顯示虛以機狀態(tài)domuuid #顯示虛擬機UUIDdumpxml #輸出虛擬機 XML配置文件list #列出所有虛擬機migrate #將虛擬機遷移到另一臺主機中nodeinfo #有關管理程序的輸出信息quit #退出這個互動終端reboot #重新啟動虛擬機restore #恢復以前保存在文件中的虛擬機resume #恢復暫停的虛擬機save #將虛擬機當前狀態(tài)保存到某個文件中setmaxmem #為管理程序設定內存上限setmem #為虛擬機設定分配的內存setvcpus #修改為虛擬機分配的虛擬CPU數目shutdown #關閉某個虛擬機start #啟動未激活的虛擬機suspend #暫停虛擬機undefine #刪除與虛擬機關聯的所有文件vepuinfo #顯示虛以機的虛擬CPU信息vcpupin #控制虛擬機的虛擬CPU親和性version #顯示virsh版本#查看子命令 list 命令用法[root@ubuntu2204 ~]#virsh help list  NAME    list - list domains  SYNOPSIS    list [--inactive] [--all] [--transient] [--persistent] [--with-snapshot] [--without-snapshot] [--with-checkpoint] [--without-checkpoint] [--state-running] [--state-paused] [--state-shutoff] [--state-other] [--autostart] [--no-autostart] [--with-managed-save] [--without-managed-save] [--uuid] [--name] [--id] [--table] [--managed-save] [--title]  DESCRIPTION    Returns list of domains.  OPTIONS    --inactive       list inactive domains    --all            list inactive & active domains    --transient      list transient domains    --persistent     list persistent domains    --with-snapshot  list domains with existing snapshot    --without-snapshot  list domains without a snapshot    --with-checkpoint  list domains with existing checkpoint    --without-checkpoint  list domains without a checkpoint    --state-running  list domains in running state    --state-paused   list domains in paused state    --state-shutoff  list domains in shutoff state    --state-other    list domains in other states    --autostart      list domains with autostart enabled    --no-autostart   list domains with autostart disabled    --with-managed-save  list domains with managed save state    --without-managed-save  list domains without managed save    --uuid           list uuid"s only    --name           list domain names only    --id             list domain IDs only    --table          list table (default)    --managed-save   mark inactive domains with managed save state    --title          show domain title例:[root@ubuntu2204 ~]#virsh list --all Id   Name                State------------------------------------ 2    centos7-mooreyxia   running -    rocky8              shut off[root@ubuntu2204 ~]#virsh start rocky8Domain "rocky8" started[root@ubuntu2204 ~]#virsh list --all Id   Name                State----------------------------------- 2    centos7-mooreyxia   running 3    rocky8              running[root@ubuntu2204 ~]#virsh shutdown 3Domain "3" is being shutdown#列出開機狀態(tài)虛擬機的UUID和名稱[root@ubuntu2204 ~]#virsh list --uuid --name3492dccc-468d-4fe9-8ec8-b4a251dccf00 centos7-mooreyxia3a984e57-70f4-428d-8f30-3127dd4e9be2 rocky8

案例:查看虛擬機UUID,通過UUID啟動關閉虛擬機

[root@ubuntu2204 ~]#virsh list --all Id   Name                State----------------------------------- 2    centos7-mooreyxia   running 3    rocky8              running[root@ubuntu2204 ~]#virsh domuuid 33a984e57-70f4-428d-8f30-3127dd4e9be2[root@ubuntu2204 ~]#virsh destroy 3a984e57-70f4-428d-8f30-3127dd4e9be2Domain "3a984e57-70f4-428d-8f30-3127dd4e9be2" destroyed[root@ubuntu2204 ~]#virsh list --all Id   Name                State------------------------------------ 2    centos7-mooreyxia   running -    rocky8              shut off

案例:暫停和恢復虛擬機

[root@ubuntu2204 ~]#virsh list Id   Name                State----------------------------------- 2    centos7-mooreyxia   running[root@ubuntu2204 ~]#virsh suspend centos7-mooreyxiaDomain "centos7-mooreyxia" suspended[root@ubuntu2204 ~]#virsh list Id   Name                State---------------------------------- 2    centos7-mooreyxia   paused[root@ubuntu2204 ~]#ps aux|grep kvmroot        1247  0.0  0.0      0     0 ?        I    10:52   0:02 [kworker/5:0-kvm-irqfd-cleanup]libvirt+    1575  2.3  3.3 3862072 550556 ?      Sl   11:17   1:13 /usr/bin/qemu-system-x86_64 -name guest=centos7-mooreyxia,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-2-centos7-mooreyxia/master-key.aes"} -machine pc-q35-6.2,usb=off,vmport=off,dump-guest-core=off,memory-backend=pc.ram -accel kvm -cpu host,migratable=on -m 2048 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648} -overcommit mem-lock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 3492dccc-468d-4fe9-8ec8-b4a251dccf00 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=33,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device pcie-root-port,port=16,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=17,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=18,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=19,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 -device pcie-root-port,port=20,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 -device pcie-root-port,port=21,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 -device pcie-root-port,port=22,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 -device pcie-root-port,port=23,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 -device pcie-root-port,port=24,chassis=9,id=pci.9,bus=pcie.0,multifunction=on,addr=0x3 -device pcie-root-port,port=25,chassis=10,id=pci.10,bus=pcie.0,addr=0x3.0x1 -device pcie-root-port,port=26,chassis=11,id=pci.11,bus=pcie.0,addr=0x3.0x2 -device pcie-root-port,port=27,chassis=12,id=pci.12,bus=pcie.0,addr=0x3.0x3 -device pcie-root-port,port=28,chassis=13,id=pci.13,bus=pcie.0,addr=0x3.0x4 -device pcie-root-port,port=29,chassis=14,id=pci.14,bus=pcie.0,addr=0x3.0x5 -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 -device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/centos7-mooreyxia.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","driver":"qcow2","file":"libvirt-2-storage","backing":null} -device virtio-blk-pci,bus=pci.4,addr=0x0,drive=libvirt-2-format,id=virtio-disk0,bootindex=1 -device ide-cd,bus=ide.0,id=sata0-0-0 -netdev tap,fd=34,id=hostnet0,vhost=on,vhostfd=36 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:18:b7:d2,bus=pci.1,addr=0x0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,fd=32,server=on,wait=off -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -chardev spicevmc,id=charchannel1,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -audiodev {"id":"audio1","driver":"spice"} -spice port=5900,addr=127.0.0.1,disable-ticketing=on,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 -device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x1b -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0,audiodev=audio1 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 -object {"qom-type":"rng-random","id":"objrng0","filename":"/dev/urandom"} -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.6,addr=0x0 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=onroot        1581  0.0  0.0      0     0 ?        S    11:17   0:00 [kvm-nx-lpage-re]root        1586  0.0  0.0      0     0 ?        S    11:17   0:00 [kvm-pit/1575]root        2244  0.0  0.0   9696  2268 pts/1    S+   12:09   0:00 grep --color=auto kvm[root@ubuntu2204 ~]#virsh resume centos7-mooreyxiaDomain "centos7-mooreyxia" resumed[root@ubuntu2204 ~]#virsh list Id   Name                State----------------------------------- 2    centos7-mooreyxia   running

案例:配置虛擬機開機自動啟動

在virt-manager圖形界面中可以設置宿主機啟動時虛擬機自動開啟

xml是這個虛擬機的所有配置文本

查看虛擬機配置

#未勾選開機啟動時[root@ubuntu2204 ~]#virsh list --all Id   Name                State------------------------------------ 2    centos7-mooreyxia   running -    rocky8              shut off#每個虛擬機配置都存放在/etc/libvirt/qemu目錄下的xml文件中[root@ubuntu2204 ~]#ll /etc/libvirt/qemu/total 28drwxr-xr-x 3 root root 4096 Dec 31 00:18 ./drwxr-xr-x 7 root root 4096 Dec 29 20:24 ../-rw------- 1 root root 7673 Dec 29 21:36 centos7-mooreyxia.xmldrwxr-xr-x 3 root root 4096 Dec 29 19:10 networks/-rw------- 1 root root 7078 Dec 30 22:44 rocky8.xml#查看XML配置文件[root@ubuntu2204 ~]#cat /etc/libvirt/qemu/centos7-mooreyxia.xml   centos7-mooreyxia  3492dccc-468d-4fe9-8ec8-b4a251dccf00                    2097152  2097152  2      hvm                                          destroy  restart  destroy                  /usr/bin/qemu-system-x86_64                            
...

勾選開機啟動項看看會發(fā)生什么

#設置虛擬機隨宿主機啟動而自動啟動,本質就是在下面目錄生成軟鏈接-------------------------------------#圖形界面操作可以用命令代替virsh autostart centos7-mooreyxia----------------------------------------#生成了autostart/centos7-mooreyxia.xml 軟鏈接指向虛擬機配置文件[root@ubuntu2204 ~]#ll /etc/libvirt/qemu/total 32drwxr-xr-x 4 root root 4096 Jan  1 12:24 ./drwxr-xr-x 7 root root 4096 Dec 29 20:24 ../drwxr-xr-x 2 root root 4096 Jan  1 12:24 autostart/-rw------- 1 root root 7673 Jan  1 12:24 centos7-mooreyxia.xmldrwxr-xr-x 3 root root 4096 Dec 29 19:10 networks/-rw------- 1 root root 7078 Dec 30 22:44 rocky8.xml[root@ubuntu2204 ~]#ll /etc/libvirt/qemu/autostart/total 8drwxr-xr-x 2 root root 4096 Jan  1 12:24 ./drwxr-xr-x 4 root root 4096 Jan  1 12:24 ../lrwxrwxrwx 1 root root   39 Jan  1 12:24 centos7-mooreyxia.xml -> /etc/libvirt/qemu/centos7-mooreyxia.xml

案例:刪除虛擬機配置

[root@centos8 ~]#virsh list --allId Name State----------------------------------------------------2 centos8 running- centos7 shut off- centos8-vm2 shut off- centos8-vm3 shut off- centos8-vm4 shut off- Win_2008_r2-x86_64 shut off#刪除虛擬機配置,但不刪除磁盤文件[root@centos8 ~]#virsh undefine centos8-vm4Domain centos8-vm4 has been undefined[root@centos8 ~]#virsh list --allId Name State----------------------------------------------------2 centos8 running- centos7 shut off- centos8-vm2 shut off- centos8-vm3 shut off- Win_2008_r2-x86_64 shut off#對應虛擬機xml的配置文件被刪除[root@centos8 ~]#ll /etc/libvirt/qemu/total 28drwxr-xr-x 2 root root 25 Sep 17 18:54 autostart-rw------- 1 root root 3618 Sep 17 15:14 centos7.xml-rw------- 1 root root 3673 Sep 13 22:43 centos8-vm2.xml-rw------- 1 root root 3601 Sep 13 22:42 centos8-vm3.xml-rw------- 1 root root 6024 Sep 17 15:47 centos8.xmldrwx------ 3 root root 42 Sep 13 19:03 networks-rw------- 1 root root 5369 Sep 17 11:31 Win_2008_r2-x86_64.xml#對應的磁盤文件并沒有刪除[root@centos8 ~]#ls /var/lib/libvirt/images/centos7.qcow2 centos8.qcow2 centos8-vm2.qcow2 centos8-vm3.qcow2 centos8-vm4.qcow2 Windows-2008_r2-x86_64.qcow2--------------------------------------------------------#刪除虛擬機包括磁盤文件[root@ubuntu2004 ~]#virsh undefine k8s-node-05 --remove-all-storageDomain k8s-node-05 has been undefinedVolume "vda"(/var/lib/libvirt/images/k8s-node-05.qcow2) removed.

案例:冷遷移虛擬機

將一個宿主機的虛擬機遷移到另一臺宿主機,注意: 不支持Ubuntu和Rocky8宿主機之間遷移

對下面兩個文件進行遷移即可

/etc/libvirt/qemu/xxx.xml/var/lib/libvirt/images/xxx.qcow2
#在一臺目標宿主機安裝相關虛擬化軟件[root@ubuntu2004 ~]#apt update[root@ubuntu2004 ~]#apt -y install qemu-kvm virt-manager libvirt-daemon-system#在源宿主機查看虛擬機的相關文件[root@ubuntu2004 ~]#virsh dumpxml --domain rocky8-template...........#或者#查看塊設備[root@ubuntu2004 ~]#virsh domblklist rocky8-templateTarget Source------------------------------------------------vda /var/lib/libvirt/images/rocky8-template.qcow2vdb -#復制源宿主機上的虛擬機的兩個文件到目標宿主機[root@ubuntu2004 ~]#scp /etc/libvirt/qemu/rocky8-template.xml10.0.0.101:/etc/libvirt/qemu/[root@ubuntu2004 ~]#scp /var/lib/libvirt/images/rocky8-template.qcow210.0.0.101:/var/lib/libvirt/images#在目標宿主機不重啟服務無法看到新的虛擬機[root@ubuntu2004 ~]#virsh list --all[root@ubuntu2004 ~]#systemctl restart libvirtd#在目標宿主機重啟服務后看到新的虛擬機[root@ubuntu2004 ~]#virsh list --allId Name State----------------------------------rocky8-template shut off

我是moore,新年快樂?。?!

標簽: 配置文件 網絡接口 磁盤文件

上一篇:天天信息:基于雙棧服務的啟發(fā)式測繪
下一篇:JavaScript奇淫技巧:反調試