首页 > 其他分享 >基于kvm虚拟机创建openstack qcow2磁盘镜像

基于kvm虚拟机创建openstack qcow2磁盘镜像

时间:2023-12-06 11:36:01浏览次数:41  
标签:qcow2 虚拟机 kvm 磁盘镜像 dev init root cloud

前提知识

KVM做单机管理虚拟机,Openstack集群管理虚拟机

 

使用工具

virt-manager  虚拟机管理器(Virtual Machine Manager)

 

目标

基于 Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso

创建 qcow2格式的openstack 磁盘镜像

 

qcow2镜像制作

使用环境

       IP: 192.168.62.96  root/123456

CPU:     Hygon C86 5380 16-core

OS: ky10.x86_64

1、      创建一个空的 qcow2磁盘

qemu-img create -f qcow2 kylin10-2303-x86.qcow2 20G

kylin10-2303-x86.qcow2: 磁盘名称

20G: 磁盘容量大小, 实际大小会根据所需空间自动变化

 

2、      创建虚拟机

选择镜像 Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso

选择磁盘 qcow2 kylin10-2303-x86.qcow2

按自己的需求创建好虚拟机

 

3、      cloud-init安装(重要)

cloud-init官方文档
官方配置参数参考
阿里云官方文档 安装cloud-init

 

yum install cloud-init -y

rpm -qa |grep cloud-ini
cloud-init-19.4-6.p05.ky10.noarch

cloud-init -v
/usr/bin/cloud-init 19.4

cloud-init init –local
Cloud-init v. 19.4 running 'init-local' at Wed, 06 Dec 2023 02:28:44 +0000. Up 330.55 seconds.

#设置开机自启动
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

 

4、      安装相应的包(重要)

# ACPI服务是控制重启和关闭实例
yum -y install acpid
systemctl enable acpid

#
安装cloud-utils-growpart 允许分区调整
yum -y install cloud-utils-growpart

# CentOS
系统必须要禁用默认zeroconf路由,以便精确访问OpenStack数据源
echo "NOZEROCONF=yes" >> /etc/sysconfig/network

 

5、 配置Cloud-Init工具(重要)

[root@kylin10-tmpl ~]# cat /etc/cloud/cloud.cfg
# The top level settings are used as module

# and system configuration.

 

# A set of users which may be applied and/or used by various modules

# when a 'default' entry is found it will reference the 'default_user'

# from the distro configuration specified below

users:

   - default

 

# If this is set, 'root' will not be able to ssh in and they

# will get a message to login instead as the default $user

disable_root: false

 

mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']

resize_rootfs_tmp: /dev

ssh_pwauth:   1

 

# This will cause the set+update hostname module to not operate (if true)

preserve_hostname: false

 

# Example datasource config

# datasource:

#    Ec2:

#      metadata_urls: [ 'blah.com' ]

#      timeout: 5 # (defaults to 50 seconds)

#      max_wait: 10 # (defaults to 120 seconds)

 

# The modules that run in the 'init' stage

cloud_init_modules:

 - migrator

 - seed_random

 - bootcmd

 - write-files

 - growpart

 - resizefs

 - disk_setup

 - mounts

# - set_hostname

# - update_hostname

 - update_etc_hosts

 - ca-certs

 - rsyslog

 - users-groups

 - ssh

 

# The modules that run in the 'config' stage

cloud_config_modules:

 - ssh-import-id

 - locale

 - set-passwords

 - spacewalk

 - yum-add-repo

 - ntp

 - timezone

 - disable-ec2-metadata

 - runcmd

 

# The modules that run in the 'final' stage

cloud_final_modules:

 - package-update-upgrade-install

 - puppet

 - chef

 - mcollective

 - salt-minion

 - rightscale_userdata

 - scripts-vendor

 - scripts-per-once

 - scripts-per-boot

 - scripts-per-instance

 - scripts-user

 - ssh-authkey-fingerprints

 - keys-to-console

 - phone-home

 - final-message

 - power-state-change

 

# System and/or distro specific settings

# (not accessible to handlers/transforms)

system_info:

   # This will affect which distro class gets used

   distro: kylin

   # Default user name + that default users groups (if added/used)

   default_user:

     name: cloud-user

     lock_passwd: True

     gecos: kylin Cloud User

     groups: [wheel, adm, systemd-journal]

     sudo: ["ALL=(ALL) NOPASSWD:ALL"]

     shell: /bin/bash

   # Other config here will be given to the distro class and/or path classes

   paths:

      cloud_dir: /var/lib/cloud/

      templates_dir: /etc/cloud/templates/

   ssh_svcname: sshd

chpasswd:

  list: |

    root:123456

  expire: False

 

#自动扩容vda2分区

growpart:

  mode: auto

  devices: [/dev/vda2]

  ignore_growroot_disabled: false

 

##利用runcmd 扩容lvm

runcmd:

  - [pvresize,/dev/vda2]

  - [lvextend,-l,+100%FREE,/dev/mapper/klas-root]

  - [xfs_growfs,/dev/mapper/klas-root]

 

manage_resolv_conf: true

resolv_conf:

  nameservers: ['192.168.1.15','223.5.5.5']

  searchdomains:

    - localdomain

  domain: localdomain

  options:

    rotate: true

    timeout: 1

  

 

 

说明: 自动扩容磁盘

devices: [/dev/vda2] 选择对应的 vda2
- [pvresize,/dev/vda2] 选择对应的 vda2

使用 blkid 可以看到 根磁盘/dev/mapper/klas-root使用的 LVM /dev/sda2

[root@kylin10-tmpl ~]# blkid
/dev/mapper/klas-swap: UUID="8600826a-c5f3-46f3-a9aa-ce1acf98856d" TYPE="swap"
/dev/mapper/klas-root: UUID="3dae7c4a-7369-4cfc-8290-0332054d2c7a" BLOCK_SIZE="512" TYPE="xfs"
/dev/sda2: UUID="XShTtI-9C6g-ulXR-cww2-QguR-dx4r-D2CnDp" TYPE="LVM2_member" PARTUUID="31f9dfa8-02"
/dev/sda1: UUID="a1ee5d36-df4d-40b6-83e7-d9912c6ad409" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="31f9dfa8-01"

 

6、      检查Cloud-Init配置

[root@kylin10-tmpl ~]# cloud-init init --local
Cloud-init v. 19.4 running 'init-local' at Wed, 06 Dec 2023 02:48:50 +0000. Up 1536.22 seconds.

 

7、      清理日志和历史记录

cd /usr/lib/python3.7/site-packages/cloudinit/sources/
#
执行如下命令,删除__init__.pyc文件和优化编译后的__init__.pyo文件
rm -rf init.pyc
rm -rf init.pyo

#
执行如下命令,清理日志信息。
rm -rf /var/lib/cloud/*
rm -rf /var/log/cloud-init*

history -c
shutdown -h now

上传镜像到openstack, 创建虚拟机验证

标签:qcow2,虚拟机,kvm,磁盘镜像,dev,init,root,cloud
From: https://www.cnblogs.com/blogscc/p/17879121.html

相关文章

  • finalshell连接不上虚拟机详情
    1、首先进入到cd/etc/sysconfig/network-scripts/目录下。2、查看虚拟机ip地址,命令:ifconfig3、然后点击编辑—>虚拟网络编辑器—>NAT设置进入查看子网掩码为什么网关IP不能是1,因为1已经被占用4、然后输入viifcfg-ens33编辑此文件,如下图。新增属性完成后,按esc键,然后......
  • VMware虚拟机nat模式路由器ping不通虚拟机为什么?
    在VMware虚拟机中,使用NAT(NetworkAddressTranslation)模式时,虚拟机会与虚拟的路由器连接,并通过该路由器与宿主机进行通信。因此,如果NAT模式下无法ping通虚拟机,可能有以下几个原因:路由器配置问题:检查虚拟路由器的网络配置,确保其能够正确地连接到宿主机和虚拟机,并且有正确的IP地址和......
  • 9、配置虚拟机网卡桥接在宿主机的物理网卡--实现外部直接通讯
    摘自:https://blog.51cto.com/mfc001/6411180KVM网络管理1、集线器hub属于一层物理层设备问题:共享冲突域和广播域冲突域:两个设备同时发送数据(单、组、广播)会冲突,则处于同一个冲突域,反之不在。设备越多,发生冲突的几率越大。广播域:一个设备发广播,另一个设备收到......
  • 10、KVM自定义网桥实现虚拟机的内部通讯
    摘自:https://blog.51cto.com/mfc001/6411430基于自定义网桥的虚拟网络两个宿主机:自定义网桥virbr1新增eth1网卡:VMnet1仅主机模式(配好之后,两台宿主机上的虚拟机就可以通过VMnet1相互通信了)原wth0网卡:VMnet8NAT模式和外网相连   ubuntu宿主机第......
  • 3、利用初始化好的虚拟机当作模板,用于克隆
    摘自:https://blog.51cto.com/mfc001/6408226 利用初始化好的虚拟机当作模板,用于克隆第一步:先拷贝个虚拟机当作模板[root@ubuntimages]#virt-clone-orocky8-f/var/lib/libvirt/images/rocky8-template.qcow2-nrocky8-templateAllocating'rocky8-templat......
  • 4、虚拟机单机、集群的克隆、删除脚本(以初始化好的虚拟机为模板)
    摘自:https://blog.51cto.com/mfc001/6408229 虚拟机克隆、删除脚本[root@ubunt~]#catclone.sh#!/bin/bash##./etc/init.d/functions(如果是ubuntu,注释此行)Red="\e[1;31m"Purple="\e[1;35m"Green="\e[1;32m"Blue="\e[1;3......
  • 5、半虚拟化驱动--virtio(linux和windows)和安装Windows server虚拟机
    摘自:https://blog.51cto.com/mfc001/6410315KVM的功能主要体现在利用KVM的硬件辅助性虚拟化可以提高处理速度。但在虚拟机中,有些硬件不是KVM来实现加速的,如磁盘、内存、网络的性能,如果更好的提升速度,需要安装半虚拟化驱动1.2.3.  半虚拟化驱动在软......
  • 6、虚拟机在宿主机开机的情况下自启与远程管理KVM虚拟机
     摘自:https://blog.51cto.com/mfc001/6410324libvirt架构停止libvirt服务,需要同时停止以下几个服务[root@ubunt~]#systemctlstoplibvirtdlibvirtd-ro.socketlibvirtd.socketlibvirtd-admin.socket这些服务之间是有关系的,如果服务有问题,可以看下其他服务......
  • 7、虚拟机性能监控、虚拟机快照以及宿主机上的虚拟机迁移到另一个宿主机
    摘自:https://blog.51cto.com/mfc001/6410333 虚拟机性能监控图形管理页面--Edit--preferences--polling--全部开启--close 关掉管理页面并重新virt-manager启动图形管理页面--View中选项全部开启   虚拟机快照点击虚拟机打开虚拟机页面--点击......
  • 1、KVM安装部署及virt-manager图形化工具创建安装虚拟机、命令行工具virt-install创建
    摘自:https://blog.51cto.com/mfc001/6408159KVM安装部署KVM做单机管理虚拟机,Openstack集群管理虚拟机docker单机管理容器,k8s集群管理容器宿主机环境准备在vmware安装linux系统,并在设置中开启虚拟化CPU开启虚拟化一:开启虚拟化引擎两项内容二:提高内存和处理......