如何创建qcow2格式的磁盘镜像并填充数据?

前言

本次文章的机缘来自于这次在做的qb的Oracle备库部分的功能,需要提供RedHat7.4,Oracle数据库以及MySQL数据库的qcow2磁盘镜像。由于RedHat7.4的镜像已经有了,今天来讲一下怎么制作非OS数据盘的qcow2磁盘镜像。

整体流程介绍

一个qcow2镜像的生成是很容易的,不过如何格式化以及填充数据,就会稍显麻烦,因为需要在虚拟机而不是宿主机中进行。
当然使用guestmount的话,是可以将qcow2的镜像文件直接mount到宿主机的,但是这要求你的镜像是OS镜像,如果不是的话,就爱莫能助了。
因此我们这次的流程,简单说就是:

  1. 创建qcow2镜像
  2. 将镜像attach到vm中,假设为sde设备
  3. 在vm中格式化sde(注意OS的版本,不同版本的格式化可能是不兼容的)
  4. 将sde mount到随意一个路径,这里假设为/mnt/Ethan
  5. 通过rsync命令将想要的数据传输到该目录中
  6. umount该目录
  7. 在宿主机中detach该镜像

具体命令的执行

1. 创建qcow2镜像

在当前目录下创建一个预期大小为20G的qcow2镜像,命名为:mysql-5.7.21.qcow2

宿主机
qemu-img create -f qcow2 ./mysql-5.7.21.qcow2 20G

2. 将镜像attach到vm中

通过以下命令,将mysql-5.7.21.qcow2镜像attach到sun_xxx这台虚拟机中,并作为sde设备。此处注意,要选择虚拟机中尚未被占用的盘符

宿主机
virsh attach-disk sun_xxx /qbackup/repo/Ethan/oracle-10.2.0.1.0.qcow2 sda --subdriver qcow2 --serial sda

3. 在vm中格式化sda

虚拟机
mkfs.xfs -f /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_sda

4. 将sda设备mount到vm的/mnt/Ethan路径

虚拟机
mount /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_sda /mnt/Ethan/

5. 通过rsync命令将想要的数据传输到该目录中

rsync可以完全替代掉scp,-a可以保证把对应的用户权限也一起复制过来
在我这里的话,60.5下的/mnt/Ethan目录,里面的数据是从zfs的volume里面mount过来的,不过和主题无关,就不讲太多了。

虚拟机
rsync -avP  root@10.10.60.5:/mnt/Ethan/ /mnt/Ethan

6. umount该目录

umount /mnt/Ethan/

7. 在宿主机中detach该镜像

virsh detach-disk sun_xxx sda
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当在一个虚拟层运行客户虚拟机(VM)时,我们可以创建一个或多个磁盘镜像专门用于该虚拟机。作为一个 “虚拟的” 磁盘...
    hanpfei阅读 22,404评论 0 4
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,661评论 15 147
  • 导读 1. qemu-kvm disk format raw qcow2 tips 2. import raw d...
    分享放大价值阅读 3,203评论 1 3
  • 这周我们学习了“不断树立高目标”,我们每个人都有不同的经历,每当你有远大理想和目标时,都会有无穷的力量让...
    5ea73bbf40f7阅读 188评论 0 0
  • 一眨眼宝宝就长大了,怀念小时候搂在怀里的感觉,怀念躺在臂弯吃奶的你。 妈妈希望你只要健康快乐就好。在宝宝眼里有爸爸...
    木木me阅读 144评论 0 0