虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。
阿里云 kvm开源
azure
vmware ESXI商业软件
没有虚拟化之前:
计算机的硬件配置越来越高
512G 内存,4路 8核16线程 ,12* PCI-E 1T的SSD;
ntp服务,安装多个mysql,安装多个tomcat,安装…
linux开源的,很多软件都有依赖包openssl nginx
充分利用资源,软件运行环境的隔离,只有虚拟化才行实现。
场景1:同一台物理机运行多个php版本 php5.3(openssl,gd) php5.5 php7.2
场景2:机房的迁移,解决了硬件和系统的依赖
场景3:openstack环境,软件发布方式
场景4:开发环境和测试环境,使用虚拟化
只靠一台物理服务器,30台虚拟机
产品 – 开发 – 运维 – 测试
so结尾,linux 库文件
场景5:业务的快速部署
从头安装系统,安装服务,配置
克隆虚拟机,改ip,
虚拟化:提高了资源的利用率,各个服务的安全性隔离,解决了系统和硬件之间的依赖
yum install libvirt virt-install qemu-kvm -y
KVM: Kernel-based Virtual Machine
libvirt 作用: 虚拟机的管理软件
libvirt: kvm,xen,qemu,lxc....
virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差! redhat 5.5 xen
KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6 kvm 性能较好,兼容较好
需要用到 TightVNC或者VNC Viewer 4.exe
宿主机
vnc:远程的桌面管理工具
向日葵
systemctl start libvirtd.service
systemctl status libvirtd.service
10.0.0.11 宿主机
建议虚拟机内存不要低于1024M,否则安装系统特别慢!
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
vnc-service:5900
vnc:10.0.0.11:5900
–virt-type kvm 虚拟化的类型(qemu)
–os-type=linux 系统类型
–os-variant rhel7 系统版本
–name centos7 虚拟机的名字
–memory 1024 虚拟机的内存
–vcpus 1 虚拟cpu的核数
–disk /opt/centos2.raw,format=raw,size=10
–cdrom /opt/CentOS-7-x86_64-DVD-1708.iso
–network network=default 使用默认NAT的网络
–graphics vnc,listen=0.0.0.0
–noautoconsole
raw:10G 不支持做快照,性能好
qcow2: 支持快照
列表 list(--all)
开机 start
关机 shutdown
拔电源关机 destroy
导出配置 dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
删除 undefine 推荐:先destroy,在undefine
导入配置 define
修改配置 edit(自带语法检查)
重命名 domrename (低版本不支持)
挂起 suspend
恢复 resume
查询vnc端口号 vncdisplay
kvm运行业务程序
开机启动autostart,前提:systemctl enable libvirtd;
取消开机启动 autostart --disable
centos7的kvm虚拟机:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用2G
qcow2: cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G
qcow
qemu-img info test.qcow2
创建一块qcow2格式的虚拟硬盘:qemu-img create -f qcow2 test.qcow2 2G
raw转qcow2:qemu-img convert -f raw -O qcow2 oldboy.raw oldboy.qcow2
convert [-f fmt] [-O output_fmt] filename output_filename
virsh edit web01:
virsh destroy web01
virsh start web01
创建快照 virsh snapshot-create centos7
查看快照 virsh snapshot-list centos7
还原快照 virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照 virsh snapshot-delete centos7 --snapshotname 1516636570
raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
virt-clone --auto-clone -o web01 -n web02 (完整克隆)
a:生成虚拟机磁盘文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2
b:生成虚拟机的配置文件
49-web03
8e505e25-5175-46ab-a9f6-feaa096daaa4
c:导入虚拟机并进行启动测试
a.基于源磁盘文件,创建链接磁盘文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2
后置备
b:生成虚拟机的配置文件
c:导入虚拟机并进行启动测试
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
默认的虚拟机网络是NAT模式,网段192.168.122.0/24
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
1:创建桥接网卡
virsh iface-bridge eth0 br0
取消桥接网卡
virsh iface-unbridge br0
2:修改xml
virsh edit centos7
在宿主机上,重启虚拟机生效
3:测试虚拟机网络
1.创建一块硬盘
qemu-img create -f qcow2 add01.qcow2 5G
2.添加硬盘
临时
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2
永久
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2 --config
删除硬盘
virsh detach-disk centos7 vdb
在kvm虚拟机,卸载
virsh detach-disk centos7 vdb
qemu-img resize /data/centos7-add01.qcow2 +5G
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
在虚拟机中:
xfs_growfs /dev/vdb
根分区扩容:
1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
qemu-img resize oldboy.qcow2 +10G
2)虚拟机中fdisk重新分区
fdisk /dev/vda
3)重启之后,执行
xfs_growfs /dev/vda1,
如果虚拟机磁盘文件系统是
ext4:resize2fs /dev/vda1
virsh attach-interface web04 --type bridge --source br0 --model virtio
detach-interface web04 --type bridge --mac 52:54:00:35:d3:71
创建的时候使用此参数 --memory 512,maxmemory=2048
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
setmem web04 1024M --live
永久增大内存
setmem web04 1024M --config
创建的时候使用此参数 --vcpus 1,maxvcpus=10
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加cpu核数
setvcpus web04 4 --live
永久添加cpu核数
setvcpus web04 4 --config
冷迁移kvm虚拟机:配置文件,磁盘文件
热迁移kvm虚拟机:配置文件,nfs共享
操作步骤:
一:在kvm01和kvm02上安装kvm和nfs,配置桥接网卡
yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y
systemctl start libvirtd.service
virsh iface-bridge eth0 br0
二:在nfs01上安装配置nfs
yum install nfs-utils -y
mkdir /data
vim /etc/exports
/data 10.0.0.0/24(rw,async,no_root_squash,no_all_squash)
systemctl restart rpcbind
systemctl restart nfs
三:kvm01和kvm02挂载共享目录/opt
mount -t nfs 10.0.0.31:/data /opt
四:安装一台基于桥接模式的虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热迁移的命令:
virsh migrate --live --verbose oldboy qemu+ssh://10.0.0.12/system --unsafe
将宿主机10.0.0.11上的kvm虚拟机oldboy迁移到10.0.0.12
1):
yum groupinstall “GNOME Desktop” -y
yum install openssh-askpass -y
yum install tigervnc-server -y
vncpasswd
vncserver :1
vncserver -kill :1
2):kvm虚拟机热迁移
1:两边的环境(桥接网卡)
2:实现共享存储(nfs)
3:虚拟机桥接网络
4:在线热迁移
virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test -of qcow2
kvm宿主机 2000台
查看每一个宿主机有多少台虚拟机?
查看每一个宿主机还剩多少资源?
查看每一台宿主机,每一个虚拟机的ip地址?
kvm管理平台,数据库工具
信息:宿主机,总配置,剩余的总配置
虚拟机的信息,配置信息,ip地址,操作系统
带计费功能的kvm管理平台,openstack ceilometer计费
自动化管理kvm宿主机,云主机定制化操作
部署openstack
克隆一台openstack模板机:4G内存,开启虚拟化,挂载centos7.4的光盘
上传脚本openstack-mitaka-autoinstall.sh到/root目录
上传镜像:cirros-0.3.4-x86_64-disk.img到/root目录
上传配置文件:local_settings到/root目录
上传openstack_rpm.tar.gz到/opt下,并解压
sh /root/openstack-mitaka-autoinstall.sh
大概10-30分钟左右
访问http://10.0.0.11/dashboard
域:default
用户名:admin
密码:ADMIN_PASS
注意: 在windows系统上修改hosts解析(10.0.0.11 controller)
添加node节点:
修改ip地址
hostnamectl set-hostname compute1
重新登录让新主机名生效
cd /opt/
rsync -avz 10.0.0.11:/opt/repo .
上传脚本 openstack_node_autoinstall.sh
sh openstack_node_autoinstall.sh
openstack controller主控制节点,node节点, kvm宿主机
node节点, kvm宿主机
node节点, kvm宿主机
node节点, kvm宿主机
node节点, kvm宿主机