通过命令行创建KVM虚拟机

前言

本篇是记录通过命令行创建一个虚拟机的测试环境

创建过程

下载ISO镜像

1
wget https://mirrors.tuna.tsinghua.edu.cn/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-DVD-1908.iso

安装虚拟化相关的软件

1
yum install virt-install libvirt qemu-kvm

配置桥接网络

1
yum install bridge-utils

修改配置文件,把onboot改错no,也就是开机不启动

1
2
/etc/sysconfig/network-scripts/ifcfg-ens33 
ONBOOT="no"

修改/etc/rc.local

1
2
3
4
5
6
7
ifconfig ens33 down
ifconfig ens33 0.0.0.0
brctl addbr br0
brctl addif br0 ens33
ifconfig br0 192.168.0.101/24 up
brctl stp br0 off
route add default gw 192.168.0.1 br0
1
chmod +x /etc/rc.d/rc.local

还原

1
2
3
4
5
6
ifconfig ens33 down
ifconfig br0 down
brctl delif br0 ens33
brctl delbr br0
ifconfig ens33 192.168.0.101/24 up
route add default gw 192.168.0.1 ens33

创建磁盘

1
qemu-img create -f qcow2 ./node1.qcow2 100G

创建虚拟机

1
virt-install --name=ubuntu16 --vcpus=16 --ram=8192 --disk path=node1.qcow2,format=qcow2,bus=virtio --network bridge=br0 --cdrom /home/CentOS-7-x86_64-DVD-1908.iso --graphics vnc,listen=0.0.0.0,port=5900 --force --autostart

上面为做的网桥模式,如果使用默认nat模式

1
virt-install --name=ubuntu16 --vcpus=16 --ram=8192 --disk path=node1.qcow2,format=qcow2,bus=virtio --network network=default --cdrom /home/CentOS-7-x86_64-DVD-1908.iso --graphics vnc,listen=0.0.0.0,port=5900 --force --autostart

克隆虚拟机

1
virt-clone -o centos01 -n centos02 -f ./centos02.qcow2

-o指定源虚拟机名称
-n指定新虚拟机名称
-f指定存储新虚拟机的文件路径

启动虚拟机

1
2
[root@lab101 kvm1]# virsh start centos02
Domain centos02 started

进入虚拟机

1
[root@lab101 kvm1]# virsh console centos02

默认会卡住的
修改内核相关的配置文件

1
2
[root@lab201 ~]# cat /etc/default/grub 
GRUB_CMDLINE_LINUX="rhgb quiet console=ttyS0,115200"

然后重新生成grub,然后重启后就可以console控制了

console退出是按

1
ctrl+]

也可以导入

1
virt-install   --name=longsong-base --vcpus=4 --ram=8192 --disk path=loosong-base.qcow2,format=qcow2,bus=virtio --network network=default  --graphics vnc,listen=0.0.0.0,port=5908 --force --import  --autostart

网卡替换

删除网卡

1
2
[root@lab101 ~]# virsh detach-interface  centos01 bridge  52:54:00:bf:52:5b   --config
Interface detached successfully

重新添加网卡

1
2
[root@lab101 ~]# virsh attach-interface --domain centos01 --type bridge --source br1 --config
Interface attached successfully

虚拟机IP查询

通过virsh命令查询虚拟机的mac地址

1
2
3
4
[root@node83 ~]# virsh dumpxml longsong-zp|grep mac
<partition>/machine</partition>
<type arch='x86' machine='x86'>hvm</type>
<mac address='52:54:00:d0:77:53'/>

通过arp查询mac对应的ip地址

1
2
[root@node83 ~]# arp -a |grep 52:54:00:d0:77:53
? (192.168.122.100) at 52:54:00:d0:77:53 [ether] on virbr0

添加盘

1
2
3
4
5
[root@lab233 bigdisk]# qemu-img create -f qcow2 ./zp1-disk1.qcow2 100G
或者
[root@lab233 bigdisk]#dd if=/dev/zero of=zp1-disk1.qcow2 bs=1M seek=102400 count=0
[root@lab233 bigdisk]# virsh attach-disk --config zp1 /bigdisk/zp1-disk1.qcow2 vdb
Disk attached successfully

完成了磁盘的添加

ISO相关操作

添加

1
2
[root@lab101 kvm]# virsh attach-disk centos7.6-1 /home/CentOS-7-x86_64-DVD-1810.iso vdm
Disk attached successfully

查询

1
2
3
4
5
6
[root@lab101 kvm]# virsh domblklist centos7.6-1
Target Source
------------------------------------------------
vda /kvm/centos7.6-1.qcow2
vdm /home/CentOS-7-x86_64-DVD-1810.iso
hda -
1
2
[root@lab101 kvm]# virsh detach-disk  centos7.6-1 vdm
Disk detached successfully

win10加载iso

1
2
3
[root@lab101 kvmhost]# virt-install --name=win10 --vcpus=10 --ram=24576  --disk path=./node1.qcow2,format=qcow2,bus=virtio --network bridge=brq847bb79a-3e --disk path=/kvmhost/cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso,device=cdrom --accelerate -c /kvmhost/virtio-win-0.1.240.iso --graphics vnc,listen=0.0.0.0,port=5900 --force --autostart
或者
[root@lab101 kvmhost]# virt-install --name=win10 --vcpus=16 --ram=16384 --disk path=/dev/cas1-1,format=raw,bus=virtio --accelerate --network bridge=br0 --disk device=cdrom,path=/opt/cn_windows_10_multi-edition_version_1709_updated_sept_2017_x64_dvd_100090804.iso --disk device=cdrom,path=/opt/virtio-win-0.1.240.iso --graphics vnc,listen=0.0.0.0,port=5900 --force --autostart

快照相关

创建快照

1
2
[root@lab101 kvm]# virsh snapshot-create-as  centos7.6-small  --name origin --description "yuanshianzhuang"
Domain snapshot origin created

查询快照

1
2
3
4
[root@lab101 kvm]# virsh snapshot-list centos7.6-small
Name Creation Time State
------------------------------------------------------------
origin 2021-05-14 12:10:14 +0800 shutoff

还原快照

1
2
3
4
5
6
[root@lab101 ~]#  virsh snapshot-list centos7.6-small
Name Creation Time State
------------------------------------------------------------
origin 2021-05-14 12:10:14 +0800 shutoff

[root@lab101 ~]# virsh snapshot-revert centos7.6-small origin

删除快照

1
2
[root@lab101 ~]# virsh  snapshot-delete centos7.6-small  --snapshotname origin 
Domain snapshot origin deleted