前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统下KVM虚拟机的基本管理和操作

Linux系统下KVM虚拟机的基本管理和操作

原创
作者头像
江湖有缘
发布2023-01-19 15:35:01
1.8K0
发布2023-01-19 15:35:01
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、检查本地环境

1.检查系统版本

代码语言:shell
复制
[root@serer1 ~]# cat /etc/os-release 

NAME="CentOS Linux"

VERSION="7 (Core)"

ID="centos"

ID\_LIKE="rhel fedora"

VERSION\_ID="7"

PRETTY\_NAME="CentOS Linux 7 (Core)"

ANSI\_COLOR="0;31"

CPE\_NAME="cpe:/o:centos:centos:7"

HOME\_URL="https://www.centos.org/"

BUG\_REPORT\_URL="https://bugs.centos.org/"



CENTOS\_MANTISBT\_PROJECT="CentOS-7"

CENTOS\_MANTISBT\_PROJECT\_VERSION="7"

REDHAT\_SUPPORT\_PRODUCT="centos"

REDHAT\_SUPPORT\_PRODUCT\_VERSION="7"

2.检查防火墙状态

代码语言:shell
复制
[root@serer1 ~]# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead) since Wed 2022-10-19 00:09:43 CST; 7s ago

     Docs: man:firewalld(1)

 Main PID: 642 (code=exited, status=0/SUCCESS)

3.检查selinux

代码语言:shell
复制
[root@serer01 ~]# getenforce 

Disabled

3.检查libvirtd服务状态

代码语言:shell
复制
[root@server ~]# systemctl status libvirtd

● libvirtd.service - Virtualization daemon

   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)

   Active: active (running) since Sun 2022-10-16 17:53:24 CST; 2 days ago

     Docs: man:libvirtd(8)

           https://libvirt.org

 Main PID: 29472 (libvirtd)

    Tasks: 18 (limit: 32768)

   Memory: 34.8M

   CGroup: /system.slice/libvirtd.service

           └─29472 /usr/sbin/libvirtd --listen

4.检查kvm安装结果

代码语言:shell
复制
[root@server ~]# lsmod|grep kvm

kvm\_intel             183621  4 

kvm                   586948  1 kvm\_intel

irqbypass              13503  3 kvm

5.检查kvm虚拟机状态

代码语言:shell
复制
[root@server ~]# virsh -c qemu:///system list

 Id    Name                           State

----------------------------------------------------

 9     kvm01                          running

6.检查virsh版本

代码语言:shell
复制
[root@server ~]# virsh --version

4.5.0

[root@server ~]# virt-install --version

1.5.0

二、virsh常用命令

1.列出虚拟机

代码语言:shell
复制
[root@server ~]# virsh list

 Id    Name                           State

----------------------------------------------------

 9     kvm01                          running



[root@server ~]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 9     kvm01                          running

2.虚拟机开关机操作

代码语言:shell
复制
virsh start kvm01    #虚拟机开机

virsh shutdown kvm01  #关闭虚拟机

virsh destroy kvm01  # 强制停止虚拟机

3.删除虚拟机

代码语言:shell
复制
virsh undefine kvm01  #彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘

4.设置虚拟机在宿主机开机时自启

代码语言:shell
复制
virsh autostart kvm01    # 宿主机开启时自启

virsh autostart --disable  kvm01   #  取开机自启

5.挂起虚拟机

代码语言:shell
复制
virsh suspend  kvm01    # 挂起虚拟机

virsh resume  kvm01       #   恢复挂起的虚拟机

6.查看虚拟机的配置文件

代码语言:shell
复制
[root@server ~]# virsh dumpxml kvm01 

<domain type='kvm' id='9'>

  <name>kvm01</name>

  <uuid>65438c9d-81cd-cd83-01de-77a5ed5af051</uuid>

  <description>None</description>

  <memory unit='KiB'>1048576</memory>

  <currentMemory unit='KiB'>1048576</currentMemory>

  <vcpu placement='static'>2</vcpu>

  <resource>

    <partition>/machine</partition>

  </resource>

  <os>

    <type arch='x86\_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

    <boot dev='hd'/>

    <boot dev='cdrom'/>

    <bootmenu enable='yes'/>

  </os>

  <features>

    <acpi/>

    <apic/>

    <pae/>

  </features>

  <cpu mode='custom' match='exact' check='full'>

    <model fallback='forbid'>IvyBridge-IBRS</model>

    <vendor>Intel</vendor>

    <feature policy='disable' name='ds'/>

    <feature policy='disable' name='acpi'/>

    <feature policy='require' name='ss'/>

    <feature policy='disable' name='ht'/>

    <feature policy='disable' name='tm'/>

    <feature policy='disable' name='pbe'/>

    <feature policy='disable' name='dtes64'/>

    <feature policy='disable' name='monitor'/>

    <feature policy='disable' name='ds\_cpl'/>

    <feature policy='disable' name='vmx'/>

    <feature policy='disable' name='est'/>

    <feature policy='disable' name='tm2'/>

    <feature policy='disable' name='xtpr'/>

    <feature policy='disable' name='pdcm'/>

    <feature policy='require' name='movbe'/>

    <feature policy='disable' name='osxsave'/>

    <feature policy='disable' name='arat'/>

    <feature policy='disable' name='tsc\_adjust'/>

    <feature policy='require' name='rdseed'/>

    <feature policy='require' name='smap'/>

    <feature policy='require' name='clflushopt'/>

    <feature policy='require' name='clwb'/>

    <feature policy='disable' name='intel-pt'/>

    <feature policy='require' name='sha-ni'/>

    <feature policy='require' name='umip'/>

    <feature policy='require' name='gfni'/>

    <feature policy='disable' name='md-clear'/>

    <feature policy='require' name='stibp'/>

    <feature policy='require' name='ssbd'/>

    <feature policy='require' name='xsaveopt'/>

    <feature policy='require' name='xsavec'/>

    <feature policy='require' name='xgetbv1'/>

    <feature policy='require' name='3dnowprefetch'/>

    <feature policy='disable' name='avx'/>

    <feature policy='disable' name='f16c'/>

    <feature policy='require' name='hypervisor'/>

  </cpu>

  <clock offset='utc'/>

  <on\_poweroff>destroy</on\_poweroff>

  <on\_reboot>restart</on\_reboot>

  <on\_crash>restart</on\_crash>

  <devices>

    <emulator>/usr/libexec/qemu-kvm</emulator>

    <disk type='file' device='disk'>

      <driver name='qemu' type='qcow2'/>

      <source file='/nas/kvm/centos\_kvm.img'/>

      <backingStore/>

      <target dev='vda' bus='virtio'/>

      <alias name='virtio-disk0'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

    </disk>

    <disk type='file' device='cdrom'>

      <driver name='qemu' type='raw'/>

      <source file='/storage/kvm/CentOS-7-x86\_64-Minimal-1511.iso'/>

      <backingStore/>

      <target dev='hda' bus='ide'/>

      <readonly/>

      <alias name='ide0-1-1'/>

      <address type='drive' controller='0' bus='1' target='0' unit='1'/>

    </disk>

    <controller type='usb' index='0' model='piix3-uhci'>

      <alias name='usb'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>

    </controller>

    <controller type='pci' index='0' model='pci-root'>

      <alias name='pci.0'/>

    </controller>

    <controller type='ide' index='0'>

      <alias name='ide'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

    </controller>

    <interface type='bridge'>

      <mac address='52:54:00:6c:cb:10'/>

      <source network='br0' bridge='br0'/>

      <target dev='vnet0'/>

      <model type='virtio'/>

      <alias name='net0'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

    </interface>

    <serial type='pty'>

      <source path='/dev/pts/0'/>

      <target type='isa-serial' port='0'>

        <model name='isa-serial'/>

      </target>

      <alias name='serial0'/>

    </serial>

    <console type='pty' tty='/dev/pts/0'>

      <source path='/dev/pts/0'/>

      <target type='serial' port='0'/>

      <alias name='serial0'/>

    </console>

    <input type='mouse' bus='ps2'>

      <alias name='input0'/>

    </input>

    <input type='tablet' bus='usb'>

      <alias name='input1'/>

      <address type='usb' bus='0' port='1'/>

    </input>

    <input type='keyboard' bus='ps2'>

      <alias name='input2'/>

    </input>

    <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>

      <listen type='address' address='0.0.0.0'/>

    </graphics>

    <video>

      <model type='cirrus' vram='16384' heads='1' primary='yes'/>

      <alias name='video0'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

    </video>

    <memballoon model='virtio'>

      <alias name='balloon0'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

    </memballoon>

  </devices>

  <seclabel type='dynamic' model='dac' relabel='yes'>

    <label>+107:+107</label>

    <imagelabel>+107:+107</imagelabel>

  </seclabel>

</domain>

7.对虚拟机配置文件操作

代码语言:shell
复制
virsh edit vm-name  #修改虚拟机的配置文件

virsh define file-name.xml  #根据配置文件定义虚拟机

8.查看KVM虚拟机相关配置文件

代码语言:shell
复制
[root@server ~]# ls /etc/libvirt/qemu/

autostart  kvm01.xml  networks

[root@server ~]# ls /etc/libvirt/qemu/networks/

autostart  br0.xml

[root@server ~]# ls /etc/libvirt/qemu/networks/autostart/

br0.xml

三、KVM虚拟机的磁盘管理

1.查看磁盘格式

代码语言:shell
复制
[root@server ~]# qemu-img info /nas/kvm/centos\_kvm.img 

image: /nas/kvm/centos\_kvm.img

file format: qcow2

virtual size: 40G (42949672960 bytes)

disk size: 2.2G

cluster\_size: 65536

Format specific information:

    compat: 0.10

2.将raw格式磁盘文件转化为qcow2

代码语言:shell
复制
$ qemu-img convert -f raw -O qcow2  /data/centos7.raw  /data/centos7.qcow

# qemu-img covert -f 源格式 -O 目标格式   源磁盘文件   目标磁盘文件

3.创建空的qcow2格式的磁盘文件

代码语言:shell
复制
[root@server kvm]# qemu-img create -f qcow2 /nas/kvm/test.qcow2 5G

Formatting '/nas/kvm/test.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster\_size=65536 lazy\_refcounts=off 

[root@server kvm]# qemu-img info /nas/kvm/test.qcow2 

image: /nas/kvm/test.qcow2

file format: qcow2

virtual size: 5.0G (5368709120 bytes)

disk size: 196K

cluster\_size: 65536

Format specific information:

    compat: 1.1

    lazy refcounts: false

4.修改镜像文件大小

代码语言:shell
复制
[root@server kvm]# qemu-img resize ./test.qcow2 +7G

Image resized.

[root@server kvm]# qemu-img info /nas/kvm/test.qcow2 

image: /nas/kvm/test.qcow2

file format: qcow2

virtual size: 12G (12884901888 bytes)

disk size: 200K

cluster\_size: 65536

Format specific information:

    compat: 1.1

    lazy refcounts: false

5.给虚拟机新增硬盘——临时生效

代码语言:shell
复制
virsh attach-disk kvm01 /nas/kvm/test.qcow2 vdb --subdriver=qcow2

# virsh  attach-disk  <虚拟机名称>  <新增磁盘路径>  <设备名>  <磁盘格式类型>

6.给虚拟机新增硬盘——永久生效

代码语言:shell
复制
virsh attach-disk kvm01 /nas/kvm/test.qcow2 vdb --subdriver=qcow2  --config

7.卸载硬盘

代码语言:shell
复制
virsh detach-disk kvm01 /nas/kvm/test.qcow2    #卸载临时生效

virsh detach-disk kvm01  /nas/kvm/test.qcow2  --config      # 卸载永久生效

8.查看虚拟机硬件情况

代码语言:shell
复制
[root@server kvm]# virsh dumpxml kvm01 |grep  dev

    <boot dev='hd'/>

    <boot dev='cdrom'/>

  <devices>

    <disk type='file' device='disk'>

      <target dev='vda' bus='virtio'/>

    <disk type='file' device='disk'>

      <target dev='vdb' bus='virtio'/>

    <disk type='file' device='cdrom'>

      <target dev='hda' bus='ide'/>

      <target dev='vnet0'/>

      <source path='/dev/pts/0'/>

    <console type='pty' tty='/dev/pts/0'>

      <source path='/dev/pts/0'/>

  </devices>

9.在WebVirtMgr上查看虚拟机硬盘新增情况

image.png
image.png

四、KVM虚拟机的网卡管理

1.查看网卡

代码语言:shell
复制
[root@server kvm]# virsh domiflist kvm01

Interface  Type       Source     Model       MAC

-------------------------------------------------------

vnet0      bridge     br0        virtio      52:54:00:6c:cb:10

2.新增网卡

代码语言:shell
复制
[root@server kvm]# virsh attach-interface kvm01 --type bridge --source br0 

Interface attached successfully

3.使新增网卡生效

代码语言:shell
复制
[root@server kvm]# virsh dumpxml kvm01 > /etc/libvirt/qemu/kvm01.xml 

[root@server kvm]# virsh define /etc/libvirt/qemu/kvm01.xml 

Domain kvm01 defined from /etc/libvirt/qemu/kvm01.xml

4.虚拟机查看新增网卡

代码语言:shell
复制
[root@server kvm]# ssh root@192.168.3.169

The authenticity of host '192.168.3.169 (192.168.3.169)' can't be established.

ECDSA key fingerprint is SHA256:SMUWtN77SI+zUIX2bBR7/hY176zJLiWvY7KpIUlK0dw.

ECDSA key fingerprint is MD5:df:58:7e:61:73:82:b5:56:03:25:60:f1:80:a6:b1:0b.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.3.169' (ECDSA) to the list of known hosts.

root@192.168.3.169's password: 

Last login: Tue Oct 18 23:19:15 2022 from 192.168.3.11

[root@serer01 ~]# ip add

1: lo: <LOOPBACK,UP,LOWER\_UP> mtu 65536 qdisc noqueue state UNKNOWN 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid\_lft forever preferred\_lft forever

    inet6 ::1/128 scope host 

       valid\_lft forever preferred\_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER\_UP> mtu 1500 qdisc pfifo\_fast state UP qlen 1000

    link/ether 52:54:00:6c:cb:10 brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.169/24 brd 192.168.3.255 scope global eth0

       valid\_lft forever preferred\_lft forever

    inet6 fe80::5054:ff:fe6c:cb10/64 scope link 

       valid\_lft forever preferred\_lft forever

3: docker0: <BROADCAST,MULTICAST,UP,LOWER\_UP> mtu 1500 qdisc noqueue state UP 

    link/ether 02:42:5d:4a:c4:9f brd ff:ff:ff:ff:ff:ff

    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

       valid\_lft forever preferred\_lft forever

    inet6 fe80::42:5dff:fe4a:c49f/64 scope link 

       valid\_lft forever preferred\_lft forever

5: veth0604e80@if4: <BROADCAST,MULTICAST,UP,LOWER\_UP> mtu 1500 qdisc noqueue master docker0 state UP 

    link/ether be:7f:bd:57:88:71 brd ff:ff:ff:ff:ff:ff link-netnsid 0

    inet6 fe80::bc7f:bdff:fe57:8871/64 scope link 

       valid\_lft forever preferred\_lft forever

6: ens7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

    link/ether 52:54:00:45:1b:53 brd ff:ff:ff:ff:ff:ff

5.删除网卡

需要将虚拟机关机再进行删除网卡操作

代码语言:shell
复制
[root@server kvm]# virsh detach-interface kvm01 --type bridge --mac 52:54:00:45:1b:53 --config

Interface detached successfully



[root@server kvm]# virsh dumpxml kvm01 > /etc/libvirt/qemu/kvm01.xml

[root@server kvm]# virsh define /etc/libvirt/qemu/kvm01.xml

Domain kvm01 defined from /etc/libvirt/qemu/kvm01.xml



[root@server kvm]# virsh domiflist kvm01

Interface  Type       Source     Model       MAC

-------------------------------------------------------

-          bridge     br0        virtio      52:54:00:6c:cb:10

五、KVM虚拟机的快照管理

1.创建快照

代码语言:shell
复制
[root@server kvm]# virsh snapshot-create kvm01

Domain snapshot 1666155063 created

2.查看快照列表

代码语言:shell
复制
[root@server kvm]# virsh snapshot-list kvm01

 Name                 Creation Time             State

------------------------------------------------------------

 1666155063           2022-10-19 12:51:03 +0800 shutoff

3.查看快照信息

代码语言:shell
复制
[root@server kvm]# virsh snapshot-info kvm01 --current 

Name:           1666155063

Domain:         kvm01

Current:        yes

State:          shutoff

Location:       internal

Parent:         -

Children:       0

Descendants:    0

Metadata:       yes

4.查看快照目录

代码语言:shell
复制
[root@server kvm]#  ll /var/lib/libvirt/qemu/snapshot/

total 0

drwxr-xr-x 2 root root 28 Oct 19 12:51 kvm01

[root@server kvm]#  ll /var/lib/libvirt/qemu/snapshot/kvm01/

total 8

-rw------- 1 root root 5550 Oct 19 12:51 1666155063.xml

5.删除快照

代码语言:shell
复制
[root@server kvm]#  virsh snapshot-delete kvm01 1666155063

Domain snapshot 1666155063 deleted

6.恢复快照

代码语言:shell
复制
virsh snapshot-revert kvm01  1666155063  --running

7.snapshot-revert用法

snapshot-revert用法:snapshot-revert <domain> <snapshotname> --running --force

代码语言:shell
复制
选项:

     [--domain] <string> :指定domain名称,id或者uuid

     [--snapshotname] <string> : 指定快照名称

     --current  :恢复到当前快照

     --running :在恢复快照后自动运行虚拟机

     --paused  :在恢复快照后自动暂停虚拟机

     --force  :强制执行快照,有风险的恢复选项

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、检查本地环境
    • 1.检查系统版本
      • 2.检查防火墙状态
        • 3.检查selinux
          • 3.检查libvirtd服务状态
            • 4.检查kvm安装结果
              • 5.检查kvm虚拟机状态
                • 6.检查virsh版本
                • 二、virsh常用命令
                  • 1.列出虚拟机
                    • 2.虚拟机开关机操作
                      • 3.删除虚拟机
                        • 4.设置虚拟机在宿主机开机时自启
                          • 5.挂起虚拟机
                            • 6.查看虚拟机的配置文件
                              • 7.对虚拟机配置文件操作
                                • 8.查看KVM虚拟机相关配置文件
                                • 三、KVM虚拟机的磁盘管理
                                  • 1.查看磁盘格式
                                    • 2.将raw格式磁盘文件转化为qcow2
                                      • 3.创建空的qcow2格式的磁盘文件
                                        • 4.修改镜像文件大小
                                          • 5.给虚拟机新增硬盘——临时生效
                                            • 6.给虚拟机新增硬盘——永久生效
                                              • 7.卸载硬盘
                                                • 8.查看虚拟机硬件情况
                                                  • 9.在WebVirtMgr上查看虚拟机硬盘新增情况
                                                  • 四、KVM虚拟机的网卡管理
                                                    • 1.查看网卡
                                                      • 2.新增网卡
                                                        • 3.使新增网卡生效
                                                          • 4.虚拟机查看新增网卡
                                                            • 5.删除网卡
                                                            • 五、KVM虚拟机的快照管理
                                                              • 1.创建快照
                                                                • 2.查看快照列表
                                                                  • 3.查看快照信息
                                                                    • 4.查看快照目录
                                                                      • 5.删除快照
                                                                        • 6.恢复快照
                                                                          • 7.snapshot-revert用法
                                                                          相关产品与服务
                                                                          对象存储
                                                                          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                                                          领券
                                                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档