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

该文详细介绍了如何在CentOS7.9环境下部署KVM,包括检查CPU虚拟化支持、安装必要软件包、创建虚拟机、安装操作系统、连接虚拟机控制台、启动和克隆虚拟机,以及配置桥接网络的过程。此外,还提供了virsh命令的常用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

<think>嗯,用户让我介绍如何使用KVM创建虚拟机。首先,我需要确认他们对KVM的基础了解程度。可能他们知道KVM是Linux内核的虚拟化解决方案,但也许需要先简单介绍一下KVM是什么。然后,分步骤说明安装前的准备工作,比如检查CPU是否支持虚拟化,安装必要的软件包。接着,需要详细讲解创建虚拟机的过程,可能包括使用virt-install命令或者图形界面工具如virt-manager。还要提到网络配置、存储池设置这些关键点。用户可能会遇到权限问题,所以得提醒他们将用户加入libvirt组。另外,常见问题比如无法启动虚拟机或者网络连接失败,也需要给出解决方法。最后,可能还需要推荐一些管理命令,比如virsh的使用,以及如何删除虚拟机。整个过程中要确保命令正确,避免错误,同时用中文清晰表达,符合他们的系统级指令要求,比如数学公式的正确格式,不过这里可能用不上太多公式。需要检查步骤是否全面,是否容易理解,有没有遗漏重要环节。比如,是否提到镜像文件的准备,不同的操作系统安装方式,以及如何访问虚拟机等。可能还需要对比命令行和图形界面两种方式,让用户根据自身情况选择。此外,安全性方面的考虑,比如防火墙设置或者SELinux的影响,也可能需要提及。总之,结构要清晰,步骤明确,覆盖准备、安装、配置、管理以及故障排除,确保用户能顺利创建KVM虚拟机。</think>好的,KVM(Kernel-based Virtual Machine)是基于Linux内核的虚拟化技术,以下将分步骤介绍如何创建虚拟机: --- ### 一、环境准备 1. **检查CPU虚拟化支持** ```bash $ grep -E 'vmx|svm' /proc/cpuinfo # Intel CPU显示vmx,AMD显示svm ``` 若无输出需在BIOS中开启虚拟化支持。 2. **安装KVM组件(以Ubuntu为例)** ```bash $ sudo apt install qemu-kvm libvirt-daemon-system virtinst bridge-utils $ sudo systemctl enable --now libvirtd $ sudo usermod -aG libvirt $USER # 将当前用户加入libvirt组 ``` --- ### 二、创建虚拟机命令行方式) 1. **准备镜像文件** ```bash $ wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2 ``` 2. **创建存储池(可选)** ```bash $ sudo virsh pool-define-as default dir --target /var/lib/libvirt/images $ sudo virsh pool-start default ``` 3. **执行创建命令** ```bash $ virt-install \ --name centos7-vm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/centos7.qcow2,size=20 \ --os-type linux \ --os-variant centos7.0 \ --network bridge=virbr0 \ --graphics vnc,listen=0.0.0.0 \ --console pty,target_type=serial \ --cdrom /path/to/CentOS-7-x86_64-Minimal-2009.iso ``` --- ### 三、图形界面方式(推荐新手) 1. 安装virt-manager: ```bash $ sudo apt install virt-manager ``` 2. 启动图形管理器: ```bash $ virt-manager ``` 3. 通过向导创建: - 点击"新建虚拟机"按钮 - 选择安装介质(ISO文件或网络安装) - 配置CPU/内存/存储 - 完成向导后自动启动安装过程 --- ### 四、关键配置说明 1. **网络模式** - **NAT模式**:默认配置,虚拟机通过宿主机上网 - **桥接模式**:虚拟机获得独立IP(需提前创建网桥) 2. **磁盘格式** ```bash qcow2 # 推荐格式,支持快照和动态扩容 raw # 原始磁盘格式,性能更好但无高级功能 ``` --- ### 五、虚拟机管理命令 ```bash $ virsh list --all # 查看所有虚拟机 $ virsh start centos7-vm # 启动虚拟机 $ virsh shutdown centos7-vm # 正常关机 $ virsh destroy centos7-vm # 强制关机 $ virsh edit centos7-vm # 修改配置文件 ``` --- ### 六、常见问题处理 1. **权限错误** ```bash $ sudo chmod 777 /var/run/libvirt/libvirt-sock ``` 2. **无法连接VNC** 检查防火墙设置: ```bash $ sudo ufw allow 5900:5910/tcp ``` 3. **性能优化** ```bash --cpu host-passthrough # 透传CPU特性 --virt-type kvm # 强制使用KVM加速 ``` --- 通过上述步骤,您可以快速创建管理KVM虚拟机。建议首次使用时通过virt-manager图形界面操作,熟悉后再尝试命令行方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葡萄糖的。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值