虚拟化的几个分类和工作原理:
平台虚拟化:X86 cpu 内存 磁盘为资源抽象
操作系统虚拟化:docker
hypervisor基于宿主机和客户机之间、VMM
1.半虚拟化Xen,对CPU硬件,内核不是CPU,CPU是硬件,内核是软件,通过修改内核而不是软件,通过修改宿主机的内核而影响,监视交给VMM,翻译官交给api
2.软件全虚拟化,KVM内核虚拟机(CPU支持VT,加载kvm模块modprobe kvm),需要修改CPU硬件,需要设置为支持VT技术,lscpu,grep来观察是否开启,全虚拟化不能休息,因为VMM要monitor监视和做翻译官
3.硬件辅助全虚拟化、QEMU
libvirtb是QEMU的守护进程
在QEMU里装虚拟机的方法有:virt-view是看的不属于方法
1.virt-manager图形化界面操作
2.virt-install代码操作--vcpus
virsh list--all查看所有虚拟机包括关机的
virsh支持交互式操作,直接回车,查看帮助的话用--help
virsh net-熟练使用tab看网卡,default相当于一个名字,虚拟网络里面有,点红点相当于把网线拔了,状态不活跃是说明没有启动,网线的按钮没有开就开启不了QEMU的虚拟机
--diskpath=/var/lib/libvirt/images/uplook.img,size=8,format=qcow2:raw不支持快照,qcow2支持快照,所以主流是qcow2格式,转换格式可以无损数据
--location=ftp://172.16.8.100/rhel6.4镜像在谁上面就是谁,使用ftp共享
--extra-args="ks=ftp://172.16.8.100/rhel6.4.ks"通常和上面的一起用
--bridge=virbr0(网卡名字) 等价于 --networknetwork=default(默认是NAT)
virt-install--help | grep network
不能混用 --bridge 和 --network 参数
--graphicsvnc,listen=0.0.0.0,port=5920,password=123宿主机的端口和密码
--noautoconsole不自动输出
速度快、占内存小
virsh支持交互式和非交互式
非交互式不能补全tab
基本管理命令:
假如没有图形也没有virt-manager
virsh list--all
virsh start 域
virsh list查看在线的机器
virt-viewer 域 这个是打开指定的终端控制台
没有网络也没有图形化界面怎么进?用virt-viewer 域
如何停掉一个机器?virsh shutdown 域 或者进入交互式:virsh回车
list
shutdown 域 是关机
有延迟怎么直接关机?不是poweroff而是destroy 域
显示被删除是指在活动列表里删除
start 域 是开机
reboot 域 是重启
正常关机会卸载文件系统,关闭服务,不存盘会导致数据丢失,它会自动存储,而强制关机则不会
一个想法:宿主机重启的话,所有QEMU的所有虚拟机都会挂掉
virsh回车
autostart就是和宿主机共存亡,同步
autostart 域 标记为自动启动,就是宿主机重启后QEMU里面的虚拟机会自动开机
一个完整的虚拟机涉及到哪些文件?
cd/etc/libvirt/qemu/autostart/
ls这个里面都是做过autostart的,可删,就不用autostart了
域的类型是kvm
KB是1000,KiB是1024为单位
架构的平台arch=’x86_64’
<boot dev=’hd’/> IDE都是hd老磁盘接口;virtio都是vda新磁盘接口
utc时钟
<devices>设备
硬件的块设备挂过来
类型是文件,设备是磁盘,说明是个假的
驱动名称是qemu,类型是qcow2
装机的路径开机启动的路径,/var/lib/libvirt/images/centos7.qcow2
磁盘vda是根分区,bus是总线,virtio是半虚拟化驱动,KVM是硬件辅助全虚拟化,怎么到半虚拟化来了?因为可以混合使用,有半虚拟化的效果,是一种优化
下面还有一个用文件山寨的磁盘cdrom,bus总线是ide,磁盘hda老磁盘
不自动启动的在
cd/etc/libvirt/qemu/
ls这个里面的都是全部的虚拟机
通过配置文件一键生成虚拟机,前提是要使用一次virt-install后有一个模板
一个虚拟机需要的配置:
名称:
内存:
CPU:
VNC:
磁盘:驱动 qemu file山寨(xxx.image) vda新磁盘接口
CDROM:qemu file山寨 hda老磁盘接口
NETWORK(用controller是网卡的) default
vim 域
时钟、磁盘、源文件
宿主机 虚拟机centos7.0
交换机default 默认ip是192.168.122.0/24
(vnet0管理mac)
(virbr0是网关,相当于网桥)
创建虚拟机的时候有网卡选项,这个<macaddress='52:54:00:2f:ff:4c'/>mac地址是宿主机的vnet0的mac地址
graphics那一块:port=-1是指端口随机分配,listen=’0.0.0.0’宿主机的所有网卡
有一个mac,但不知道具体是多少
cd/etc/libvirt/qemu/networks
这个是网络目录,
ls
default网络池,dhcp池,范围range start=’’ end=’’:
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
网络自启动autostart
virsh回车
net-autostart 网络名字(比如default)
如果有问题的话可以用virsh net-edit default(可以省略)
forward标签里面 模式mode为nat模式
网桥的名字叫virbr0 stp=’on’是什么? delay=’0’是什么?
stp开启生成树,阻塞接口,防止二层交换机出现了环路[stp]
一根网线两头都插在交换机的屁股上,出现环路,出现广播风暴导致网络瘫痪
存储、虚拟化、业务、网络工程师、
cd/etc/libvirt/qemu/
vim 域
source file 镜像绝对路径要真实存在
是在
cd/etc/libvirt/storage
ls这个是存储池
vimdefault.xml
pool nss本地网络路口/dir本地目录系统、
下面是path是/var/lib/libvirt/images/这个是镜像文件存放的位置
vim iso.xml光驱镜像的存储池
下面的path是/iso自己定义的光驱镜像位置
ll /var/lib/libvirt/qemu下面是如何仿真的
ll/var/lib/libvirt/
总共要修改的配置文件有以下5个:
/etc/libvirt/qemu/autostart/域.xml
/etc/libvirt/qemu/域.xml 全局配置
/etc/libvirt/qemu/networks/default.xml 网络
/var/lib/libvirt/images/域.qcow2 映像
/etc/libvirt/storage/default.xml存储池
virsh 回车
editcentos7.0
exit
改配置文件找位置好麻烦:
virsh edit 域 不要加后缀 一回车就到了
virshnet-edit
virsh -cqemu:///system list --all用命令连接远程主机KVM 并进行操作
virsh -cqemu+ssh://root@172.16.8.100/system
出现用户@@@@@@符号要删除
rm -rf /root/.ssh/*
virsh domid 域 这个是通过域名找id
virshdomname 域 这个是通过id找域名
virshdomuuid 域 通过id或域找uuid
virshdominfo 域 通过名字找详细信息
里面的是Autostart: disable是否和宿主机共存亡(是否开机自动启动)
virshdomstate 域 通过域查看状态是否开机
virshsuspend(抑制) 域 通过域来暂停那个域,暂停之后就定住了
list能看到开机和暂停的虚拟机
virsh resume域 通过域来继续那个域
virsh save 域 lnmp 相当于挂起,使用了之后会关机,手动开机的时候不会自动加载之前存档的状态,需要使用restore来加载之前的存档,挂起的意思就是存档
virshrestore lnmp
du -h lnmp
用命令行删虚拟机:
virshdestroy 域 强制关机
virshundefine 域 解绑,不去识别那个配置文件了
rm -rf/var/lib/libvirt/images/node1.img
用命令行克隆虚拟机:
virtshutdown 域 先关机
virt-clone-o 域(母体) -n 新域(孩子) -f/var/lib/libvirt/images/新域.qcow2
80G是假的
du -h/var/lib/libvirt/images/新域.qcow2
发现比母体的大小还要大得多
virsh start 新域
virsh-viewer新域
yum provides*/virt-edit
yum install-y libguestfs-tools-c-1.32.7-3.el7.centos.x86_64
virt-edit-d(domain) 域 /etc/passwd直接写文件名 关机的虚拟机才能看
磁盘和网卡选择半虚拟化virtio,性能最好
显示协议VNC-VNC服务器-地址所有接口-端口自动-键映射:en-us
yum install-y virt-top查看进程
virt-top显示状态、进程、CPU、内存
第一行是进程概况统计的描述
宿主机上装
ss -tanp |grep :59查看QEMU里面虚拟机的端口,只有开机的才看得到
vnc客户端老虎vnc
yum list |grep vnc
yum install-y tigervnc
左上角图形菜单-互联网-打开
宿主机的ip:5901(想要连入QEMU里哪一个虚拟机端口)
或者用命令打开:
vncviewer192.168.1.250:5901不同的端口对应不同的虚拟机
它是怎么实现的?
virsh edit 域
找vnc类型,端口-1,自动端口yes
黄老师实验:
先关机,virsh edit 域,改端口-1为6000,自动端口不启用no
virsh start 域
netstat-tanp | grepp 6000等一下就出现了
vncviewer 192.168.1.250:6000
连接QEMU里面虚拟机的方法:
virt-viewer 域 前提要有图形界面
vncviewer 本机ip:6000
ssh QEMU里虚拟机的ip
我在家里可以连到公司里的方法上面的后两种
[ssh很卡]
ssh 到QEMU里的虚拟机非常卡
vim/etc/ssh/sshd_config在要连接对象的那个机子里
useDNS yse取消注释并改为no
systemctlrestsart
virt-what能够知道自己是在哪一个虚拟机上(VMWare还是KVM还是Xen)
既没ip又没有图形桌面,可以直接连接的方法
vim /etc/grub2.cfg旧的不好改
QEMU里虚拟机里面写vim /etc/default/grub倒数第二行的结尾 空一格console=ttyS0”
grub2-mkconfig--help
grub2-mkconfig-o /etc/grub2.cfg敲完这个新的才会生效,将新的导入到旧的里面去并生效
重启QEMU里面的虚拟机reboot
宿主机:
virshconsole 域 回车 可以进入QEMU里面,不需要ip和图形化
回车
退出的话用ctrl+]
只读系统是因为你设置了磁盘的只读,需要去QEMU里面的设置里面去掉磁盘的只读
宿主机:
virsh edit 域
console那一部分
全虚拟化
半虚拟化
CPU是硬件无法改
把磁盘变为半虚拟化驱动virtio,把网卡变为半虚拟化驱动virtio
没图形化界面就在配置文件里面修改
kmv默认磁盘网络默认支持半虚拟化
kvm里面也能创建windows系统,但是默认不支持半虚拟化,需要让我们对它配置,怎么配置:
下载支持半虚拟化驱动https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
中午宋子奇试讲:
cd /dev/
ls
ls/dev/sdb/sdb1是U盘
hd:/dev/sdb1
ctrl+x执行
晚上试讲:
两台虚拟机热迁移,第三台机子做nfs挂载。
首先第三台机子做nfs挂载,在第一台和第二台创建存储池,然后第一台ssh他们得到认证的权限,然后第一台创建存储卷,新建虚拟机,注意管理的指向那个卷