作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
虚拟化,简单来说就是把一台服务器/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为单位,自然也就提高了速度。
镜像分层
其实这个快速创建虚拟机原理上是一样的,只是一个目标是虚拟机,一个目标是镜像,而如果镜像要变成虚拟机还会再附加一层快照。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。