一.简单说明

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('\n')[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镜像的制作的更多相关文章

  1. Remastersys备份linux系统ISO镜像

    1. 安装Remastersys 利用Ubuntu Software Center安装,修改sources.list文件,在文件末尾加入下面三行,添加软件源, #Rsudo remastersys d ...

  2. Linux系统国内镜像站点

    一,更换说明 第一步 备份 如centos, mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ...

  3. window下从硬盘安装linux系统iso镜像文件的方法

    首先,需要安装grub2win,http://sourceforge.net/projects/grub2win/ 其次,将iso文件放在grub2可识别的分区, 如c:\abc\iso.iso 最后 ...

  4. Linux系统的镜像文件iso下载地址

    CentOS-6.1-x86_64-bin-DVD1.iso 官方网址:http://archive.kernel.org/centos-vault/6.1/isos/x86_64/ 下载链接地址:h ...

  5. [图文] Fedora 28 使用 Virt-Manager 制作并优化QCOW2镜像——Windows 10 1709

    实验说明: 云计算的发展使得桌面上云,windows 10就必不可少,这一章就如何制作QCOW2镜像文件并优化进行说明. 实验环境: 宿主机系统   :Fedora 28 WorkStation 虚拟 ...

  6. 制作linux云主机镜像

    目录 制作linux云主机镜像 1.物理机环境准备 2.安装kvm虚拟机 3.操作虚拟机 4.在物理机上处理镜像 5.拷贝制作好的raw格式的镜像 6.发布镜像到云平台 制作linux云主机镜像 1. ...

  7. 使用VMware10虚拟机安装Linux系统(能力工场)

    作为IT从业人员,我们经常使用到Linux系统,但是实际开发过程我们通常在Windows平台操作,为了满足工作需要,这个时候我们通常在windows平台安装虚拟机,并在其上建立linux系统,这样就极 ...

  8. 全新 Kali Linux 系统安装指南

    Kali Linux 系统可以说是在安全测试方面最好的开箱即用的 Linux 发行版.Kali 下的很多工具软件都可以安装在大多数的 Linux 发行版中,Offensive Security 团队在 ...

  9. 虚拟机中安装linux系统步骤

    参考:http://blog.csdn.net/u013111221/article/details/50856934 后面参考:http://blog.csdn.net/chenweitang123 ...

  10. 在Linux系统下用dd命令制作ISO镜像U盘启动盘

    http://os.51cto.com/art/201510/494762.htm 首先在 Linux 系统中打开终端,确认 U 盘路径: sudo fdisk -l 使用 dd 命令,格式如下: s ...

随机推荐

  1. k8s:The connection to the server localhost:8080 was refused - did you specify the right host or port?

    前言 k8s 集群 node节点报错:The connection to the server localhost:8080 was refused - did you specify the rig ...

  2. go ERROR invalid character '<' looking for beginning of value

    报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...

  3. Golang 1.16新特性-embed包及其使用

    embed 是什么 embed是在Go 1.16中新加入的包.它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力. 为什么需要 embed 包 ...

  4. 通过百度地图 API V2.0 版本,进行地图坐标系转换

    注意 先阅读参考链接 瞭月 的文章,再阅读本文. 其中,请求参数中 model 的含义: amap/tencent - 即:GCJ02 火星坐标系,由中国国家测绘局制订的地理信息系统的坐标系统. 由 ...

  5. 【JVM之内存与垃圾回收篇】垃圾回收器

    垃圾回收器 GC 分类与性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的 JVM 来实现. 由于 JDK 的版本处于高速迭代过程中,因此 Java 发展至今已经衍生了众多的 ...

  6. 【JVM之内存与垃圾回收篇】本地方法接口

    本地方法接口 什么是本地方法 简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗.一个 Native Method 是这样一个 Java 方法:该方法的实现由非 ...

  7. 单元测试——Mock RestTemplate

    service代码如下: public class TestServiceImpl implements ITestService { @Autowired RestTemplate restTemp ...

  8. 请详细描述 MySQL 的 B+ 树中查询数据的全过程

    MySQL 的 B+ 树中查询数据的全过程 在 MySQL 中,B+ 树被广泛用于实现索引,特别是 InnoDB 存储引擎中的聚簇索引.B+ 树是一种平衡树,具有良好的查询性能.本文将详细描述在 B+ ...

  9. iOS深色模式媒体查询css

    @media (prefers-color-scheme: dark) { body { background-color: #000; color: #fff; } }

  10. 多年后再做Web开发,AI帮大忙

    最近在AI辅助下做一个简单的网站开发,真是感叹AI的强大呀! 虽然多年前我做过Web前端和后端开发,但是那时候的开发没有现在这么容易入门.上手. 之前SSH(Structs2+Spring+Hiber ...