虚拟化

     

硬件虚拟化

一台物理计算机虚拟出多台逻辑计算机

CPU 内存可分配给多个虚拟机    

软件虚拟化

一个LAMP平台支持多个网站

桌面虚拟化

     

通过软件平台模拟出的计算机

对用户来说,感受不到与物理计算机的差异

根据虚拟化程度不同,所需的修改也不同

     

虚拟化实现程序

完全虚拟化

由平台软件来模拟实现

客户机的操作系统代码几乎不做修改

     

半虚拟化

平台软件只提供最好核心的虚拟机功能

需要修改客户机的系统内核 兼容性较差

     

硬件辅助虚拟化

将实现虚拟化技术的部分功能硬件化

主要指Intel/AMD等CPU支持

     

硬件虚拟化------CPU要开启Virtualization

     

虚拟化是实现云计算的关键技术之一

Virtualization

针对物理设施的抽象化 逻辑化

从服务定义 底层对用户是透明的

Cloud Computer

会对资源的整合 模糊化

从用户感受 资源细节几乎可忽略

     

IaaS 基础架构即服务Infrastructure as aService

服务器    虚拟机    网络等设备资源

PaaS 平台即服务 Platform as aService

Web中间件    数据库等集成的系统平台

SaaS软件即服务 Software as aService

电子邮件 杀毒 网盘等软件服务

     

公有云

公开的,服务广大企业/组织/个人

私有云

韧性平台,服务于企业/组织/个人

开源OpenStack

     

KVM    Kernel-based Virtualization Machine

基于内核完全虚拟化解决方案

从红帽5.4版本开始,替代XEN产品

需要CPU支持虚拟化        Inter VT或AMD V生理器技术支持

支持LINUX UNIX WINDOWS客户机

     

Host OS    物理机/宿主机

运行KVM虚拟王先生平台的物理机操作系统

Guest OS    虚拟机/客户机

虚拟机里面运行的操作系统

     

安装包

[root@localhost ~]# yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Tools" "Virtualization Platform"

虚拟化

虚拟化客户端

虚拟化管理工具

虚拟化平台

     

查看CPU是否支持虚拟化

cat /proc/cpuinfo |grep --color vmx

     

启动服务

[root@localhost ~]# /etc/init.d/libvirtd start

     

打开虚拟机客户端工具

[root@localhost ~]# virt-manager

超微 硬件虚拟化 硬件虚拟化支持_数据库


我们可以先新一个虚拟机

选择名称和用什么介质安装

超微 硬件虚拟化 硬件虚拟化支持_超微 硬件虚拟化_02


安装操作系统,可忽略

超微 硬件虚拟化 硬件虚拟化支持_数据库_03


分配内存大小和CPU

超微 硬件虚拟化 硬件虚拟化支持_数据库_04


为虚拟机创建存储,可以自定义存储位置,如何默认磁盘文件会在/var/lib/libvirt/images/下

生成8G磁盘文件[root@localhost ~]# dd if=/dev/zero of=/kvm/disk.img bs=1G count=8

注:实验测试无所谓,服务器不要使用动态的,会影响性能

超微 硬件虚拟化 硬件虚拟化支持_运维_05


配置网络

超微 硬件虚拟化 硬件虚拟化支持_虚拟化_06


     

已经打开虚拟机了

超微 硬件虚拟化 硬件虚拟化支持_虚拟化_07


超微 硬件虚拟化 硬件虚拟化支持_虚拟化_08


     

网络类型分类

桥接    虚拟网卡和真实网卡绑定

NAT    

HOSTONLY

     

设置桥接

[root@localhost ~]# tail /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE='eth0' 
TYPE=Ethernet 
ONBOOT=yes 
BOOTPROTO=none 
BRIDGE=br0
[root@localhost ~]# tail /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE='br0' 
TYPE=Bridge 
ONBOOT=yes 
BOOTPROTO=none 
IPADDR=192.168.100.100 
NETMASK=255.255.255.0

          

[root@localhost ~]# /etc/init.d/NetworkManager stop 
[root@localhost ~]# chkconfig NetworkManager off 
[root@localhost ~]# /etc/init.d/network restart

启动PXE服务,安装系统

编辑文件更改布局,然后启动

超微 硬件虚拟化 硬件虚拟化支持_5g_09


     

创新隔离网络-----类似于VLAN

网卡名称

超微 硬件虚拟化 硬件虚拟化支持_虚拟化_10


定义网段

超微 硬件虚拟化 硬件虚拟化支持_运维_11


是否开启DHCP功能,根据需要

超微 硬件虚拟化 硬件虚拟化支持_运维_12


超微 硬件虚拟化 硬件虚拟化支持_5g_13


超微 硬件虚拟化 硬件虚拟化支持_数据库_14


超微 硬件虚拟化 硬件虚拟化支持_5g_15


超微 硬件虚拟化 硬件虚拟化支持_5g_16


重启网卡服务

[root@localhost ~]# ifconfig virbr1|head -2 
virbr1 Link encap:Ethernet HWaddr 52:54:00:01:D3:FA 
inet addr:192.168.101.1 Bcast:192.168.101.255 Mask:255.255.255.0

     

virsh命令

查看/创建/停止/关闭

支持交互

格式:virsh控制指令    虚拟机名称    参数

     

查看已开启的虚拟机

[root@localhost kvm]# virsh list 
Id Name State

----------------------------------------------------

8 kvm-centos running

查看所有的虚拟机    virsh list –all

控制虚拟机    virsh start|reboot|shutdown 名称

强制关机 virsh destroy 名称

查看虚拟机节点

[root@localhost kvm]# virsh nodeinfo 
CPU model: x86_64 
CPU(s): 2 
CPU frequency: 2394 MHz 
CPU socket(s): 1 
Core(s) per socket: 2 
Thread(s) per core: 1 
NUMA cell(s): 1 
Memory size: 1020328 KiB

查看虚拟机信息

[root@localhost kvm]# virsh dominfo kvm-centos 
Id: 8 
Name: kvm-centos 
UUID: 03c64ebc-c2ef-1ff1-c79b-d9ec1550154f 
OS Type: hvm 
State: running 
CPU(s): 2 
CPU time: 1709.3s 
Max memory: 512000 KiB 
Used memory: 512000 KiB 
Persistent: yes 
Autostart: disable 
Managed save: no 
Security model: selinux 
Security DOI: 0 
Security label: system_u:system_r:svirt_t:s0:c100,c459 (enforcing)

将虚拟机设为自启

[root@localhost ~]# virsh autostart kvm-centos 
Domain kvm-centos marked as autostarted

     

虚拟机定义文件XML

     

默认/etc/libvirt/qemu下

     

可以使用XML创新一个虚拟机

cd /etc/libvirt/qemu 
[root@localhost qemu]# cp kvm-centos.xml test.xml 
Name改为test 
UUID可以使用uuidgen 
[root@localhost qemu]# uuidgen 
d936b38d-056a-402c-9447-2c59792e5a5b

更改虚拟磁盘位置

可以用dd命令生成磁盘文件

<source file='/kvm/disk.img'/>

网卡MAC地址

     

更改完成后导入虚拟机

[root@localhost qemu]# virsh define test.xml 
Domain test defined from test.xml 
[root@localhost qemu]# virsh dumpxml test > /etc/libvirt/qemu/test1.xml 
virsh define test1 
[root@localhost qemu]# virsh undefine test1    只删除XML文件,磁盘文件没有删除 
Domain test1 has been undefined

     

直接访问虚拟机

[root@localhost ~]# virt-viewer kvm-centos

     

虚拟机的配置文件

默认位于/etc/libvirt/qemu/虚拟机名.xml

虚拟机的磁盘文件

默认位于/etc/libvirt/qemu/images/虚拟机名.img

或自定义磁盘文件位置

 

删除指定的虚拟机

#virsh undeine 虚拟机名称

 

#virsh destroy test1    先强制关机 
#virsh undefined test1    删除虚拟机 
#virsh list - -all    查看所有虚拟机,确认结果

 

虚拟机克隆

 

克隆虚拟机

#virt-clone

-o模板虚拟机名称

-n新虚拟机名称

-f指定新虚拟磁盘路径

 

#virsh destroy test1    将虚拟机关机 
#virt-clone –o test1 –n test2 –f /image/test2.img    克隆操作 
#virsh start test2    启动克隆虚拟机

 

virt-clone -r 已存在的虚拟机名 -n 新虚拟机名 -f /kvm/disk.img 指定新虚拟机磁盘文件位置

该工具做了3个步骤

将虚拟机名更改

磁盘镜像复制

更新了UUID,磁盘位置,网卡MAC地址

 

设置模板系统

标记为unconfigured,方便快照虚拟机初始化

在根目录下 touch /.unconfigured

下次开机会重新设置信息

 

导出模板XML描述文件

要修改虚拟机名称、UUID、磁盘路径、网卡MAC

#virsh dumpxml test1 > test2.xml

 

导入虚拟机

#virsh define test.xml

     

对比文件    diff 文件1     文件2

或者    vimdiff 文件1    文件2

     

LVM快照    COW,copy on write

实验

创建PV,VG,LV

parted /dev/sdb mkpart p ext4 0 1G 
partprobe /dev/sdb 
mkfs.ext4 /dev/sdb1 
parted /dev/sda p 
pvcreate /dev/sdb1 
vgcreate kz_vg /dev/sdb1 
lvcreate -L 20M -n kz_lv kz_vg 
mount /dev/kz_vg/kz_lv /kz/ 
touch a 
dd if=/dev/zero of=file bs=1M count=4 
[root@localhost kz]# pwd 
/kz 
[root@localhost kz]# ll -h 
total 4.1M 
-rw-r--r--. 1 root root 0 Aug 21 21:45 a 
-rw-r--r--. 1 root root 4.0M Aug 21 21:46 file 
drwx------. 2 root root 12K Aug 21 21:44 lost+found 
   
lvcreate -n kz1_lv -L 20M -s /dev/kz_vg/kz_lv 
mkdir /kz1 
mount /dev/kz_vg/kz1_lv /kz1 
[root@localhost kz1]# ll -h 
total 4.1M 
-rw-r--r--. 1 root root 0 Aug 21 21:45 a 
-rw-r--r--. 1 root root 4.0M Aug 21 21:46 file 
drwx------. 2 root root 12K Aug 21 21:44 lost+found 
   
[root@localhost kz1]# ll 
total 12304 
-rw-r--r--. 1 root root 0 Aug 21 21:45 a 
-rw-r--r--. 1 root root 0 Aug 21 21:54 b 
-rw-r--r--. 1 root root 4194304 Aug 21 21:46 file 
-rw-r--r--. 1 root root 8388608 Aug 21 21:55 file1 
drwx------. 2 root root 12288 Aug 21 21:44 lost+found 
   
[root@localhost kz1]# lvdisplay /dev/kz_vg/kz_lv 
--- Logical volume --- 
LV Path /dev/kz_vg/kz_lv 
LV Name kz_lv 
VG Name kz_vg 
LV UUID yrEx7d-1vTA-7MKS-t8em-rNBN-dm15-QlLjHg 
LV Write Access read/write 
LV Creation host, time localhost.localdomain, 2016-08-21 21:43:35 +0800 
LV snapshot status source of 
kz1_lv [active] 
LV Status available 
# open 1 
LV Size 20.00 MiB 
Current LE 5 
Segments 1 
Allocation inherit 
Read ahead sectors auto 
- currently set to 256 
Block device 253:0 
   
[root@localhost kz1]# lvdisplay /dev/kz_vg/kz1_lv 
--- Logical volume --- 
LV Path /dev/kz_vg/kz1_lv 
LV Name kz1_lv 
VG Name kz_vg 
LV UUID svWIaz-pJBh-tyoB-4n3x-AOpl-fTPX-6a1Erp 
LV Write Access read/write 
LV Creation host, time localhost.localdomain, 2016-08-21 21:49:37 +0800 
LV snapshot status active destination for kz_lv 
LV Status available 
# open 1 
LV Size 20.00 MiB 
Current LE 5 
COW-table size 20.00 MiB 
COW-table LE 5 
Allocated to snapshot 40.49%            如果超过大小,快照就损坏 
Snapshot chunk size 4.00 KiB 
Segments 1 
Allocation inherit 
Read ahead sectors auto 
- currently set to 256 
Block device 253:1 
   
[root@localhost kz1]# df -h|tail -1 
20M 14M 5.2M 72% /kz1 
   
   
[root@localhost /]# dd if=/dev/zero of=/kz1/file2 bs=1M count=10 
dd: writing `/kz1/file2': No space left on device 
7+0 records in 
6+0 records out 
6488064 bytes (6.5 MB) copied, 1.77108 s, 3.7 MB/s 
   
[root@localhost /]# df -h|tail -1 
20M 20M 0 100% /kz1 
   
[root@localhost /]# lvdisplay /dev/kz_vg/kz1_lv 
--- Logical volume --- 
LV Path /dev/kz_vg/kz1_lv 
LV Name kz1_lv 
VG Name kz_vg 
LV UUID svWIaz-pJBh-tyoB-4n3x-AOpl-fTPX-6a1Erp 
LV Write Access read/write 
LV Creation host, time localhost.localdomain, 2016-08-21 21:49:37 +0800 
LV snapshot status active destination for kz_lv 
LV Status available 
# open 1 
LV Size 20.00 MiB 
Current LE 5 
COW-table size 20.00 MiB 
COW-table LE 5 
Allocated to snapshot 71.91% 
Snapshot chunk size 4.00 KiB 
Segments 1 
Allocation inherit 
Read ahead sectors auto 
- currently set to 256 
Block device 253:1 
   
[root@localhost kz1]# ll -h 
total 19M 
-rw-r--r--. 1 root root 0 Aug 21 21:45 a 
-rw-r--r--. 1 root root 0 Aug 21 21:54 b 
-rw-r--r--. 1 root root 4.0M Aug 21 21:46 file 
-rw-r--r--. 1 root root 8.0M Aug 21 21:55 file1 
-rw-r--r--. 1 root root 6.2M Aug 21 21:59 file2 
drwx------. 2 root root 12K Aug 21 21:44 lost+found 
   
pvcreate /dev/sdb2 
vgcreate kvm-vg 
vgcreate kvm-vg /dev/sdb2 
lvcreate -n kvm-lv -L 5G 
lvcreate -n kvm-lv -L 5G kvm-vg 
mount /dev/kvm-vg/kvm-lv /kvm 
mkfs.ext4 /dev/kvm-vg/kvm-lv 
mount /dev/kvm-vg/kvm-lv /kvm 
mount 
mv /a.img /kvm/ 
lvcreate -L 5G -n kvm-new -s /dev/kvm-vg/kvm-lv 
mount /dev/kvm-vg/kvm-new /kvm2 
   
使用命令安装虚拟机 
# virt-install --name name1 --vcpus=2 --ram=500 --disk path=/kvm/disk.img --network =network1 –pxe