如何建立qcow2格式的磁碟映象並填充資料?

weixin_33866037發表於2018-12-26

前言

本次文章的機緣來自於這次在做的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

相關文章