云计算不等于虚拟化,两者并不能相互比较
云计算是一种资源和使用交互的方式
虚拟化是一种具体的技术
云计算要依赖虚拟化技术来实现的一种通过网络访问获取资源,流量,交付的使用模式(例如:弹性计算)
虚拟化相当于实干家,而云计算是思想家
kvm 需要硬件支持,所以需要开启虚拟化支持
1、硬件设备直接在BIOS设置开启CPU虚拟化
2、个人电脑同样进入BIOS开启虚拟化支持
3、VM需要找到对应虚拟化开启对应的VT-EPT虚拟化技术
[root@kvm-node1 ~]# egrep '(vmx|svm)' /proc/cpuinfo
安装kvm 虚拟化工具
1、 qeum 虚拟化软件,可以虚拟不同的cpu,以及模拟网卡、声卡、PCI 设备等
2、 libvirt 用于管理kvm的工具
3、 virt-install 命令行安装虚拟工具
4、 virt-manager 图形化管理虚拟工具
5、 openssh-askpass 远程连接kvm主机
[root@kvm-node2 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install openssh-askpass
[root@kvm-node2 ~]# lsmod|grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
启动libvirt 管理 kvm 工具
[root@kvm-node2 ~]# systemctl start libvirtd [root@kvm-node2 ~]# systemctl enable libvirtd
注意:启动后会增加一块virbr0 网络
kvm 会给虚拟机分配NAT模式网络,但是在生产环境下强烈推荐用网桥模式
//配置kvm虚拟机使用的桥接模式网络,添加br0网卡
[root@kvm-node2 ~]# brctl addbr br0
将ens33加入网桥,使用桥接模式,给br设置ip,添加路由、网关,关闭防火墙
[root@kvm-node2 ~]# brctl addif br0 ens33 && ip addr del dev ens33 192.168.169.20/24 && ifconfig br0 192.168.169.20/24 up && route add default gw 192.168.169.2 #注意修改IP与网关
查看br0网卡,绑定在ens33上
[root@kvm-node2 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29d4bcce no ens33 //br0 相当于我的连接,ens33 是我的真实设备
virbr0 8000.525400d97d49 yes virbr0-nic
创建kvm 虚拟机
在创建虚拟机之前,我们需要添加一块磁盘来存放我们的虚拟机
VM->关机->设置->添加磁盘
[root@kvm-node2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 6G 0 part /boot
└─sda2 8:2 0 14G 0 part
├─centos-root 253:0 0 8G 0 lvm /
└─centos-swap 253:1 0 6G 0 lvm [SWAP]
sdb 8:16 0 200G 0 disk //添加这块磁盘
sr0 11:0 1 4.2G 0 rom
直接使用整块磁盘
[root@kvm-node2 ~]# mkdir -p /data
[root@kvm-node2 ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=13107200 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=52428800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=25600, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@kvm-node2 ~]# mount /dev/sdb /data/
加入开机自启动
[root@kvm-node2 ~]# vim /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=5a174cc4-bb1d-4178-874e-38ad81b37fbc /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID="846ca2b8-7d2f-4cf9-86d7-c7a18964b421" /data xfs defaults 0 0
~
挂载系统光盘,简历ISO镜像文件
[root@kvm-node2 ~]# dd if=/dev/cdrom of=/data/centos7u4_x86_64.iso
8830976+0 records in
8830976+0 records out
4521459712 bytes (4.5 GB) copied, 137.427 s, 32.9 MB/s
//这里也可以用xftp 、rz 把镜像传上来
创建虚拟机磁盘
[root@kvm-node2 ~]# qemu-img create -f qcow2 /data/centos7u4-node2.qcow2 10G
Formatting '/data/centos7u4-node2.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm-node2 ~]# ls /data/
centos7u4-node2.qcow2 centos7u4_x86_64.iso
使用qcow2 创建的10G,实则没有占用10G,且支持快照
[root@kvm-node2 ~]# qemu-img info /data/centos7u4-node2.qcow2
image: /data/centos7u4-node2.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K //实际只占196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
如果使用 raw 分配多少空间则占用多少空间,且不支持快照
优点:速度快、性能好
[root@kvm-node2 ~]# qemu-img create -f raw /data/centos7u4-node2.raw 1G
Formatting '/data/centos7u4-node2.raw', fmt=raw size=1073741824
[root@kvm-node2 ~]# qemu-img info /data/centos7u4-node2.raw
image: /data/centos7u4-node2.raw
file format: raw
virtual size: 1.0G (1073741824 bytes) //实际占用1G
disk size: 0
创建虚拟机实例
[root@kvm-node2 ~]# virt-install --name centos7u4-node2 \
--virt-type kvm \
--ram 1024 \
--cdrom=/data/centos7u4_x86_64.iso \
--disk path=/data/centos7u4-node2.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsoleStarting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
在服务器上查看连接的状态
[root@kvm-node2 ~]# virsh list --all
Id Name State
----------------------------------------------------
1 centos7u4-node2 running
在vnc 图形界面安装完成重启后,虚拟机会关闭掉线
[root@kvm-node2 ~]# virsh list --all
Id Name State
----------------------------------------------------
- centos7u4-node2 shut off
重新启动
[root@kvm-node2 ~]# virsh start centos7u4-node2
Domain centos7u4-node2 started[root@kvm-node2 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 centos7u4-node2 running
//注意 br0 这块网卡重启就会消失,重启时网卡必须存在
可以直接用vnc连接,也可以直接ssh 连接
[root@localhost ~]# ip a
1: lo:mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:85:69:9c brd ff:ff:ff:ff:ff:ff
inet 192.168.169.222/24 brd 192.168.169.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::8bda:797e:f22a:ff50/64 scope link
valid_lft forever preferred_lft forever
管理KVM虚拟机
//虚拟机随着系统启动
[root@kvm-node2 ~]# virsh autostart centos7u4-node2
Domain centos7u4-node2 marked as autostarted
//关闭虚拟机随系统启动
[root@kvm-node2 ~]# virsh autostart -disable centos7u4-node2
//查看所有KVM虚拟机
[root@kvm-node2 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 centos7u4-node2 running
启动KVM虚拟机
[root@kvm-node2 ~]# virsh start centos7u4-node2
Domain centos7u4-node2 started
关闭虚拟机
[root@kvm-node2 ~]# virsh shutdown centos7u4-node2
Domain centos7u4-node2 is being shutdown
强制关闭KVM虚拟机
[root@kvm-node2 ~]# virsh destroy centos7u4-node2
Domain centos7u4-node2 destroyed
挂起KVM虚拟机
[root@kvm-node2 ~]# virsh suspend centos7u4-node2
Domain centos7u4-node2 suspended
恢复挂起的虚拟机
[root@kvm-node2 ~]# virsh resume centos7u4-node2
Domain centos7u4-node2 resumed
编辑KVM虚拟机的xml配置文件
[root@kvm-node2 ~]# virsh edit centos7u4-node2
Domain centos7u4-node2 XML configuration not changed.
删除创建的KVM虚拟机
[root@kvm-node2 ~]# virsh undefine centos7u4-node2
//切记:不要修改这个配置文件,否则虚拟机损坏
[root@kvm-node2 ~]# vim /etc/libvirt/qemu/centos7u4-node2.xml
1.查看磁盘raw格式需要转换成qcow2
[root@kvm-node2 ~]# qemu-img info /data/centos7u4-node2.raw
必须关闭虚拟机进行磁盘转换
[root@kvm-node2 ~]# virsh shutdown centos7u4-node2
[root@kvm-node2 ~]# qemu-img convert -f raw /data/centos7u4-node2.raw -o qcow2 /data/centos7u4-node1.qcow2
//convert 将磁盘文件转换为指定格式的文件
//-f 指定需要转换文件的文件格式
//-o 指定要转换的目标格式
//转换完成后,将新产生一个目标映像文件,源文件保存
修改KVM虚拟机配置文件
[root@kvm-node2 ~]# virsh edit centos7u4-node2
拍摄快照
[root@kvm-node2 ~]# virsh snapshot-create centos7u4-node2
已生成域快照 1538082768
[root@kvm-node2 ~]# virsh snapshot-list centos7u4-node2
名称 生成时间 状态
------------------------------------------------------------
1538082768 2018-09-28 05:12:48 +0800 shutoff
//生成的快照会以数字编排
检查当前虚拟机最新快照版本
[root@kvm-node2 ~]# virsh snapshot-current centos7u4-node2|less
1538082768
shutoff
1538082768
.....此处省略
快照xml文件存放路径
[root@kvm-node2 ~]# ls /var/lib/libvirt/qemu/snapshot/centos7u4-node2/
1538082768.xml
恢复快照
[root@kvm-node2 ~]# virsh snapshot-revert centos7u4-node2 1538082768