使用KVM制作镜像

devtools/2024/10/18 0:19:48/

资源列表

操作系统

IP

Centos7,桌面版

192.168.10.57

安装KVM

安装软件包

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

检查有否支持虚拟化

grep -e 'vmx' -e 'svm' /proc/cpuinfo
#VMX是英特尔版本,SVM是AMD版本#检查KVM模块是否安装
lsmod |grep KVM#开启libvirtd服务
systemctl start libvirtd
systemctl enable libvirtd

有两种模式 net和桥接 net模式不需要配置

 配置桥接模式

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0#修改ens33网卡配置文件
echo 'BRIDGE=br0' >> ifcfg-ens33#修改br0配置文件
vim ifcfg-br0#删除UUID
TYPE=Bridge
NAME=br0
DEVICE=br0systemctl restart network

创建KVM虚拟机

mkdir /data/{iso,store}
#把镜像上传至/data/iso
[root@localhost ~]# ls /data/iso/
CentOS-7-x86_64-DVD-2207-02.iso

 创建qcow2存储目录

qemu-img create -f qcow2 /data/store/centos.qcow2 20G

创建虚拟机

virt-install --virt-type kvm --name CentOS7 --ram 2048 --cdrom=/data/iso/CentOS-7-x86_64-DVD-2207-02.iso --disk /data/store/centos.qcow2,format=qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

打开窗口创建虚拟机

virt-manager

以下在安装好的操作系统执行

  • 安装acpid服务,acpid服务是用于可以让hypervisior重启或关闭虚拟机
yum -y install acpid
  • 安装cloud-init服务,用于启动虚拟机的时候进行密钥注入到虚拟机
yum -y install epel-release
yum -y install cloud-init
  • 关闭zeroconf route
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  • 为了确保控制台信息出现在dashboard的日志标签页中,以及nova console-log输出中,需要修改/etc/default/grub中的GRUB_CMDLINE_LINUX
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"
  • 更新grub的配置
grub2-mkconfig -o /boot/grub2/grub.cfg 
  • 关闭KVM虚拟机
shutdown -h now

在部署KVM的服务端安装libguestfs-tools

yum -y install libguestfs-tools

清理镜像MAC地址

# -d 选项后面跟创建的KVM虚拟机的名字
​
virt-sysprep -d CentOS7 
# 注意这一步要是执行失败后可以yum -y update后再次执行

清除虚拟机

virsh undefine CentOS7 

要是感觉镜像大了可以压缩一下

# 这是示例命令需要将路径更换为实际路径
qemu-img convert -c -O qcow2 /data/store/centos.qcow2 /root/centos.qcow2

把镜像从虚拟机中上传至宿主机后,可以上传至openstack平台的镜像中创建实例,打开实例后不需要再次安装操作系统,会直接开机


http://www.ppmy.cn/devtools/51042.html

相关文章

新视野大学英语2 词组 6.15

do you feel as confused and manipulated as i do with this question 你是否和我一样,对这个问题感到困惑和被操控 manipulated:被操控 defy common sense and contradict each other 违背常识且相互矛盾 defy:违背 contradict&#xf…

python中的数据分析(juypter)

加载数据后的套路 df.head() df.info() df.describe() 选择部分数据 df[[要选中的列名的列表]] df.loc[,] df.iloc[,] df.query() 增加 df[新列名] [新值] df.insert(loc , column,value ) 删除 df.drop() df.drop_duplicates() axis 0 可以改成1 inplace 修改数据 df…

外包公司泛滥,这些常识你应该提前知道?

今年大环境确实很不好 很多985,211的应届生都在网上大吐苦水,很多大龄离职大厂的技术人也好,业务人也好,都纷纷转向短视频平台做起了自媒体。而找工作的人普遍发现,某最火的招聘平台几乎都被外包公司刷屏了。大大小小的外包公司如…

25.梯度消失和梯度爆炸

深度学习中的梯度消失与梯度爆炸:定义、原因、解决办法与残差网络 一、引言 在深度学习的训练过程中,梯度消失(Gradient Vanishing)和梯度爆炸(Gradient Exploding)是两个常见且棘手的问题。它们严重阻碍…

Spring-kafka消费者消费的一些问题

前言 Spring Kafka 无缝集成了 Spring Boot、Spring Framework 及其生态系统中的其他项目,如 Spring Cloud。通过与 Spring Boot 的自动配置结合,开发者可以快速启动和配置 Kafka 相关的功能。无需编写大量样板代码即可实现 Kafka 的生产和消费功能&…

使用C语言,写一个类似Linux中执行cat命令的类似功能

一、详细的代码案例 #include <stdio.h> #include <stdlib.h> #include <string.h>// 函数声明 void cat_file(const char *filename);int main(int argc, char *argv[]) {if (argc < 2) {fprintf(stderr, "Usage: %s filename1 [filename2 ...]\n&…

Redis系列-4 Redis集群介绍

Redis集群 Redis提供了持久化能力&#xff0c;保证了重启不会丢失数据&#xff1b;但Redis重启至完全恢复期间&#xff0c;缓存不可用。另外&#xff0c;对于高并发场景下&#xff0c;单点Redis服务器的性能不能满足吞吐量要求&#xff0c;需要进行横向扩展。此时&#xff0c;…

settings和toolchains.xml 区别用法配置

在 IntelliJ IDEA 中配置 Maven 项目时&#xff0c;settings.xml 和 toolchains.xml 的使用场景有所不同。以下是具体的使用情景和配置方法&#xff1a; 1. 使用 settings.xml 使用场景 全局或用户级别的配置&#xff1a;包括设置本地仓库位置、远程仓库、代理服务器、认证信…