LInux基础命令(十二)虚拟机
一、概念
虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,是对真实环境的虚拟化!
虚拟机种类
(1)系统虚拟机,例如:VMware(微软)、KVM(小红帽)
(2)程序虚拟机,例如:Java虚拟机(JVM)
(3)操作系统层虚拟化,例如:Docker
总结:它们应对的场景不同,能解决的问题不同!
虚拟机出现的原因
真实的机房,需要保持室内温度在16度左右(40度左右报警),机器的运行需要散热,所以就需要制冷,能源损耗问题
虚拟化的好处:缩减服务器的数量,节省能源,低碳!
二、安装虚拟化环境
1)查看电脑硬件是否支持虚拟化
cat /proc/cpuinfo |grep --color -E "vmx|svm"
2)如果支持,则安装虚拟化所必须的软件
yum install qemu-kvm qemu-img
##安装虚拟化的软件包
yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client
##管理虚拟化的套件!
3)用virsh命令来控制虚拟机
• virsh list -->查看已经开启的虚拟机
• virsh destroy server -->强制关闭
• virsh list --all -->查看所有的虚拟机
• virsh start server -->开启虚拟机
• virsh shutdown server -->正常关闭
################################
virsh destroy server -->删除虚拟机,特点:
virsh undefine server -->解除标记
三、安装虚拟机
1)硬件要求
硬盘
328M -->无图形
6G -->有图形(至少)
10G -->默认
8G -->自定义!
内存:4G左右
swap分区的作用:当内存使用超过80%的部分,将超过80%的地方放到swap,虽然慢,单还能使用!
2)图形界面的安装
核心过程
(1)虚拟机的四种安装方式,选择第一种的dvd的iso镜像安装!
(2)寻找镜像源、安装指定内存大小和cpu的核数、虚拟机的大小、虚拟机的名字
(3)虚拟机的安装界面
3.1)安装过程中使用的语言为英语,时区选择中国上海
3.2)系统支持的语言(英文、中文)
3.3)安装源默认是本地,安装方式是GUI的,会分析二者的依赖关系(成功黄色消失)
3.4)磁盘分区自定义,然后就finish开始安装
(4)安装出现Complete的标志,表明安装成功,然后REboot
(5)同意红帽的协议,选择自定义普通用户及其密码,完成安装
注意:安装完成之后,为了保持性能,关闭虚拟机,硬盘设置的类型为virto类型(默认是IDE)并且网络源选择桥接!
3)模拟虚拟机的恢复
需求:想copy一下别人的虚拟机来用!
3.1)图形安装
核心文件
# /etc/libvirt/qemu/*.xml -->前端控制文件默认的位置
# /var/lib/libvirt/images/*.qcow2 -->虚拟机硬盘文件
说明:*表示的是虚拟机的名字,注意文件所在的目录!
需求:改变虚拟机的参数,通过前端控制文件,注意重启服务!
systemctl restart libvirtd.service
特点:当前所有的连接都会关闭!
copy虚拟机的原理:利用虚拟机硬盘文件(qcow2为后缀名)来创建虚拟机!
此种方式图形安装虚拟机的等价方式!
注意:这种方式没有再指定虚拟机的硬盘的大小!
3.2)命令行的安装
##核心命令
virsh create wzj.xml
##默认会从从当前路径下寻找此xml文件,如果找不到则报错,也可以用全路径的名字!
##虚拟机的硬盘文件默认已经存在于/var/lib/libvirt/images/目录下
##后续:也可以改变此xml中硬盘配置文件的路径(source),自定义硬盘配置文件的路径,但要注意重启服务!
##提示:不建议修改其路径!
##特点:用虚拟机的硬件信息文本临时创建一个虚拟机, 此方法为方便开发调试等临时需求,不会持久化,虚拟机关机后就消失了,不推荐生产系统使用
##测试:# virt-manger -->force虚拟机后,没有了此虚拟机列表了!
xml:扩展性标记语言,语法要求严格(必须闭合)!
##(1)永久创建一个虚拟机-->根据前端控制文件来创建的!
virsh define hello.xml(已存在的)
##说明:xxx为xml文件所在的路径及文件名称,在当前目录下则不写路径!
##(2)删除虚拟机
virsh undefine hello
说明:注意参数是虚拟机的名字,而不是hello.xml
特点:注意只是删除了xml文件(前端控制文件),并没有删除虚拟机的硬件配置文件!
注意:若要永久删除虚拟机,还得删除虚拟机的硬件配置文件!
明确1:关闭了的虚拟机,只是不在运行状态而已,通过virsh undefine xxx就能从virsh列表里面(virsh list查看当前系统中的虚拟机列表)将其删除
明确2:undefine命令不会删除虚拟机的硬盘文件,而且运行状态的虚拟机是不能删除的!
需求:虚拟机管理器删除虚拟机然后恢复!
4)快照
4.1)快照的引入
虚拟机比较珍贵,弄坏了就没有了,属于根!
4.2)快照的原理
(1)保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机能够恢复到该时间点
(2)如果对某个虚拟机创建了多个快照,那么就可以有多个可恢复的时间点
4.3)快照的好处
对快照的修改,并不影响源文件,可以随意做编辑!
4.4)命令行创建快照的方式
1)qemu-img create -f qcow2 -b /var/lib/libvirt/images/wzj.qcow2 /var/lib/libvirt/images/node.qcow2
说明:创建快照,-f 指定快照的类型(qcow2) ,-b 指定快照来源的虚拟机 ,后跟参数照成什么样子
注意:只有一个文件,因为其前端控制文件是源前端控制文件!
(2)du -sh /var/lib/libvirt/images/node.qcow2 -->查看快照的大小-->大约124K
(3)file node.qcow2 -->查看快照的真正来源!
(4)创建虚拟机-->选择快照的方式第四个导入快照-->选中快照的文件
补充:虚拟机reset的原理!
5)自动化安装
5.1)虚拟机的脚本安装
#!/bin/bash
virt-install \
--cdrom /home/kiosk/Downloads/rhel-server-7.3-x86_64-dvd.iso \
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$1.qcow2,bus=virtio,size=8 \
--name $1 \
--network model=virtio,bridge=br0 &> /dev/null &
# 安装源头!
# 内存大小
# cpu的核数
# 虚拟机硬盘的位置,总线的类型,虚拟机的硬盘的容量-->注意:多个参数以逗号隔开
# 虚拟机的名字
# 网络:网卡的类型和联网的方式(桥接)
###############需求:自定义虚拟机的名字,并且不显示信息##############
5.2)虚拟机的快照安装
#!/bin/bash
#(1)创建快照
qemu-img create -f qcow2 -b \
/var/lib/libvirt/images/$1.qcow2 \
/var/lib/libvirt/images/$2.qcow2 \ &> /dev/null
##执行脚本携带参数
5.3)创建快照并用快照安装虚拟机的脚本方式!
#!/bin/bash
#(1)创建快照
qemu-img create -f qcow2 -b \
/var/lib/libvirt/images/$1.qcow2 \
/var/lib/libvirt/images/$2.qcow2 \ &> /dev/null
#(2)利用快照安装虚拟机,要导入(import)
virt-install \
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
--name $2 \
--import \
--network model=virto,bridge=br0 &> /dev/null &
##注意:默认快照命令行安装会占用当前的命令行,所以要打入后台!
三、虚拟机的另外两种安装方式
PXE+kickstart网络安装CentOS7.4系统及过程中各种报错