搭建环境 : CentOS 7
[root@KVM ~]# systemctl stop firewalld
[root@KVM ~]# systemctl disable firewalld
[root@KVM ~]# grep -Ei 'vmx|svm' /proc/cpuinfo
# 过滤出vmx或svm关键字就代表支持虚拟化,vmx是Intel的CPU,svm是AMD的CPU
格式化新磁盘,并挂载
[root@KVM ~]# fdisk -l
[root@KVM ~]# mkfs.ext4 /dev/sdb # 会有询问,输入y即可
[root@KVM ~]# blkid /dev/sdb # 检查是否已格式化
/dev/sdb: UUID="a2600993-bde6-4d85-bc3e-724f45ff9ae3" TYPE="ext4"
[root@KVM ~]# mkdir /kvm_data # 创建挂载目录
[root@KVM ~]# mount /dev/sdb /kvm_data # 将新磁盘挂载到/kvm_data目录下
[root@KVM ~]# vim /etc/fstab # 设置开机自动挂载
# 添加 /dev/sdb /kvm_data/ ext4 defaults 0 0
安装kvm
[root@KVM ~]# yum -y install virt-* libvirt bridge-utils qemu-img
配置网卡
[root@KVM ~]# cd /etc/sysconfig/network-scripts/
[root@KVM network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@KVM network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 # 添加
# 然后把IP MASK DNS都删掉即可
TYPE=bridge # 修改网卡类型
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=br0 # 网卡名
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.94.22
PREFIX=24
GATEWAY=192.168.94.2
[root@KVM ~]# systemctl restart network
查看网卡信息
[root@KVM ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.94.22 netmask 255.255.255.0 broadcast 192.168.94.255
inet6 fe80::20c:29ff:fe6b:dbdc prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6b:db:dc txqueuelen 1000 (Ethernet)
RX packets 94 bytes 9027 (8.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 66 bytes 9105 (8.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:6b:db:dc txqueuelen 1000 (Ethernet)
RX packets 329996 bytes 478088865 (455.9 MiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 66181 bytes 4835367 (4.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 611 bytes 75976 (74.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 611 bytes 75976 (74.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
启动KVM的服务
[root@KVM ~]# lsmod |grep kvm # 检查KVM模块是否加载
kvm_intel 174841 0
kvm 578518 1 kvm_intel
irqbypass 13503 1 kvm
[root@KVM ~]# systemctl start libvirtd # 启动libvirtd服务
[root@KVM ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c296bdbdc no ens33 # 我们配置的桥接网卡
virbr0 8000.525400d2488d yes virbr0-nic # NAT模式的网卡
创建虚拟机安装CentOS7
[root@KVM ~]# cd /tmp/
[root@KVM tmp]# ls
CentOS-7-x86_64-DVD-1804.iso # 准备好的镜像
systemd-private-a5de49561f874704a8ab299e79927293-chronyd.service-bhemHv
systemd-private-a5de49561f874704a8ab299e79927293-named.service-URqlBG
systemd-private-cc88880270574599942110f66e3eae19-systemd-hostnamed.service-c0VlU8
安装这个CentOS7镜像文件
[root@KVM tmp]# virt-install \
--name=damowang \
--memory=512,maxmemory=1024 \
--vcpus=1,maxvcpus=2 \
--os-type=linux \
--os-variant=rhel7 \
--location=/tmp/CentOS-7-x86_64-DVD-1804.iso \
--disk path=/kvm_data/damowang.img,size=10 \
--bridge=br0 \
--graphics=none \
--console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"
--name 指定虚拟机的名称
--memory 指定分配给虚拟机的内存资源大小
maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
--vcpus 指定分配给虚拟机的CPU核心数量
maxvcpus 指定可调节的最大CPU核心数量
--os-type 指定虚拟机安装的操作系统类型
--os-variant 指定系统的发行版本
--location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
--disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
--bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
--graphics 指定是否开启图形
--console 定义终端的属性,target_type 则是定义终端的类型
--extra-args 定义终端额外的参数
开始安装后,正常的情况下会进入到这样一个界面
这是配置语言、时区、安装源、网络、密码等信息,和在VMware里安装CentOS虚拟机是一样的,只不过这个是命令行形式,而VMware里是图形界面
首先设置语言,按数字1,回车进入以下界面 输入回车后再输入68
然后选择1 简体中文
配置完成之后又会再次回到配置界面,下面输入2 设置时区
选择设置时区,设置亚洲时区
回车后选择上海时区
输入5 ,设置系统安装盘
选择c继续
默认选项即可 , c继续
选择标准分区
输入c , 继续
输入8 ,设置超级用户密码
输入b, 开始安装
安装完成后回自动重启
重启成功之后就会进入到登录界面
登录
现在是一个虚拟终端,按 Ctrl + ] 可以切出来
/kvm_data下面多了一个镜像文件
[root@KVM tmp]# ll /kvm_data/
总用量 1377968
-rw------- 1 qemu qemu 10739318784 9月 9 21:03 damowang.img
drwx------ 2 root root 16384 9月 9 17:46 lost+found
查看虚拟机状态
[root@KVM tmp]# virsh list # 查看当前运行中的虚拟机
Id 名称 状态
----------------------------------------------------
2 damowang running
[root@KVM tmp]# virsh list --all # 列出所有虚拟机包括关机状态的
Id 名称 状态
----------------------------------------------------
2 damowang running
查看虚拟机配置文件
[root@KVM tmp]# ls /etc/libvirt/qemu/
damowang.xml networks
[root@KVM tmp]# ls /etc/libvirt/qemu/networks/
autostart default.xml
[root@KVM tmp]# ls /etc/libvirt/qemu/networks/autostart/
default.xml
管理虚拟机的常用命令
[root@KVM tmp]# virsh list
Id 名称 状态
----------------------------------------------------
2 damowang running
[root@KVM tmp]# virsh console 2 # 进入指定的虚拟机,进入的时候还需要按一下回车 可以用虚拟机id 可以用名称
连接到域 damowang
换码符为 ^]
[root@localhost ~]#
[root@KVM tmp]# virsh shutdown 2 # 关闭虚拟机
域 2 被关闭
[root@KVM tmp]# virsh start damowang # 启动虚拟机
域 damowang 已开始
[root@KVM tmp]# virsh autostart damowang # 设置宿主机开机时该虚拟机也开机
域 damowang标记为自动开始
[root@KVM tmp]# virsh autostart --disable damowang # 解除开机启动
域 damowang取消标记为自动开始
[root@KVM tmp]# virsh suspend damowang # 挂起虚拟机
域 damowang 被挂起
[root@KVM tmp]# virsh resume damowang # 恢复挂起的虚拟机
域 damowang 被重新恢复
[root@KVM tmp]# virsh undefine damowang # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
为虚拟机配置IP ,然后就可以正常使用了
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
UUID=1582ada4-4c42-4dab-84e2-f7075fc66d3f
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.94.111
NETMASK=255.255.255.0
GATEWAY=192.168.94.2
DNS1=192.168.94.2
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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 group default qlen 1000
link/ether 52:54:00:6a:5b:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.94.111/24 brd 192.168.94.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe6a:5b46/64 scope link
valid_lft forever preferred_lft forever