=============================虚拟化============================
vmware企业版
VMware Workstation Pro 桌面版
kvm(企业级)
桌面版虚拟化:
app
guest os 客户机
hypervisor(vmm)
os 宿主机
硬件
企业级虚拟化:
app
guest os 客户机
os-hypervisor(vmm) 宿主机
硬件
查看系统?
[root@localhost ~]# lsb_release -a (redhat-lsb-core)
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
===============================安装kvm=======================
查看系统是否支持虚拟化?
grep -E '(vmx|svm)' /proc/cpuinfo
安装软件:
*最小安装的CentOS安装一些最基本的包
yum install epel-release net-tools vim unzip zip wget ftp -y
*centos6
yum groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y
*centos7
yum install *qemu* *virt* *kvm* -y
启动服务:
/etc/init.d/libvirtd start
查看kvm模块加载:
lsmod | grep kvm
kvm_intel 53484 3
kvm 316506 1 kvm_intel
图形模式安装guest os
virt-manager
卸载kvm
yum erase `rpm -qa | egrep '(qemu|virt|kvm)'`
rm -rf /var/lib/libvirt /etc/libvirt/
创建连接池
1.创建基于文件夹的存储池(目录)
mkdir -p /data/vmfs
2.定义存储池与其目录
virsh pool-define-as vmdisk --type dir --target /data/vmfs
3.创建已定义的存储池
(1)创建已定义的存储池
virsh pool-build vmdisk
(2)查看已定义的存储池,存储池不激活无法使用。
virsh pool-list --all
4.激活并自动启动已定义的存储池
virsh pool-start vmdisk
virsh pool-autostart vmdisk
这里vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。
5.在存储池中创建虚拟机存储卷
(1)在存储池中创建虚拟机存储卷
virsh vol-create-as vmdisk oeltest03.qcow2 20G --format qcow2
(2)根据创建的虚拟机存储卷安装虚拟机
virt-install --name=oeltest03 --os-variant=RHEL6 \
--ram 1024 --vcpus=1 --disk path=/data/vmfs/oeltest03.qcow2, \
format=qcow2,size=20,bus=virtio --accelerate --cdrom \
/data/iso/oel63x64.iso --vnc --vncport=5910 \
--vnclisten=0.0.0.0 --network bridge=br0,model=virtio –noautoconsole
===================完全文本方式安装:===================
[root@localhost ~] virt-install --connect qemu:///system -n vm2 -r 2050 \
--disk path=/var/lib/libvirt/images/vm2.img,size=7 \
--os-type=linux --os-variant=centos7.0 --vcpus=1 \
--network network=default --location=ftp://192.168.44.100/centos7/ \
-x console=ttyS0 --nographics
=========================virt-install常用参数=================
-n --name= 客户端虚拟机名称
-r --ram= 客户端虚拟机分配的内存
-u --uuid= 客户端UUID 默认不写时,系统会自动生成
--vcpus= 客户端的vcpu个数
-v --hvm 全虚拟化
-p --paravirt 半虚拟化
-l --location=localdir 安装源,有本地、nfs、http、ftp几种,多用于ks网络安装
--vnc 使用vnc ,另有--vnclient=监听的IP --vncport =VNC监听的端口
-c --cdrom= 光驱 安装途径
--disk= 使用不同选项作为磁盘使用安装介质
-w NETWORK, --network=NETWORK 连接客户机到主机网络
-s --file-size= 使用磁盘映像的大小 单位为GB
-f --file= 作为磁盘映像使用的文件
--cpuset=设置哪个物理CPU能够被虚拟机使用
--os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’)
--os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步优化虚拟机配置
--host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV是随着libvirt使用的一个节点设备名(具体设备如’virsh nodedev-list’的显示的结果)
--accelerate KVM或KQEMU内核加速,这个选项是推荐最好加上。如果KVM和KQEMU都支持,KVM加速器优先使用。
-x EXTRA, --extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序
--nographics "virt-install" 将默认使用--vnc选项,使用nographics指定没有控制台被分配给客户机
================根据配置文件创建虚拟机======================
首先需要有kvm里面创好的vm1
1.需要有磁盘文件
cd /var/lib/libvirt/images
ls
cp vm1.qcow2 vm2.qcow2
2.需要有配置文件:配置文件需要修改必要的东西
cd /etc/libvirt/qemu/
ls
vm1.xml
cp vm1.xml vm2.xml
要改的地方
name
memory
vcpu
source
mac
uuid
3.创建虚拟机:
virsh define /etc/libvirt/qemu/vm2.xml
virsh list --all
virsh start vm2
virsh domifinfo vm2
================根据配置文件创建虚拟机======================
1.需要有磁盘文件
cd /var/lib/libvirt/images
ls
cp vm1.qcow2 vm2.qcow2
2.需要有配置文件:配置文件需要修改必要的东西
cd /etc/libvirt/qemu/
ls
vm1.xml
cp vm1.xml vm2.xml
要改的地方
name
memory
vcpu
source
mac
uuid
3.创建虚拟机:
virsh define /etc/libvirt/qemu/vm2.xml
virsh list --all
virsh start vm2
virsh domifinfo vm2
=====================虚拟机的基本管理命令==================
虚拟机的组成部分
1.虚拟机配置文件
[root@localhost qemu]# ls /etc/libvirt/qemu
networks vm1.xml
2.储存虚拟机的介质
[root@localhost qemu]# ls /var/lib/libvirt/images/
vm1.img
虚拟机的基本管理命令:
查看
启动
关闭
重启
重置
查看:
查看虚拟机:
# virsh list
Id Name State
----------------------------------------------------
2 vm1 running
# virsh list --all
Id Name State
----------------------------------------------------
2 vm1 running
查看kvm虚拟机配置文件:
virsh dumpxml name
将node4虚拟机的配置文件保存至node6.xml
virsh dumpxml node4 > /etc/libvirt/qemu/node6.xml
修改node6的配置文件:
virsh edit node6
如果直接用vim编辑器修改配置文件的话,需要重启libvirtd服务
启动:
[root@localhost ~] virsh start vm1
Domain vm1 started
暂停虚拟机:
virsh suspend vm_name
恢复虚拟机:
virsh resume vm_name
关闭:
方法1:
virsh shutdown vm1
Domain vm1 is being shutdown
方法2:
virsh destroy vm1
Domain vm1 destroyed
重启:
[root@localhost ~] virsh reboot vm1
Domain vm1 is being reboote
重置:
[root@localhost ~] virsh reset vm1
Domain vm1 was reset
删除虚拟机:
virsh undefine vm2
Domain vm2 has been undefined
注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接被删除掉
====================================kvm网络=========================
https://blog.csdn.net/hzhsan/article/details/44098537/
分类:
网络:nat isolate(隔离)
接口:bridge
虚拟交换机:linux-bridge ovs(open-Vswitch)
vm1
交换机
vm2
[root@localhost system]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400136642 yes virbr0-nic
vnet0
vnet1
brctl delif virbr0 vnet0
配置bridge方式:
打开虚拟系统管理器-》编辑-》连接详情-》网络端口-》+ -》桥接-》br1,onboot,现在激活,ens33-》完成
改配置文件
创建桥接器
cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
NM_CONTROLLED=no
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.18.44.79
PREFIX=24
GATEWAY=10.18.44.1
DNS1=8.8.8.8
ONBOOT=yes
USERCTL=no
DELAY=0
将物理接口桥接到桥接器
cat /etc/sysconfig/network-scripts/ifcfg-enp0s25
DEVICE=eth0
NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
BRIDGE=br0
重启加载网络服务
service network restart
systemctl restart network
重启生效
init 6
查看当前桥接情况
brctl show
配置nat1方式:
打开虚拟系统管理器-》编辑-》连接详情-》虚拟网络-》点+-》nat1-》启用,启用,该IP段
需要说明的是,使用 NAT 的虚机 VM1 可以访问外网,但外网无法直接访问 VM1。
因为 VM1 发出的网络包源地址并不是 192.168.122.6,而是被 NAT 替换为宿主机的 IP 地址了。
配置iso方式:
打开虚拟系统管理器-》编辑-》连接详情-》虚拟网络-》点+-》iso1-》启用,启用,该IP段
================克隆=============================================
2.字符终端,命令克隆
virt-clone -o vm1 --auto-clone
WARNING 设置图形设备端口为自动端口,以避免相互冲突。
正在分配 'vm1-clone.qcow2' | 6.0 GB 00:00:05
成功克隆 'vm1-clone'。
virt-clone -o vm1 -n vm2 --auto-clone
WARNING 设置图形设备端口为自动端口,以避免相互冲突。
正在分配 'vm2.qcow2' | 6.0 GB 00:00:06
成功克隆 'vm2'。
virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img
正在克隆
vm1.img | 8.0 GB 01:03
Clone 'vm2' created successfully.
==================快照==========================================
[root@localhost ~]virsh list
Id Name State
----------------------------------------------------
1 rhel5u8-1 running
为虚拟机vm1的类型是raw创建一个快照将会报错
[root@localhost ~]# virsh snapshot-create-as vm1 vm1.snap
error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
raw
KVM和XEN默认的格式好像还是这个格式。就是使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区)。由于原生的裸格式,不支持snapshot也是很正常的。但如果你使用LVM的裸设备,那就另当别论。说到LVM还是十分的犀利的目前来LVM的snapshot、性能、可扩展性方面都还是有相当的效果的。目前来看的话,备份的话也问题不大。就是在虚拟机迁移方面还是有很大的限制。但目前虚拟化的现状来看,真正需要热迁移的情况目前需求还不是是否的强烈。虽然使用LVM做虚拟机镜像的相关公开资料比较少,但目前来看牺牲一点灵活性,换取性能和便于管理还是不错的选择。
qcow2
现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能,这个也算是redhat的官方渠道了
对于qcow2的格式,几点还是比较突出的,qcow2的snapshot,可以在镜像上做N多个快照:
•更小的存储空间
•Copy-on-write support
•支持多个snapshot,对历史snapshot进行管理
•支持zlib的磁盘压缩
•支持AES的加密
查看镜像文件格式
qemu-img info /var/lib/libvirt/images/vm1.qcow2
把raw格式转换成qcow2格式
qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/vm1.img /var/lib/libvirt/images/rhel5u8-1_qcow2.img