虚拟化简介
一、什么是虚拟化
虚拟化就是通过模拟计算机硬件(cpu,内存,硬盘,网卡)来实现在一台物理服务器上运行同时多个不同的操作系统,并且使每个操作系统之间都是互相隔离的。
二、安装kvm虚拟机
1. 环境准备
优化:
kvm01在安装系统的时候,不要使用自动分区,使用标准分区。自动分区使用的LVM分区,在使用kvm的时候,特别卡!
关闭selinux和firewalld
2. 安装kvm管理工具
2.1 查看系统是否支持KVM虚拟化
[root@kvm01 ~]# egrep '(vmx|svm)' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec
2.2 安装kvm软件包
[root@kvm01 ~]# yum install libvirt virt-install qemu-kvm qemu-kvm-tools kvm kmod-kvm -y
#启动libvirtd服务
[root@kvm01 ~]# systemctl start libvirtd.service
[root@kvm01 ~]# systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-30 17:59:21 CST; 26s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 12611 (libvirtd)
Tasks: 20 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─12611 /usr/sbin/libvirtd
└─12637 /usr/sbin/ebtables --concurrent -L
Aug 30 17:58:52 kvm01 systemd[1]: Starting Virtualization daemon...
Aug 30 17:59:21 kvm01 systemd[1]: Started Virtualization daemon.
其中:
libvirt服务:管理kvm虚拟机的生命周期
virt-install工具:创建安装虚拟机
qemu-kvm工具:使用qemu-img为虚拟机提供硬盘
2.3 Linux上几种虚拟化软件
qemu 软件纯模拟全虚拟化软件,特别慢!
xen 性能特别好,需要使用专门修改之后的内核,兼容性差
KVM 需要cpu支持虚拟化,基于内核,不需要使用专门的内核,兼容行好,性能较好。
2.4 查看虚拟化环境
[root@kvm01 ~]# lsmod |grep kvm
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
[root@kvm01 ~]# virsh --version
4.5.0
[root@kvm01 ~]# virt-install --version
1.5.0
3. 安装一台基于centos7系统的web01的kvm虚拟机
3.1 创建虚拟机
注:提前将centos7操作系统的iso文件上传到宿主机
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 1024 --vcpus 1 --disk /data/centos7.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7-x86_64-DVD-1611.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Allocating 'centos7.qcow2' | 10 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
[root@kvm01 ~]# ll /data
total 4279496
-rw------- 1 qemu qemu 10739318784 Sep 5 13:24 centos7.qcow2
-rw-r--r--. 1 qemu qemu 4379901952 Feb 22 2017 CentOS-7-x86_64-DVD-1611.iso
3.2 查看虚拟机状态
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 web01 running
查询vnc端口号vncdisplay
[root@kvm01 ~]# virsh vncdisplay web01
:0
其他管理命令:
virsh帮助命令:virsh -help
列表 virsh list
开机 virsh start
关机 virsh shutdown
拔电源关机 virsh destroy
导出配置 virsh dumpxml
删除 virsh undefine(推荐:先destroy,再undefine)
通过配置文件启动虚拟机 virsh create /etc/libvirt/qemu/web01.xml
配置开机自启动虚拟机:virsh autostart web01
导入配置 virsh define
修改配置 virsh edit
重命名 virsh domrename
挂起服务器:virsh suspend web01
恢复服务器:virsh resume web01
3.3 vnc登录安装cenos7 操作系统,进行安装
在window上安装TightVNC,tightvnc官网:http://www.tightvnc.com。vnc是一个跨平台的远程桌面软件,待会安装kvm虚拟机系统的时候使用。
安装完成后,查看状态
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
[root@kvm01 ~]# virsh start web01
Domain web01 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 web01 running
4 实现使用console登录控制
4.1 使用console登录连接的原因
常规情况下,安装完 KVM 之后,可能都会通过 VNC 连接到 KVM 虚拟机里面去修改 IP 等信息。但是一旦虚拟机比较多的话,打开过多的端口会造成安全问题
很多时候,一般是通过跳板机连接的宿主机,如果window和kvm宿主机没有直达的路由,这时候vnc都用不了,如何快速进入到 KVM 虚拟机里面去排查问题呢?
4.2 centos7虚拟机配置console连接
第一个里程:vnc登录获取虚拟机ip
第二个里程:ssh远程连接,添加ttyS0的许可,允许root登陆
[root@kvm01 ~]# ssh root@192.168.122.227
The authenticity of host '192.168.122.227 (192.168.122.227)' can't be established.
ECDSA key fingerprint is 99:3d:73:32:27:b3:05:1e:ec:d6:8c:40:06:e5:76:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.227' (ECDSA) to the list of known hosts.
root@192.168.122.227's password:
Last login: Sat Sep 5 13:50:29 2020
[root@bogon ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
第三个里程:重启kvm虚拟机,参数生效
[root@localhost ~]# reboot
第四个里程:使用virsh console连接虚拟机
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 web01 running
[root@kvm01 ~]# virsh console web01
Connected to domain web01
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
bogon login: root
Password:
Last login: Sat Sep 5 13:53:17 from 192.168.122.1
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.227/24 brd 192.168.122.255 scope global dynamic eth0
valid_lft 3500sec preferred_lft 3500sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
[root@bogon ~]# who
root ttyS0 2020-09-05 13:56
5. 为web01永久增加一块20G磁盘
5.1 kvm虚拟机两种常用的格式
raw:裸格式,占用空间比较大,不适合远程传输,不支持快照功能,性能较好
qcow2:cow(copy on write)占用空间小,适合传输,支持快照,性能比raw差一点点
5.2 创建虚拟磁盘
[root@kvm01 ~]# qemu-img create -f qcow2 /data/centos7-add01.qcow2 20G
Formatting '/data/centos7-add01.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off
#查看虚拟磁盘信息
[root@kvm01 ~]# qemu-img info /data/centos7-add01.qcow2
image: /data/centos7-add01.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 283M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
5.3 添加磁盘
第一种方法:临时添加
[root@kvm01 ~]# virsh attach-disk web01 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
Disk attached successfully
第二种:永久添加添加磁盘
#编辑虚拟机配置文件添加以下内容
[root@kvm01 ~]# virsh edit web01
Domain web01 XML configuration not changed
............
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/centos7-add01.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
,,,,,,,,,,,,,,,,
5.4 查看磁盘
[root@kvm01 ~]# virsh console web01
Connected to domain web01
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
bogon login: root
Password:
Last login: Sat Sep 5 13:56:59 on ttyS0
[root@bogon ~]# fdisk -l
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000047ba
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 20971519 10484736 83 Linux
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@bogon ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 20G 0 disk
5.5 对添加的磁盘进行分区、格式化、挂载等操作
#分区
[root@localhost ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6e0a0ef4.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x6e0a0ef4
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#格式化
[root@localhost ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
#挂载
[root@localhost ~]# mount /dev/vdb1 /mnt
[root@localhost ~]# ll /mnt
total 16
drwx------. 2 root root 16384 Sep 5 14:54 lost+found
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 9.8G 1.1G 8.2G 11% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
/dev/vdb1 20G 45M 19G 1% /mnt
5.6 qemu-img的其他命令
创建虚拟磁盘:
[root@kvm01 ~]# qemu-img create -f qcow2 /data/test1.qcow2 10G
Formatting '/data/test1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm01 ~]# qemu-img create test.raw 10G
Formatting 'test.raw', fmt=raw size=10737418240
查看虚拟磁盘信息
[root@kvm01 ~]# qemu-img info /data/test.qcow2
image: /data/test.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 766M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
调整虚拟磁盘容量大小
[root@kvm01 ~]# qemu-img resize /data/test1.qcow2 +5G
Image resized.
[root@kvm01 ~]# qemu-img info /data/test1.qcow2
image: /data/test1.qcow2
file format: qcow2
virtual size: 15G (16106127360 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
磁盘格式转换
qemu-img convert -f raw -O qcow2 test.raw oldboy.qcow2
[root@kvm01 ~]# qemu-img convert -f raw -O qcow2 test.raw haha.qcow2
[root@kvm01 ~]# ll
total 200
-rw-r--r-- 1 root root 197120 Sep 8 23:21 haha.qcow2
-rw-r--r-- 1 root root 10737418240 Sep 8 23:20 test.raw
5.7 以磁盘的方式创建虚拟机
[root@kvm01 data]# virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name web02 --memory 1024 --vcpus 1 --disk /data/test.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Domain creation completed.
[root@kvm01 data]# virsh list --all
Id Name State
----------------------------------------------------
1 web02 running
[root@kvm01 data]# virsh vncdisplay web02
:0
6. kvm快照管理
快照的含义:对某一个特定文件系统在某一个特定时间内的一个具有只读属性的镜像。当需要重新返回到某一系统状态,又不想创建多个虚拟机的时候,就可以使用快照功能。或者,系统崩溃或系统异常,都可以通过使用恢复到快照来保持磁盘文件系统和系统存储。总之,快照可以实现热备和回滚的功能。
快照就是虚拟机的状态。根据虚拟机的状态快照分为以下三种:
开机状态下的快照 占用资源多 拍摄快照速度慢
挂起状态的快照 占用资源稍多 拍摄快速度稍慢
关机状态的快照 占用资源少, 拍摄速度快
6.1 创建快照
[root@kvm01 ~]# virsh snapshot-create-as --domain web01 --name "web01-v1"
Domain snapshot web01-v1 created
[root@kvm01 ~]# virsh snapshot-list web01
Name Creation Time State
------------------------------------------------------------
web01-v1 2020-09-06 13:33:49 +0800 running
6.2 查看快照信息
[root@kvm01 ~]# virsh snapshot-info --domain web01 --snapshotname web01-v1
Name: web01-v1
Domain: web01
Current: yes
State: running
Location: internal
Parent: -
Children: 0
Descendants: 0
Metadata: yes
6.3 查看虚拟机快照占用磁盘空间
[root@kvm01 ~]# qemu-img info /data/centos7.qcow2
image: /data/centos7.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.8G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 web01-v1 251M 2020-09-06 13:33:50 00:30:02.483
Format specific information:
compat: 1.1
lazy refcounts: true
6.4 恢复快照
注:恢复前先关闭虚拟机
[root@kvm01 ~]# virsh destroy web01
Domain web01 destroyed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
#恢复
[root@kvm01 ~]# virsh snapshot-revert web01 --snapshotname web01-v1
[root@kvm01 ~]# echo $?
0
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 web01 running
#测试Console登录
[root@kvm01 ~]# virsh console web01
Connected to domain web01
Escape character is ^]
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.134/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 1792sec preferred_lft 1792sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:f4:2d:06 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.134/24 brd 172.16.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::9b4a:36d2:9866:d71c/64 scope link
valid_lft forever preferred_lft forever
6.5 删除快照
[root@kvm01 ~]# virsh snapshot-delete web01 --snapshotname web01-v1
Domain snapshot web01-v1 deleted
[root@kvm01 ~]# virsh snapshot-list web01
Name Creation Time State
------------------------------------------------------------
[root@kvm01 ~]# qemu-img info /data/centos7.qcow2
image: /data/centos7.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.8G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
7.kvm虚拟机的桥接网络
7.1 使用桥接网络的原因:
运行虚拟机的目的是,在虚拟机中运行业务,现在业务所需要的服务都已经运行了,除了在宿主机上能访问,其他人也能访问。
7.2 创建桥接网络
[root@kvm01 ~]# virsh iface-bridge eth0 br0
Created bridge br0 with attached device eth0
[root@kvm01 ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe99:38a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:99:03:8a txqueuelen 1000 (Ethernet)
RX packets 91 bytes 8172 (7.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 66 bytes 8201 (8.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@kvm01 ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:99:03:8a txqueuelen 1000 (Ethernet)
RX packets 4492 bytes 305680 (298.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5643 bytes 953880 (931.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#查看网卡配置文件
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.7"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
#删除网桥
[root@kvm01 ~]# virsh iface-unbridge eth0 br0
7.3 基于桥接网络创建虚拟机
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name web03 --memory 1024 --vcpus 1 --disk /opt/test.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Allocating 'test.qcow2' | 10 GB 00:00:00
Domain creation completed.
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 web01 running
3 web03 running
[root@kvm01 ~]# virsh vncdisplay web03
:1
7.4 为已有的虚拟机创建桥接网络
需求:宿主机增加一块eth1的网卡,ip地址为172.16.1.131/32,并为web01永久性增加一块桥接网卡eth1,最终 web01的eth0和eth1分别桥接宿主机的eth0和eth1
7.4.1 为宿主机添加网卡eth1
第一个里程:重启kvm01主机,查看网卡
[root@kvm01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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 00:0c:29:ec:c7:2d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.131/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 1624sec preferred_lft 1624sec
inet6 fe80::6ed5:223:b2c8:f7d7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ec:c7:37 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fb8f:3fbd:4d9e:75e2/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
第二个里程:配置eth1网卡的ip地址
[root@kvm01 ~]# nmtui
第三个里程:重启网络服务
[root@kvm01 ~]# systemctl restart NetworkManager
[root@kvm01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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 00:0c:29:ec:c7:2d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.131/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 1799sec preferred_lft 1799sec
inet6 fe80::6ed5:223:b2c8:f7d7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ec:c7:37 brd ff:ff:ff:ff:ff:ff
inet 176.16.1.131/24 brd 176.16.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::fb8f:3fbd:4d9e:75e2/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
7.4.2 web01临时增加一块桥接网卡eth1
[root@kvm01 ~]# virsh domiflist web01
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 network default virtio 52:54:00:64:0d:85
#web01
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.227/24 brd 192.168.122.255 scope global dynamic eth0
valid_lft 1891sec preferred_lft 1891sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
#临时添加eth1
[root@kvm01 ~]# virsh attach-interface web01 --type network --model virtio --source default
Interface attached successfully
[root@kvm01 ~]# virsh domiflist web01
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 network default virtio 52:54:00:64:0d:85
vnet1 network default virtio 52:54:00:12:5a:85
#查看web01网卡的ip地址
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.227/24 brd 192.168.122.255 scope global dynamic eth0
valid_lft 1880sec preferred_lft 1880sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:12:5a:85 brd ff:ff:ff:ff:ff:ff
inet6 fe80::b948:8495:9e36:346a/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.227/24 brd 192.168.122.255 scope global dynamic eth0
valid_lft 3599sec preferred_lft 3599sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:12:5a:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.127/24 brd 192.168.122.255 scope global dynamic eth1
valid_lft 3599sec preferred_lft 3599sec
inet6 fe80::b948:8495:9e36:346a/64 scope link
valid_lft forever preferred_lft forever
7.4.3 web01永久性增加一块桥接网卡eth1
通过修改配置文件的方式永久的增加网卡
[root@kvm01 ~]# virsh attach-interface web01 --type network --model virtio --source default --config
Interface attached successfully
[root@kvm01 ~]# virsh domiflist web01
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 network default virtio 52:54:00:64:0d:85
vnet1 network default virtio 52:54:00:f4:2d:06
[root@kvm01 ~]# virsh edit web01
关机web01,再开机
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
4 web01 running
[root@kvm01 ~]# virsh destroy web01
Domain web01 destroyed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
[root@kvm01 ~]# virsh start web01
Domain web01 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
5 web01 running
#登录web01查看是否有eth1
[root@kvm01 ~]# virsh console web01
Connected to domain web01
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
localhost login: root
Password:
Last login: Sat Sep 5 16:03:10 on ttyS0
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.227/24 brd 192.168.122.255 scope global dynamic eth0
valid_lft 3596sec preferred_lft 3596sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:f4:2d:06 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.160/24 brd 192.168.122.255 scope global dynamic eth1
valid_lft 3596sec preferred_lft 3596sec
inet6 fe80::9b4a:36d2:9866:d71c/64 scope link
valid_lft forever preferred_lft forever
7.4.4 桥接网络
第一个里程:创建桥接网络
[root@kvm01 ~]# brctl addbr br0
[root@kvm01 ~]# brctl addbr br1
[root@kvm01 ~]# ifconfig br0 up
[root@kvm01 ~]# ifconfig br1 up
第二个里程:编辑网卡配置文件
[root@kvm01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.131"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
[root@kvm01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
BRIDGE="br0"
[root@kvm01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br1
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br1
DEVICE="br1"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="172.16.1.131"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
[root@kvm01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BRIDGE="br1"
第三个里程:重启网络服务
[root@kvm01 ~]# systemctl restart network
[root@kvm01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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 master br0 state UP qlen 1000
link/ether 00:0c:29:ec:c7:2d brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br1 state UP qlen 1000
link/ether 00:0c:29:ec:c7:37 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:ec:c7:2d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.131/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feec:c72d/64 scope link
valid_lft forever preferred_lft forever
5: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:ec:c7:37 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.131/16 brd 172.16.255.255 scope global br1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feec:c737/64 scope link
valid_lft forever preferred_lft forever
6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
7: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:9e:d1:fe brd ff:ff:ff:ff:ff:ff
第四个里程:修改web01的配置文件
[root@kvm01 ~]# virsh edit web01
Domain web01 XML configuration edited.
<interface type='bridge'>
<mac address='52:54:00:64:0d:85'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:f4:2d:06'/>
<source bridge='br1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>
第五个里程:重新启动web01
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 web01 running
[root@kvm01 ~]# virsh destroy web01
Domain web01 destroyed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
[root@kvm01 ~]# virsh start web01
Domain web01 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 web01 running
第六个里程:console登录获取ip,远程登录
[root@kvm01 ~]# virsh console web01
Connected to domain web01
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64
bogon login: root
Password:
Last login: Sun Sep 6 12:54:37 on ttyS0
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.134/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 1781sec preferred_lft 1781sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:f4:2d:06 brd ff:ff:ff:ff:ff:ff
inet6 fe80::9b4a:36d2:9866:d71c/64 scope link
valid_lft forever preferred_lft forever
#为eth1编辑网卡配置信息
[root@bogon ~]# nmtui
#重启网络服务
[root@bogon ~]# systemctl restart network
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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:64:0d:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.134/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 1784sec preferred_lft 1784sec
inet6 fe80::4ff4:9fdc:8840:a641/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:f4:2d:06 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.134/24 brd 172.16.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::9b4a:36d2:9866:d71c/64 scope link
valid_lft forever preferred_lft forever
7.4.5 ssh远程登录
[C:\~]$ ssh root@10.0.0.134
Connecting to 10.0.0.134:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Sep 6 13:04:19 2020
[root@bogon ~]# who
root ttyS0 2020-09-06 13:04
root pts/0 2020-09-06 13:11 (10.0.0.253)
[root@bogon ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.185.32) 56(84) bytes of data.
64 bytes from 61.135.185.32 (61.135.185.32): icmp_seq=1 ttl=128 time=25.8 ms
64 bytes from 61.135.185.32 (61.135.185.32): icmp_seq=2 ttl=128 time=28.7 ms
64 bytes from 61.135.185.32 (61.135.185.32): icmp_seq=3 ttl=128 time=26.4 ms
64 bytes from 61.135.185.32 (61.135.185.32): icmp_seq=4 ttl=128 time=29.4 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 25.835/27.616/29.437/1.525 ms
#eth1
[root@kvm01 ~]# ssh root@172.16.1.134
The authenticity of host '172.16.1.134 (172.16.1.134)' can't be established.
ECDSA key fingerprint is 99:3d:73:32:27:b3:05:1e:ec:d6:8c:40:06:e5:76:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.134' (ECDSA) to the list of known hosts.
root@172.16.1.134's password:
Last login: Sun Sep 6 13:11:03 2020 from 10.0.0.253
[root@bogon ~]# who
root ttyS0 2020-09-06 13:04
root pts/0 2020-09-06 13:11 (10.0.0.253)
root pts/1 2020-09-06 13:12 (172.16.1.131)
[root@bogon ~]# ping 172.16.1.131
PING 172.16.1.131 (172.16.1.131) 56(84) bytes of data.
64 bytes from 172.16.1.131: icmp_seq=1 ttl=64 time=0.422 ms
64 bytes from 172.16.1.131: icmp_seq=2 ttl=64 time=0.339 ms
64 bytes from 172.16.1.131: icmp_seq=3 ttl=64 time=1.06 ms
64 bytes from 172.16.1.131: icmp_seq=4 ttl=64 time=0.272 ms
^C
--- 172.16.1.131 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.272/0.524/1.065/0.317 ms
8.kvm虚拟机克隆
1)完整克隆
方法一:使用virsh-clone命令
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
[root@kvm01 ~]# virt-clone -o web01 --auto-clone
Allocating 'centos7-clone.qcow2' | 10 GB 00:02:17
Clone 'web01-clone' created successfully.
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
- web01-clone shut off
#重命名
[root@kvm01 ~]# virsh domrename web01-clone web02
Domain successfully renamed
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
- web02 shut off
#启动
[root@kvm01 ~]# virsh start web02
Domain web02 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 web02 running
- web01 shut off
[root@kvm01 ~]# virsh vncdisplay web02
:0
[root@kvm01 ~]# ll /data
total 3174568
-rw------- 1 qemu qemu 1545535488 Sep 9 23:46 centos7-clone.qcow2
-rw------- 1 root root 10739318784 Sep 5 17:48 centos7.qcow2
方法二:手动修改配置文件
a. 克隆虚拟磁盘文件
[root@kvm01 ~]# cp /data/centos7.qcow2 /data/web03.qcow2
b. 生成新的虚拟机配置文件
name修改
uuid删掉
disk路径/opt/web03.qcow2
mac地址删除
[root@kvm01 ~]# virsh dumpxml web01 >/data/web03.xml
[root@kvm01 ~]# vim /data/web03.xml
......
<name>web03</name>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
.......
.......
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/web03.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
........
.......
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>
......
c. 测试启动
[root@kvm01 ~]# virsh define /data/web03.xml
Domain web03 defined from /data/web03.xml
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- web01 shut off
- web03 shut off
[root@kvm01 ~]# virsh start web03
Domain web03 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
4 web03 running
- web01 shut off
[root@kvm01 ~]# virsh vncdisplay web03
:0
2)链接克隆
[root@kvm01 ~]# qemu-img create -f qcow2 -b /data/centos7.qcow2 /data/web04.qcow2
Formatting '/data/web04.qcow2', fmt=qcow2 size=10737418240 backing_file='/data/centos7.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Allocating 'web04.qcow2' | 10 GB 00:00:00
Domain creation completed.
[root@kvm01 ~]# ll -h /data/web04.qcow2
-rw-r--r-- 1 qemu qemu 5.0M Sep 10 00:15 /data/web04.qcow2
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
4 web03 running
5 web04 running
- web01 shut off
[root@kvm01 ~]# virsh vncdisplay web04
:1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏