赞
踩
KVM(Kernel-basedVirtual Machine,基于内核的虚拟机)
环境:centos7.9 ,开启cpu虚拟化(勾选虚拟化Intel VT-x)
进入系统后可用以下命令,查看cpu是否开启了硬件虚拟化支持
[root@localhost ~]# grep -E '(vmx|svm)' /proc/cpuinfo
VMX 和 SVM指的是虚拟化技术
intel 平台称为 VMX--virtual machine extension;AMD 平台称为SVM--Secure Virtual Machine extension
目录
2.使用命令“qemu-img”查看安装是否正确,出现参数提示说明安装正常
1. 关闭防火墙,关闭selinux安全机制,启动libvirtd
2.在 / 下创建vm-iso目录,用来存放需要的iso文件
3.在 / 下创建vm-centos7 目录,存放虚拟机硬盘镜像文件
1. 在KVM下配置桥接网络配置文件,以ens33为模板复制并修改br1
4.启动KVM主机下的虚拟机或刷新KVM主机下虚拟机的网络,并用虚拟机ping通外网,则网络配置成功
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install qemu-kvm libvirt virt-install
qemu-kvm:(1) 提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟。[弥补 KVM 的缺陷. 同时提高 QEMU 虚拟出来的虚拟硬件设备性能]
(2) 对各种虚拟设备的创建,调用进行管理(QEMU负责)
libvirt:由应用程序编程接口库、libvirtd 守护进程、virsh CLI 组成. 其中 libvirtd 守护进程负责调度管理虚拟机
virt-install:一个命令行工具,能够为KVM、Xen或其它支持libvrit API的hypervisor创建虚拟机
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
[root@localhost /]# mkdir vm-iso
[root@localhost /]# chmod 777 vm-iso #修改vm-iso目录权限
传输镜像至vm-iso
[root@localhost /]# mkdir vm-centos7
[root@localhost /]# cd vm-centos7/
[root@localhost vm-centos7]# qemu-img create -f raw cenos7.raw 10G
Formatting 'cenos7.raw', fmt=raw size=10737418240
[root@localhost vm-centos7]# ls
cenos7.raw[root@localhost vm-centos7]# qemu-img info cenos7.raw 查看虚拟机硬盘镜像文件信息
image: cenos7.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 0
[root@localhost vm-centos7]#
1)raw:虚拟机硬盘使用格式
2)10G: 虚拟机硬盘使用的容量
# virt-install --name centos7 --vcpus 1 --ram 1024 --location=/vm-iso/CentOS-7-x86_64-Minimal-2009.iso --disk path=/vm-centos7/cenos7.raw,size=10,format=raw --network=bridge=virbr0 --os-type=linux --os-variant=rhel7 --extra-args='console=ttyS0' --noautoconsole --force
1)name:指定虚拟机名称
2)vcpus:指定虚拟机使用的cpu数量
3)ram:指定虚拟机使用的内存大小,单位为MB
4)location:指定虚拟机安装操作系统调用ISO文件的路径
5)disk:指定虚拟机安装操作系统使用的硬盘
6)network:指定虚拟机使用的网络
7)os-type:指定虚拟机使用的操作系统,window或linux
8)os-variant:指定虚拟机具体使用的操作系统版本,如rhel7代表Red Hat Enterprise Linux7
9)extra-args:指定安装时控制的工具,注意不能与vnc混用
10)noautoconsole:指定不使用自动控制台
#virsh console centos7
安装过程按( ctrl +] )可退出
设置好后按“b”开始安装
# virsh start centos7
# vissh list 查看运行中的虚拟机
# virsh console centos7
ctrl + ] 可从虚拟机控制台退回带KVM主机命令行界面
命令 | 解释 |
virsh list | 列出正在运行的虚拟机,使用--all 参数列出所有虚拟机 |
virsh start 虚拟机名 | 启动虚拟机 |
virsh autostart 虚拟机名 | 开机自动启动虚拟机 |
virsh shutdown 虚拟机名 | 关闭虚拟机 |
virsh console 虚拟机名 | 使用控制台连接到虚拟机 |
virsh destroy 虚拟机名 | 强制关闭虚拟机 |
virsh suspend 虚拟机名 | 挂起虚拟机 |
virsh resumed 虚拟机名 | 虚拟机从挂起状态恢复 |
virsh edit 虚拟机名 | 修改虚拟机配置文件 |
virsh dumpxml 虚拟机名 | 查看虚拟机配置文件 |
virsh undefine 虚拟机名 | 删除虚拟机配置文件 |
virsh dominfo 虚拟机名 | 查看虚拟机硬件信息 |
virsh domiflist 虚拟机名 | 查看虚拟机网卡信息 |
1. 以cenos7.raw为原文件(虚拟机硬盘镜像文件)创建一个新的虚拟机硬盘镜像文件为cenos7-02.qcow2,命令如下
[root@localhost ~]# cd /vm-centos7/
[root@localhost vm-centos7]# ls
cenos7.raw
[root@localhost vm-centos7]# qemu-img create -f qcow2 -b cenos7.raw cenos7-02.qcow2 # 为cenos7-02虚拟机创建新的虚拟机硬盘镜像
Formatting 'cenos7-02.qcow2', fmt=qcow2 size=10737418240 backing_file='cenos7.raw' encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost vm-centos7]# ls
cenos7-02.qcow2 cenos7.raw
[root@localhost vm-centos7]#
2. 修改cenos7-02的虚拟机配置文件
[root@localhost vm-centos7]# cd /etc/libvirt/qemu
[root@localhost qemu]# ls
centos7.xml networks
[root@localhost qemu]# cp centos7.xml centos7-02.xml
[root@localhost qemu]# ls
centos7-02.xml centos7.xml networks
[root@localhost qemu]# vi centos7-02.xml
因为复制的是centos7的配置文件,虚拟机名、虚拟机硬盘镜像文件格式、虚拟机uuid、硬盘镜像路径以及MAC地址等均需要修改,否则新创建的虚拟机无法启动,虚拟机uuid和MAC地址也可删除后从新生成
[root@localhost qemu]# vi centos7-02.xml 或 # virsh edit centos7-02 修改配置文件
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit centos7
or other application using the libvirt API.
--><domain type='kvm'>
<name>cenos7-02</name>
<uuid>322f0f23-cdb5-4097-afc1-79636dd8fe2f</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
……
<driver name='qemu' type='qcow2'/>
<source file='/vm-centos7/cenos7-02.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
……<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:87:c4:b2'/>
<source bridge='virbr0'/>
3.修改完后,注册虚拟机,再启动,登录
[root@localhost qemu]# virsh define centos7-02.xml
Domain cenos7-02 defined from centos7-02.xml[root@localhost qemu]# virsh list --all
Id Name State
----------------------------------------------------
- cenos7-02 shut off
- centos7 shut off[root@localhost qemu]# virsh start cenos7-02
Domain cenos7-02 started
[root@localhost qemu]# virsh console cenos7-02
Connected to domain cenos7-02
Escape character is ^]CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64cenos login: root
Password:
Last login: Sun May 7 13:30:07 on ttyS0
[root@cenos ~]#
克隆
# virt-clone -o centos7 -n vm2 -f /var/lib/libvirt/images/vm2.qcow2
-o centos7 以centos7为蓝本进行复制
-n vm2 创建新的虚拟机名为vm2
-f 为虚拟机磁盘镜像文件指定位置
为更改前的网络
KVM主机下centos7虚拟机开启后的网络
查看虚拟机状态及网卡信息
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br1
[root@localhost network-scripts]# vi ifcfg-br1
TYPE="Bridge" # 修改为Bridge
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br1"
DEVICE="br1"
ONBOOT="yes"
~
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="842a28ae-df7b-4475-b7d3-e8cdd7014d29"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=br1 # 将ens33上的网,桥接到br1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.52540097d03c yes virbr0-nic
vnet0
vnet1
[root@localhost ~]# virsh domiflist centos7
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 bridge virbr0 virtio 52:54:00:87:c4:b1[root@localhost ~]# virsh domiflist cenos7-02
Interface Type Source Model MAC
-------------------------------------------------------
vnet1 bridge virbr0 virtio 52:54:00:87:c4:b2[root@localhost ~]# brctl delif virbr0 vnet0 vnet1 # vnet0上的网线从virbr0断开
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br1 8000.000c29e24cef no ens33
virbr0 8000.52540097d03c yes virbr0-nic
[root@localhost ~]# brctl addif br1 vnet0 vnet1 # 将网线连接到桥接模式的虚拟交换机上
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br1 8000.000c29e24cef no ens33
vnet0
vnet1
virbr0 8000.52540097d03c yes virbr0-nic
[root@localhost ~]#
虚拟机centos7
虚拟机cenos7-02
转换虚拟机硬盘格式
(进行格式转换前需要关闭虚拟机电源 #virsh list --all 查看虚拟机运行状态) |
# qemu-img convert -f raw -O qcow2 /vm-cenos7/centos7.raw /vm-cenos7centos7.qcow2 将raw格式转换为qcow2 |
convert 使转变,改造
-f 原来的虚拟机硬盘格式
-O 指定虚拟机硬盘格式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。