云计算&虚拟化-kvm-虚拟机快照(快速创建虚拟机)

48 阅读4分钟

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用(本小节属于)

4.kvm技术原理

5.vmware介绍&使用

6.小结

我们在上一下节延申了下外部快照的的2个实际使用,本小节就来是操作这个2个案例。

快速创建虚拟机

1.准备一个基础镜像

[root@localhost image]# ll |grep centos195.img
-rw------- 1 root root   1710948422 Nov  2 09:58 centos195.img

2.基于基础镜像创建2个快照

# 用于创建第一个虚拟机
qemu-img create -f qcow2 -F qcow2 -b centos195.img centos195_sp1.img
# 用于创建第二个虚拟机
qemu-img create -f qcow2 -F qcow2 -b centos195.img centos195_sp2.img

-f qcow2: 指定新创建的快照文件 centos195_sp1.img 的格式为 qcow2。

-F qcow2: 指定基础镜像文件 centos195.img 的格式为 qcow2。

-b centos195.img: 指定基础镜像文件的路径。

centos195_sp1.img: 新创建的快照文件的名称。

3.基于基础镜像创建虚拟机

/usr/libexec/qemu-kvm -hda centos195_sp2.img -m 1024 -smp 2 \
-boot d \
-net nic,model=virtio \
-net tap,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
-vnc :9

#ifup脚本
#!/bin/sh
switch=br0
if [ -n "$1" ]; then
    /sbin/ip link set $1 up
    /usr/sbin/brctl addif $switch $1
else
    echo "Usage: $0 <interface>"
    exit 1
fi

#!/bin/sh
switch=br0
if [ -n "$1" ]; then
    /usr/sbin/brctl delif $switch $1
    /sbin/ip link set $1 down
else
    echo "Usage: $0 <interface>"
    exit 1
fi

-m 1024 -smp 2 指定内存和cpu。

-boot d 从硬盘启动。

-net nic,model=virtio 添加网络模式,默认虚拟机也是这个模式。

-net tap,xxx 启动和退出执行的脚本。

-vnc :9 使用的vnc端口 这个是5909。

虽然这个方式可以创建成功的虚拟机,并且可以正常使用。但是这个虚拟机属于前台启动,并且不受virh管理。所以这个方式只能用来理解这个快照功能。

4.基于xml快速创建虚拟机

我们在上一小节讲外部快照的时候,只要创建一个外部快照,就会更新xml文件,然后把当前快照放到最前面,原来的文件和快照就会成为只读的文件,然后通过写时复制技术把他们联合挂载在一起。

所以如果我们通过快照来来创建虚拟机,只要在通过一个xml范例来更新里面的必要信息:

名字 :名字不能和其他主机冲突。

uuid:也不能和其他冲突。

mac: mac地址也不能冲突。

然后就是确保你磁盘是通过原始镜像文件+快照共同挂载即可。

# 类似下面的即可,将快照放到前面
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/image/centos31.207_2.img'/>
        <backingStore type='file'>
          <format type='qcow2'/>
          <source file='/data/image/centos31.207.img'/>
        </backingStore>
      </backingStore>

#重新定义该虚拟机
virsh define  /etc/libvirt/qemu/xxx.xml
#启动虚拟机
virsh start xxx

它是如何实现快速创建虚拟机呢?如果是传统创建虚拟机,需要复制或者传输一个镜像文件,这个文件怎么都是以G为单位,而如果是快照这个单位则是以M为单位,自然也就提高了速度。

镜像分层

其实这个快速创建虚拟机原理上是一样的,只是一个目标是虚拟机,一个目标是镜像,而如果镜像要变成虚拟机还会再附加一层快照。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。