在CentOS操作系统上部署KVM并创建虚拟机(命令行)

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

目录

一、KVM部署

1.下载kvm必需的软件包

2.使用命令“qemu-img”查看安装是否正确,出现参数提示说明安装正常

二、创建虚拟机

1. 关闭防火墙,关闭selinux安全机制,启动libvirtd

2.在 / 下创建vm-iso目录,用来存放需要的iso文件

3.在 / 下创建vm-centos7 目录,存放虚拟机硬盘镜像文件

4.使用命令“virt-install”创建并安装虚拟机

5.  连接到虚拟机控制台,开始安装操作系统

6.安装完后,启动刚创好的虚拟机并连接

7.常用virsh命令

三、克隆kvm下的虚拟机

方法一

方法二

四、配置KVM桥接网络

1. 在KVM下配置桥接网络配置文件,以ens33为模板复制并修改br1

2.刷新KVM主机网络

3.查看虚拟机网卡连接信息并修改

4.启动KVM主机下的虚拟机或刷新KVM主机下虚拟机的网络,并用虚拟机ping通外网,则网络配置成功


一、KVM部署

1.下载kvm必需的软件包

[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创建虚拟机

2.使用命令“qemu-img”查看安装是否正确,出现参数提示说明安装正常

二、创建虚拟机

1. 关闭防火墙,关闭selinux安全机制,启动libvirtd

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0

[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd

2.在 / 下创建vm-iso目录,用来存放需要的iso文件

[root@localhost /]# mkdir vm-iso

[root@localhost /]# chmod 777 vm-iso                #修改vm-iso目录权限

 传输镜像至vm-iso

3.在 / 下创建vm-centos7 目录,存放虚拟机硬盘镜像文件

[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: 虚拟机硬盘使用的容量

4.使用命令“virt-install”创建并安装虚拟机

# 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:指定不使用自动控制台

5.  连接到虚拟机控制台,开始安装操作系统

#virsh console centos7

 安装过程按( ctrl +] )可退出

设置好后按“b”开始安装

6.安装完后,启动刚创好的虚拟机并连接

# virsh start centos7

# vissh list                查看运行中的虚拟机

# virsh console centos7

ctrl + ]  可从虚拟机控制台退回带KVM主机命令行界面

7.常用virsh命令

命令解释
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  虚拟机名查看虚拟机网卡信息

三、克隆kvm下的虚拟机

方法一

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_64

cenos 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桥接网络

为更改前的网络

KVM主机下centos7虚拟机开启后的网络

查看虚拟机状态及网卡信息

1. 在KVM下配置桥接网络配置文件,以ens33为模板复制并修改br1

[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

2.刷新KVM主机网络

[root@localhost ~]# systemctl restart network

3.查看虚拟机网卡连接信息并修改

[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 ~]# 

4.启动KVM主机下的虚拟机或刷新KVM主机下虚拟机的网络,并用虚拟机ping通外网,则网络配置成功

 虚拟机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 指定虚拟机硬盘格式

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值