一.简单说明

PS: 最近有客户需要在云平台上部署我们的产品,好久没有做过qcow2镜像了,这里还是把制作流程记录下来。

QCOW2镜像格式是Qemu支持的磁盘镜像格式之一。它可以使用一个文件来表示一个固定大小的块设备。与Raw镜像格式相比,QCOW2具有如下优点:

更小的文件大小,即便不支持holes(稀疏文件)的文件系统同样适用

支持写时拷贝(COW, Copy-on-write),QCOW2镜像只反映底层磁盘镜像所做的修改

支持快照,QCOW2镜像可以包含镜像历史的多重快照

支持基于zlib的数据压缩

支持AES加密

二.制作Qcow2镜像环境部署

2.1 基础ISO

这里,我们安装centos7.5环境即可。

2.2软件安装:

[root@qcow2-build ~]# yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-install virt-viewer

启用libvirtd服务与设置开机启动

[root@qcow2-build ~]# systemctl start libvirtd

[root@qcow2-build ~]# systemctl enable libvirtd

查看kvm是否安装

[root@qcow2-build ~]# lsmod |grep kvm

kvm_intel 188688 14

kvm 636969 1 kvm_intel

irqbypass 13503 1 kvm

2.3 配置网络

# 修改网卡的配置文件如下

[root@qcow2-build network-scripts]# cat ifcfg-enp1s0

TYPE=Ethernet

BRIDGE=br0

BOOTPROTO=none

NAME=enp1s0

DEVICE=enp1s0

ZONE=public

# 创建br0,配置如下

[root@qcow2-build network-scripts]# cat ifcfg-br0

TYPE=Bridge

BOOTPROTO=static

NAME=br0

DEVICE=br0

ONBOOT=yes

IPADDR=172.16.30.22

NETMASK=255.255.255.0

GATEWAY=172.16.30.254

DNS1=8.8.8.8

ZONE=public

三.制作qcow2镜像

3.1 编写制作qcow2镜像的python脚本

[root@qcow2-build ~]# cat create_qcow2_by_iso.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Author : yuhaohao

# @Email : yuhaohaozz@163.com

# @Time : 2020/06/09 9:20

# @Version : 1.0

import sys

import subprocess

import random

import string

import time

isofile=str(sys.argv[1])

try:

hostinfo = {}

hostinfo['name'] =

subprocess.check_output("echo %s|sed -r 's/(.*yuhaohao_)(.*)(_x86.*)/\2/'" % isofile, shell=True).split('

')[0]

hostinfo['nic'] = '00:00:00:00:00:' + str(sys.argv[2])

# 定义VNC的端口如5928

hostinfo['vncport'] = '59' + str(sys.argv[2])

# QCOW2镜像的名称

hostinfo['disk'] = hostinfo['name'] + '.qcow2'

# 内存配置4G

hostinfo['ram'] = 4096

# CPU核数

hostinfo['vcpus'] = 2

# 系统磁盘大小

hostinfo['disksize'] = '290G'

hostinfo['isofile'] = isofile

hostinfo['vncpassword'] = ''.join(random.sample(string.ascii_letters + string.digits, 12))

except Exception as e:

print('we have exception:' + e)

exit(2)

print(hostinfo)

def create_vm():

# QCOW2镜像存放在/home/yuhaohao目录

subprocess.call('qemu-img create -f qcow2 /home/yuhaohao/{disk} {disksize}'.format(**hostinfo), shell=True)

subprocess.call('virt-install --virt-type kvm

--name {name}

--os-variant rhel7

--ram {ram}

--cdrom={isofile}

-m {nic}

--autostart

--vcpus {vcpus}

--disk=/kvm/{disk}

--graphics vnc,listen=0.0.0.0,port={vncport},keymap=en-us

--network bridge=br0

--noautoconsole'.format(**hostinfo), shell=True)

if __name__ == '__main__':

create_vm()

print('Your vnc port is {vncport}'.format(**hostinfo))

3.2 制作qcow2镜像

这里我们基于现有的kubernetes集群封装的ISO镜像制作qcow2格式的镜像:

制作qcow2镜像

[root@qcow2-build ~]# chmod -R 777 create_qcow2_by_iso.py

[root@qcow2-build ~]# ./create_qcow2_by_iso.py oss_1.6.0.0_x86_64_20200608.iso 29

这里通过vnc viewer采用http://${IP}:5929连接查看安装进度,安装完成后,系统会自动关机。

修改配置

[root@qcow2-build ~]# virsh start oss_1.6.0.0_x86_64_20200608.iso

# 修改/etc/default/grub

[root@oss ~]# vi /etc/default/grub

# 将biosdevname=1 改为了net.ifnames=0 biosdevname=0

GRUB_CMDLINE_LINUX="console=ttyS0,115200n8 console=tty0 net.ifnames=0 biosdevname=0 crashkernel=auto rd.luks.uuid=luks-13dadde4b-das3-43b0-d8fe-ed322a62c6b8

[root@oss ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

......

[root@oss ~]# systemctl restart network

# 重新配置grub2

[root@oss ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

# 关机

[root@oss ~]# shutdown -h 0

获取qcow2镜像

[root@qcow2-build ~]# ls /home/yuhaohao/oss_1.6.0.0_x86_64_20200608.iso.qcow2 -alh

-rw-r--r-- 1 qemu qemu 197K Jun 9 15:27 /home/yuhaohao/oss_1.6.0.0_x86_64_20200608.iso.qcow2

如何将linux封装成qcow2,linux系统qcow2镜像的制作相关推荐

  1. 制作Ubuntu系统ISO镜像(制作启动盘)

    制作Ubuntu 18.04系统ISO镜像 参考博客:https://blog.csdn.net/Toxicant__/article/details/84453796 1.安装软件 1.1 先下载r ...

  2. 晴天霹雳。。傲盾把我的Linux格成了03系统了?之二

    上回说到和销售对峙,在这儿销售简称"销售" 我:此IP[X.X.X.X]PING不通,已经交给网维[他们内部称"网维",咱也入乡随俗]了 销售:那远程可以连吗? ...

  3. 晴天霹雳。。傲盾把我的Linux格成了03系统了?之一

    一个晴天的下午,雷声噼里啪啦,灾难来向我报到了. 正在登录远程机器操作呢,突然连接中断,由于刚上的项目,一时不知所措,马上PING远程机器,天呢,全是TIMEOUT.时间仿佛嘎然停在了这一时刻.立刻把 ...

  4. 编译linux内核成vmlinuz,Linux内核编译与安装

    原标题:Linux内核编译与安装 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统,内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.Linux内核的一 ...

  5. linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2

    bzip2命令用于创建和管理(包括解压缩)".bz2"格式的压缩包.我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例 ...

  6. linux yum自动挂载_Linux系统本地Yum仓库制作

    在使用Linux系统的时候,通常需要安装许多软件,Linux系统通常安装软件有源码包安装(文件格式:.tar.gz 或.tar.bz2:安装过程:解压.环境检查.编译和安装).Rpm包安装(文件格式: ...

  7. linux发布成服务,linux服务简单部署

    1.后台运行 在linux下运行一个程序,打开终端,如果是可执行文件则是 ./binary_name 如果是python脚本,运行命令是python file_name.py 此时的程序运行时依赖于当 ...

  8. linux 封装python,基于linux下python学习(封装)

    一.面向对象 类的设计:在程序开发中,要设计一个类,通常需要满足以下三个要求: 1.类名  这类事物的名字,满足大驼峰命名法 2.属性 这类事物具有什么样的特征 3. 方法  这类事物具有什么样的行为 ...

  9. Linux小记--centos,debian系统挂载镜像方式

    Centos挂载本地yum源 mkdir /aa   创建挂载镜像文件 mount /dev/sr0 /aa 挂载镜像mount /dev/cdrom /aa 挂载镜像 (这两种方式重启之后就得重新挂 ...

最新文章

  1. ios 沙盒 plist 数据的读取和存储
  2. 最新功能 | 飞书推出“线上办公室”功能,助力企业开启无压力远程实时高效协作
  3. django部署iiswin10_基于Windows平台的Django在本地部署和腾讯云服务器上部署的方法教程(一)...
  4. Wireshark网络抓包(四)——工具
  5. python文件操作二
  6. .post与 .ajax,关于post与ajax post的数据类型
  7. hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
  8. C语言 | 结构体数组
  9. php连接数据库性能测试,无需安装配置,多操作系统支持数据库及性能测试
  10. python与java前景-java和Python的前景谁更好
  11. php fastdfs上传文件,fastDFS中使用php上傳文件 -- http上傳與下載圖片
  12. poj 2406 Power Strings kmp基础
  13. 计算机教学的弊端,信息技术在教学中的利弊及解决对策
  14. 利用python调用百度api实现黑白图像处理
  15. ansiblea基本使用
  16. 国内哪家CDN加速服务好用?
  17. Easypack: JEECG的容器化编译环境快速构建
  18. VOT数据集报错问题
  19. 域名转让或弃用一定要注销备案,否则后患无穷
  20. CAN总线控制器SJA1000的使用

热门文章

  1. Mac使用之 数码测色计
  2. 中文情感倾向性分析(IEEE2010)
  3. DTPA-tetra(tBu)ester,CAS:180152-83-4 ,大环配体配合物
  4. 百度浏览器(PC)宣布不再更新,部分功能将停止服务
  5. snipaste——一款强大的、免费的截图软件
  6. 近日国外的一名匿名网友提供了一张图片
  7. 【Shader笔记10】更复杂的光照-Unity的光源类型
  8. UI设计 banner
  9. vim批量注释和取消批量注释
  10. 【高并发内存池】第一篇:定长内存池设计