【虚拟化】KVM命令行安装linux虚拟机

news2024/11/18 22:50:24

目录

​一、KVM概述

1.1 KVM是什么

1.2 KVM和QEMU的关系

1.3 kvm相关安装包及其作用

二、安装KVM

三、命令行创建虚拟机并安装CentOS7

四、报错处理

4.1 问题1

4.2 问题2


一、KVM概述


1.1 KVM是什么


KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。目前KVM已成为学术界的主流VMM之一,它包含一个为处理器提供底层虚拟化可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-amd.ko)。

kvm还需要一个经过修改的QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。KVM的虚拟化需要硬件支持(如 Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。 KVM可以运行多个其本身运行未改动的镜像的虚拟机,例如Windows,Mac OS X ,每个虚拟机都有各自的虚拟硬件,比如网卡、硬盘核图形适配器等。

1.2 KVM和QEMU的关系


QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMD SVM)虚拟化特性的支持,换言之它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案:KVM+QEMU。

1.3 kvm相关安装包及其作用


安装包说明:

KVM安装包

含义

qemu-kvm

主要KVM程序包

virt-manager

GUI虚拟机管理工具

libvirt

C语言工具包,提供libvirt服务

libvirt-client

虚拟客户机提供的C语言工具包

virt-install

基于libvirt服务的虚拟机创建命令

qemu-kvm-tools

KVM调试工具

qemu-img

安装qemu组件,使用qemu命令来创建磁盘,启动虚拟机

bridge-utils

创建和管理桥接设备的工具

python-virtinst

创建虚拟机所需要的命令行工具和程序库


二、安装KVM


测试服务器

系统版本

IP地址

最低资源配置

CentOS7.6

192.168.2.126

CPU:8核
内存:20G
磁盘:100G

虚拟化软件:WMware ESXi、KVM

7.0版本

  • 宿主操作系统(在哪个操作系统上操作):CentOS 7.6
  • 虚拟化软件:VMWare ESXI7.0、KVM
  • 待安装操作系统(等下虚拟机建好后需要安装的操作系统):CentOS 7.6

基础环境设置

# 关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

# 安装基本工具包。
yum -y install  vim wget net-tools unzip zip gcc gcc-c++ epel-release

检测机器的CPU是否支持KVM。若显示结果由vmx(Intel)或svm(AMD)字样,就说明支持。

准备镜像文件

安装KVM所需组件

yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager

安装包说明:

KVM安装包

含义

qemu-kvm

主要KVM程序包

virt-manager

GUI虚拟机管理工具

libvirt

C语言工具包,提供libvirt服务

qemu-kvm-tools

KVM调试工具

qemu-img

安装qemu组件,使用qemu命令来创建磁盘,启动虚拟机

bridge-utils

创建和管理桥接设备的工具

配置虚拟网卡

cat > /etc/sysconfig/network-scripts/ifcfg-br0 << EOF
TYPE="Bridge"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
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="br0"
UUID="4eaf3908-3128-4e53-84a8-fd13984e4525"
DEVICE="br0"
ONBOOT="yes"
IPADDR="192.168.2.126"
GATEWAY="192.168.2.254"
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-ens192 << EOF
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
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="ens192"
UUID="4eaf3908-3128-4e53-84a8-fd13984e4525"
DEVICE="ens192"
ONBOOT="yes"
IPADDR="192.168.2.126"
GATEWAY="192.168.2.254"
BRIDGE="br0"
EOF	

重启网络服务

systemctl restart network

启动libvirtd服务

systemctl restart   libvirtd


三、命令行创建虚拟机并安装CentOS7


使用命令安装

virt-install --name=study01   \
--memory=2048,maxmemory=2048 \
--vcpus=2,maxvcpus=2 \
--os-type=linux --os-variant=rhel7  \
--location=/images/ISO/CentOS-7-x86_64-Minimal-1810.iso    \
--disk path=/images/kvm/study01.img,size=30             \
--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 定义终端额外的参数

附录:virt-install参数说明

usage: virt-install --name NAME --memory MB STORAGE INSTALL [options]

从指定安装源创建新虚拟机。

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --connect URI         通过 libvirt URI 连接到虚拟机管理程序

通用选项:
  -n NAME, --name NAME  客户机实例名称
  --memory MEMORY       Configure guest memory allocation. Ex:
                        --memory 1024 (in MiB)
                        --memory 512,maxmemory=1024
                        --memory 512,maxmemory=1024,hotplugmemorymax=2048,hotplugmemoryslots=2
  --vcpus VCPUS         配置客户机虚拟 CPU(vcpu) 数量。例如:
                        --vcpus 5
                        --vcpus 5,maxcpus=10,cpuset=1-4,6,8
                        --vcpus sockets=2,cores=4,threads=2
  --cpu CPU             CPU model and features. Ex:
                        --cpu coreduo,+x2apic
                        --cpu host-passthrough
                        --cpu host
  --metadata METADATA   配置客户机元数据。例如:
                        --metadata name=foo,title="My pretty title",uuid=...
                        --metadata description="My nice long description"

安装方法选项:
  --cdrom CDROM         光驱安装介质
  -l LOCATION, --location LOCATION
                        安装源 (例如:nfs:host:/path, http://host/path,
                        ftp://host/path)
  --pxe                 使用 PXE 协议从网络引导
  --import              在已有的磁盘镜像中构建客户机
  --livecd              将光驱介质视为 Live CD
  -x EXTRA_ARGS, --extra-args EXTRA_ARGS
                        将附加参数添加到由 --location
                        引导的内核中
  --initrd-inject INITRD_INJECT
                        添加指定文件到由 --location 指定的 initrd
                        根中
  --os-variant DISTRO_VARIANT
                        在客户机上安装的操作系统,例如:'fedor
                        a18'、'rhel6'、'winxp' 等。
  --boot BOOT           配置客户机引导设置。例如:
                        --boot hd,cdrom,menu=on
                        --boot init=/sbin/init (针对容器)
  --idmap IDMAP         为 LXC 容器启用用户名称空间。例如:
                        --idmap uid_start=0,uid_target=1000,uid_count=10

设备选项:
  --disk DISK           指定存储的各种选项。例如:
                        --disk size=10 (在默认位置创建 10GiB 镜像)
                        --disk /my/existing/disk,cache=none
                        --disk device=cdrom,bus=scsi
                        --disk=?
  -w NETWORK, --network NETWORK
                        配置客户机网络接口。例如:
                        --network bridge=mybr0
                        --network network=my_libvirt_virtual_net
                        --network network=mynet,model=virtio,mac=00:11...
                        --network none
                        --network help
  --graphics GRAPHICS   配置客户机显示设置。例如:
                        --graphics vnc
                        --graphics spice,port=5901,tlsport=5902
                        --graphics none
                        --graphics vnc,password=foobar,port=5910,keymap=ja
  --controller CONTROLLER
                        配置客户机控制器设备。例如:
                        --controller type=usb,model=ich9-ehci1
  --input INPUT         配置客户机输入设备。例如:
                        --input tablet
                        --input keyboard,bus=usb
  --serial SERIAL       配置客户机串口设备
  --parallel PARALLEL   配置客户机并口设备
  --channel CHANNEL     配置客户机通信通道
  --console CONSOLE     配置文本控制台连接主机与客户机
  --hostdev HOSTDEV     配置物理 USB/PCI 等主机设备与客户机共享
  --filesystem FILESYSTEM
                        传递主机目录到客户机。例如:
                        --filesystem /my/source/dir,/dir/in/guest
                        --filesystem template_name,/,type=template
  --sound [SOUND]       配置客户机声音设备仿真
  --watchdog WATCHDOG   配置客户机 watchdog 设备
  --video VIDEO         配置客户机视频硬件。
  --smartcard SMARTCARD
                        配置客户机智能卡设备。例如:
                        --smartcard mode=passthrough
  --redirdev REDIRDEV   配置客户机重定向设备。例如:
                        --redirdev usb,type=tcp,server=192.168.1.1:4000
  --memballoon MEMBALLOON
                        配置客户机 memballoon 设备。例如:
                        --memballoon model=virtio
  --tpm TPM             配置客户机 TPM 设备。例如:
                        --tpm /dev/tpm
  --rng RNG             Configure a guest RNG device. Ex:
                        --rng /dev/urandom
  --panic PANIC         配置客户机 panic 设备。例如:
                        --panic default
  --memdev MEMDEV       Configure a guest memory device. Ex:
                        --memdev dimm,target_size=1024

客户机配置选项:
  --security SECURITY   设置域安全驱动配置。
  --cputune CPUTUNE     Tune CPU parameters for the domain process.
  --numatune NUMATUNE   为域进程调整 NUMA 策略。
  --memtune MEMTUNE     为域进程调整内存策略。
  --blkiotune BLKIOTUNE
                        为域进程调整 blkio 策略。
  --memorybacking MEMORYBACKING
                        为域进程设置内存后备策略。例如:
                        --memorybacking hugepages=on
  --features FEATURES   设置域 <features> XML。例如:
                        --features acpi=off
                        --features apic=on,eoi=on
  --clock CLOCK         设置域 <clock> XML。例如:
                        --clock offset=localtime,rtc_tickpolicy=catchup
  --pm PM               配置 VM 电源管理功能
  --events EVENTS       配置 VM 生命周期管理策略
  --resource RESOURCE   配置 VM 资源分区(cgroups)
  --sysinfo SYSINFO     Configure SMBIOS System Information. Ex:
                        --sysinfo emulate
                        --sysinfo host
                        --sysinfo bios_vendor=Vendor_Inc.,bios_version=1.2.3-abc,...
                        --sysinfo system_manufacturer=System_Corp.,system_product=Computer,...
                        --sysinfo baseBoard_manufacturer=Baseboard_Corp.,baseBoard_product=Motherboard,...
  --qemu-commandline QEMU_COMMANDLINE
                        Pass arguments directly to the qemu emulator. Ex:
                        --qemu-commandline='-display gtk,gl=on'
                        --qemu-commandline env=DISPLAY=:0.1

虚拟化平台选项:
  -v, --hvm             这个客户机应该是一个全虚拟化客户机
  -p, --paravirt        这个客户机应该是一个半虚拟化客户机
  --container           这个客户机应该是一个容器客户机
  --virt-type HV_TYPE   要使用的管理程序名称 (kvm, qemu, xen, ...)
  --arch ARCH           模拟 CPU 架构
  --machine MACHINE     机器类型为仿真类型

其它选项:
  --autostart           主机启动时自动启动域。
  --transient           Create a transient domain.
  --wait WAIT           请等待数分钟以便完成安装。
  --noautoconsole       不要自动尝试连接到客户端控制台
  --noreboot            安装完成后不启动客户机。
  --print-xml [XMLONLY]
                        打印生成的 XML 域,而不是创建客户机。
  --dry-run             运行安装程序,但不创建设备或定义客户
                        机。
  --check CHECK         启用或禁用验证检查。例如:
                        --check path_in_use=off
                        --check all=off
  -q, --quiet           抑制非错误输出
  -d, --debug           输入故障排除信息 

开始安装后会显示安装引导界面,其实跟普通安装CentOS一样,只不过平时是用图形界面安装,这里是用命令行来配置语言、时区、安装源、网络、密码等信息,[!]代表你需要配置的,[x]代表你已经设置了。

各选项含义如下:
1)语言设置 2)时区设置 
3)安装源 4)软件包选择
5)系统分区 6)Kdump功能
7)网络配置 8)密码设置
9)创建用户

按1进入语言选择界面:

这里选择了中文,输入68并回车,然后会让你选择是简体还是繁体,这里也按下相应的数字然后回车:

选择 1 简体中文

接下来选择时区:

选择亚洲

选择回车继续

选择亚洲 时区 上海

设置系统安装盘


 

选择 "c" 继续

默认下一步

选择标准分区

选中标准分区后,我们输入“c”回车继续

设置root密码

设置完root 密码后,输入 b 开始安装。

安装完成后会停止在以下这个界面,按一下回车就会自动重启。

重启完成后就会进入到登录界面

进入到KVM虚拟机安装的目录或磁盘,会发现下面多出了个文件


四、报错处理


4.1 问题1


[root@kvm ~]# virsh console study01
Connected to domain study01
Escape character is ^]
error: 操作失败: 这个域有活跃控制台会话

原因及解决办法:如果你之前连接过,没有退出,但是你与宿主机的ssh断了,就会出现这种问题,也就是你之前的连接控制台的连接还存在;

解决:

#查看virsh进程号,kill即可
 
ps -ef | grep virsh
kill -9 ****

或者查看virt-manager 是不是没有关闭引起冲突。

4.2 问题2


先执行命令virsh start study01,启动虚拟机。 
当执行命令virsh console mycentos后出现如下显示:
virsh console mycentos Connected to domain mycentos Escape character is ^]
按任何键都没有反应。

解决方法:


启动mycentos修改其配置:
1、修改 /etc/securetty 到最后添加 ttyS0
echo ttyS0 >>/etc/securetty
2、修改/etc/inittab 到最后添加 S0:12345:respawn:/sbin/agetty/ ttyS0 115200
echo "S0:12345:respawn:/sbin/agetty/ ttyS0 115200" >> /etc/inittab 
3、修改/etc/grub.conf ,在 kernel 这一行的末尾,添加console=ttyS0
4、重启mycentos : reboot

重启后即可正常通过终端连接到虚拟机。


参考命令行创建虚拟机:

【KVM】KVM虚拟机安装搭建及基本使用 - 简书

cento7安装kvm并通过kvm命令行安装centos7_kvm安装-CSDN博客
KVM(二)命令行新建虚拟机_kvm命令行创建虚拟机-CSDN博客

控制台进不去解决方式:

virsh console 进不去虚拟机_virsh 命令-腾讯云开发者社区-腾讯云

KVM 桥接设置: linux-kvm.org/page/Main_Page

CentOS7安装kvm并配置网络连接-腾讯云开发者社区-腾讯云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

热门好用骨传导耳机怎么挑选?推荐这五款值得入手的骨传导耳机

近两年来&#xff0c;骨传导运动蓝牙耳机在运动领域内日益流行。与传统耳机相比&#xff0c;它的显著优势是能够保持双耳开放&#xff0c;不会堵塞耳道&#xff0c;消除了入耳式耳机可能引起的不适感。此外还能避免运动时耳内出汗可能导致的各种卫生和健康问题。很多人就问了&a…

3.4交换机端口安全配置的方法和步骤

一、设置端口安全性 switchport port-security 二、设置某端口的安全Mac地址 switchport port-security mac-address <mac 地址> 三、设置端口允许通过的最多mac地址数量 switchport port-security maximum<数量> 默认为1,通常最多1024个 四、检测到违规时的…

leetcode 堆栈(栈+优先队列)——java实现

java创建堆栈和操作函数 Queue<String> queue new LinkedList<String> ();//队列定义 Deque<String> stack new LinkedList<String>();//堆栈 队列方法&#xff1a; queue.offer(e) null queue.poll() 返回移除的值 queue.peek() 堆栈方法&#xff1…

从零开始学cv-8:直方图操作进阶:直方图匹配,局部直方图均衡化,彩色直方图均衡化

文章目录 一&#xff0c;简介二、直方图匹配三、局部直方图均衡化四、彩色直方图均衡化4.1 rgb彩色直方图均衡化4.2 ycrb 彩色直方图均衡化 一&#xff0c;简介 在上一篇文章中&#xff0c;我们探讨了直方图的基本概念&#xff0c;并详细讲解了如何利用OpenCV来查看图像直方图…

MATLAB 大场景建筑物点云提取方法实现(75)

MATLAB 大场景建筑物点云提取方法实现(75) 一、算法介绍二、算法实现1.代码2.效果展示总结一、算法介绍 本章手动实现了一种建筑物点云提取方法,可以对室外的大规模场景点云中的建筑物进行有效提取,下面是实现的效果和具体的实现方法,直接复制粘贴代码即可使用, 二、算…

【基础算法总结】多源 BFS_多源最短路问题

多源 BFS_多源最短路问题 1.多源 BFS_多源最短路问题2.01 矩阵3.飞地的数量4.地图中的最高点5.地图分析 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&…

springboot纹理生成图片系统--论文源码调试讲解

第2章 程序开发技术 2.1 MySQL数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识了&#xff0c;一般来说…

Maven继承和聚合特性

目录 Maven继承关系 1.继承概念 父POM 子模块 2.继承机制 3.示例 4.继承作用 背景 需求 5.注意事项 Maven聚合关系 1. 定义与概念 2. 实现方式 3. 特性与优势 4. 示例 5. 注意事项 Maven继承关系 1.继承概念 Maven 继承是指在 Maven 的项目中&#xff0c;定义…

沉浸式技术

沉浸式技术是一种通过创造逼真的虚拟或增强现实环境&#xff0c;使用户感到自己仿佛身处另一个世界的技术。它主要依赖于视觉、听觉、触觉等多种感官的调动&#xff0c;带来身临其境的体验。随着技术的发展&#xff0c;沉浸式技术正迅速改变着娱乐、教育、医疗等众多领域。本文…

Golang | Leetcode Golang题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; func reverseVowels(s string) string {t : []byte(s)n : len(t)i, j : 0, n-1for i < j {for i < n && !strings.Contains("aeiouAEIOU", string(t[i])) {i}for j > 0 && !strings.Contains("aei…

牛客周赛 Round 56

牛客周赛 Round 56 A 面包店故事 链接&#xff1a;https://ac.nowcoder.com/acm/contest/88392/A 来源&#xff1a;牛客网 题目描述 小镇上有一家面包店&#xff0c;面包以 &#x1d465; 元的价格出售&#xff0c;加 &#x1d466; 元可以多加几块培根。小歪带着 &#x1d4…

蔚来汽车拥抱AI

30多个传感器&#xff0c;车上实时收集数 为什么要造手机 领航辅助驾驶 端到端AEB

Spring动态代理与AOP

AOP中的Before是如何实现的&#xff1f; 在AOP&#xff08;面向切面编程&#xff09;中&#xff0c;Before注解通常用于定义一个在方法执行前执行的前置通知&#xff08;advice&#xff09;。在Spring框架中&#xff0c;实现Before功能的底层机制主要基于代理&#xff08;Prox…

JSON Web Token (JWT): 理解与应用

JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间以JSON对象的形式安全地传输信息。JWT通常用于身份验证和授权目的&#xff0c;因为它可以使用JSON对象在各方…

4.5、配置vtp域

一、了解vtp域 VTP&#xff08;VLAN Trunking Protocol&#xff09;域是一个在网络中用于管理和同步VLAN配置信息的概念。它使得多个交换机可以在同一VTP域中共享VLAN信息&#xff0c;从而简化了VLAN的配置和管理。 三种主要模式 Server模式&#xff1a; 交换机可以创建、修…

Nginx的进程模型:Master-Worker架构解析

Nginx的进程模型&#xff1a;Master-Worker架构解析 一、Master-Worker架构概述二、Master进程的职责三、Worker进程的特点四、与Apache进程模型的对比 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Nginx作为高性能Web服务器&#xff0c…

代码随想录算法训练营day45:动态规划part12:115.不同的子序列;583. 两个字符串的删除操作;72. 编辑距离

目录 115.不同的子序列 分析&#xff1a; 583. 两个字符串的删除操作 72. 编辑距离 115.不同的子序列 力扣题目链接(opens new window) 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指&#xff0c;通过删除…

初识Linux · 基本指令(1)

目录 前言&#xff1a; 基本指令 1.1 pwd 1.2 ls 1.3 mkdir cd clear 1.4 touch 1.5 ls部分补充 1.6 whoami 1.7 有关目录以及路径 前言&#xff1a; 今天是Linux系列的第一章节&#xff0c;对于Linux的主线学习大概会更新两个半月左右&#xff0c;中间穿插着算法…

vue中 在scoped下通过@import引入scss的作用域?

<style lang"scss" src"./index.scss" scoped></style>人工智能学习网站 https://chat.xutongbao.top

nbcio-boot基于flowable6.7.2的流程模型版本管理-前端与界面

更多技术支持与服务请加入我的知识星球。 这部分主要讲前端与功能界面方面 1、首先增加发布列表与修改状态api接口 // 查询流程发布列表 export function listPublish(query) {return request({url: /flowable/definition/publishList,method: get,params: query})}// 激活/挂…