KVM虚拟化

kvm虚拟化
虚拟机的组成:

  • 内核虚拟化模块(KVM)
  • 系统设备仿真(QEMU)
  • 虚拟机管理程序(LIBVIRT)
  • 一个XML文件(虚拟机配置声明文件,定义虚拟机的名称、cpu、内存、虚拟磁盘、网卡等各种参数配置,路径:/etc/libvirt/qemu/)
  • 一个磁盘镜像文件(虚拟机的硬盘,路径:/var/lib/libvirt/images/)

#cat /proc/cpuinfo //查看cpu信息,其中vmx指令集表示支持虚拟化
#virsh start node01 //启动kvm中的虚拟机
#ps -efww //以宽输出格式显示所有进程
必备软件:
qemu-kvm:为kvm提供底层仿真支持
libvirt-daemon:libvirt守护进程,管理虚拟机
libvirt-client:用户端软件,提供客户端管理命令
libvirt-daemon-driver-qemu:libvirtd连接qemu的驱动
虚拟化平台的安装:
#yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu
#systemctl start libvirtd

  • virsh:提供管理各虚拟机的命令接口
    常用virsh命令工具:
    #virsh nodeinfo //查看KVM(运行中)节点的信息
    #virsh list [- -all] //列出运行中虚拟机(所有虚拟机)
    #virsh net-list //列出虚拟网络
    #virsh dominfo 虚拟机名称 //查看指定虚拟机信息
    #virsh start|reboot|shutdown 虚拟机名称 //启动|重启|关闭指定虚拟机
    #virsh destory 虚拟机名称 //强制关闭指定的虚拟机
    #virsh autostart 虚拟机名称 //将指定虚拟机设置开机自启
    #virsh undedine 虚拟机名称 //删除虚拟机
  • virsh虚拟网络管理
    #virsh net-list //查看虚拟网络
    #virsh net-define vbr.xml //创建虚拟网络
    #virsh net-undefine vbr //删除虚拟网络
    #virsh net-start vbr //启动虚拟网络
    #virsh net-destroy vbr //停止虚拟网络
    #virsh net-edit vbr //修改vbr网络的配置
    #virsh net-autostart vbr //设置vbr虚拟网络开机自启
    #virsh -c qemu+ssh://192.168.1.100/system //远程连接其他主机(192.168.1.100)的虚拟机

创建虚拟机
(1)创建vbr虚拟交换机

#vim vbr.xml		//创建虚拟交换机配置文件
 <network>
  <name>vbr</name>
  <bridge name='vbr' stp='on' delay='0'/>
  <domain name='vbr'/>
  <forward mode="nat"/>
  <ip address='192.168.1.254' netmask='255.255.255.0'>
    <dhcp>
      <range start="192.168.1.100" end="192.168.1.200"/>
    </dhcp>
  </ip>
</network>
#cp vbr.xml /etc/libvirt/qemu/networks/		            //拷贝配置文件至指定目录
#virsh net-define /etc/libvirt/qemu/networks/vbr.xml		//通知libvirtd根据配置文件创建虚拟设备
#vim  /etc/libvirt/qemu/networks/vbr.xml		            //查看创建的虚拟设备配置信息
 <!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit vbr
or other application using the libvirt API.
-->
<network>
  <name>vbr1</name>
  <uuid>38d50b4d-8033-4d24-9d30-1c0cb0f5030e</uuid>
  <forward mode='nat'/>
  <bridge name='vbr1' stp='on' delay='0'/>
  <mac address='52:54:00:c7:87:b6'/>
  <domain name='vbr'/>
  <ip address='192.168.1.254' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.1.100' end='192.168.1.200'/>
    </dhcp>
  </ip>
</network>
#virsh net-autostart vbr		//设置开机自启动
#virsh net-start vbr		    //开启虚拟设备
#virsh net-list	     	        //验证虚拟设备是否开启

(2)创建前端盘.img文件
COW技术原理( Copy On Write,写时复制)

  • 直接映射原始盘的数据内容
  • 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘
  • 对前端盘的修改不回写到原始盘
    qemu-img命令:虚拟机的磁盘管理命令
    格式:qemu-img 命令 参数 块文件名称 大小
    常用命令:
    #qemu-img create -f qcow2 test.img 50G //当前路径创建一个大小为50G的虚拟磁盘镜像文件
    #qemu-img info test.img //查询磁盘镜像文件
    2.1)、将node.qcow2复制到/var/lib/libvirt/images目录(node.qcow2后端盘:装好系统的模板文件)
    2.2)、创建前端盘node0.img,复用node.qcow2系统
#cd /var/lib/libvirt/images/
#qemu-img create -f qcow2 -b node.qcow2 node0.img 50G

(3)创建虚拟机.xml配置文件

#cp node.xml /etc/libvirt/qemu/node0.xml		//拷贝模板配置文件(可网上下载)至/etc/libvirt/qemu/目录
#cd /etc/libvirt/qemu/
#vim node0.xml
 domain type='kvm'>
  <name>node0</name>		//修改虚拟机名称
  <memory unit='KB'>1524000</memory>		//修改内存大小
  <currentMemory unit='KB'>1524000</currentMemory>
  <vcpu placement='static'>2</vcpu>		//指定cpu个数
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='yes'/>
    <bios useserial='yes'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough'>
  </cpu>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/node0.img'/>		//指定虚拟机镜像磁盘文件
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>		//指定连接的虚拟网桥
      <source bridge='vbr'/>
      <model type='virtio'/>
    </interface>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>文件
    <serial type='pty'></serial>
    <console type='pty'>
      <target type='serial'/>
    </console>
    <memballoon model='virtio'></memballoon>
  </devices>
</domain>
#virsh define /etc/libvirt/qemu/node0.xml		//根据修改后配置文件创建虚拟机node0
#virsh start node0		//启动虚拟机
#virsh list		//查看虚拟机启动情况

(4)编写自动创建虚拟机脚本

# vim auto-v.sh
#!/bin/bash
for i in $1
do  
  qemu-img create -f qcow2 -b /var/lib/libvirt/images/node.qcow2  /var/lib/libvirt/images/node$i.img 100G
  sed "s,node,node$i," /root/node.xml >  /etc/libvirt/qemu/node$i.xml
  virsh define /etc/libvirt/qemu/node$i.xml
  virsh start node$i
done
#bash auto-v.sh 66		//利用脚本创建虚拟机node66

(5)在未知新建虚拟机ip情况下,远程连接虚拟机

#virsh list
# virsh console node66		//连续回车两次,输入用户名和密码(关闭KVM)
#ifconfig
退出登录:Ctrl+],然后通过ssh ip登录修改ip
#virsh console node66		//通过该方式登录重启network使修改ip生效(该方式重启不会卡机)
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"		//网卡驱动名称
ONBOOT="yes"		//开机自启
NM_CONTROLLED="no"		//不接受NetworkManager控制
TYPE="Ethernet"		//类型(Ethernet网卡,Bridege网桥)
BOOTPROTO="static"		//协议(dhcp动态ip,static静态ip,none特殊情况使用)
IPADDR="192.168.8.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.8.254"
#systemctl restart network
#ifconfig		//查看ip是否生效

(6)磁盘扩容

#LANG=C		//设置系统语言为英语
# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0  100G  0 disk 
└─vda1 253:1    0    2G  0 part /
#growpart /dev/vda 1		//分区扩容
#xfs_growfs /		//文件系统扩容
#lsblk		//查看磁盘分区扩容是否生效
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0  100G  0 disk 
`-vda1 253:1    0  100G  0 part /
#df -h	//查看文件系统扩容是否生效

(7)修改后端盘数据

  • 修改后端盘之前需关闭所有虚拟机,修改完后端盘数据,所有前端盘都需要重做(所有虚拟机需重新创建),因此需慎重
#yum provides guestmount		//查询提供guestmount命令的安装包
#yum -y install libguestfs-tools-c

格式:
guestmount -a 要修改的后端盘文件 -i 挂载目录
例:

#guestmount -a /var/lib/libvirt/images/node.qcow2  -i /tmp/lx
#cd /tmp/lx		//进入后端盘挂载目录进行修改配置
#umount /tmp/lx	//修改完后,卸载挂载目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值