企业kvm搭建

本文详细介绍了如何搭建KVM虚拟化环境,包括安装必要的软件、理解虚拟机的组成、利用virsh命令管理虚拟机、掌握COW技术原理以及创建虚拟机模板的步骤。通过这些步骤,可以有效地在Linux服务器上构建和管理KVM虚拟机。
摘要由CSDN通过智能技术生成

搭建kvm应用的服务器

虚拟化主要厂商及产品
系 列                  PC/服务器版代表

  1. VMware            VMware Workstation、vSphere 
  2. Microsoft           VirtualPC、Hyper-V
  3. RedHat              KVM、RHEV
  4. Citrix                  Xen
  5. Oracle                Oracle VM VirtualBox

红色标记的为企业现在最常用的

 1,安装虚拟化服务器平台

              KVM /QEMU /LIBVIRTD
– KVM是linux内核的模块,它需要CPU的支持,采用硬件辅劣虚拟化技术 Intel-VT,AMD-V,内存的相关如Intel的 EPT 和 AMD 的 RVI 技术
– QEMU 是一个虚拟化的仿真工具,通过 ioctl 不内核kvm 交互完成对硬件的虚拟化支持
– Libvirt 是一个对虚拟化管理的接口和工具,提供用户端程序 virsh ,virt-install, virt-manager, virt-view 不用户交互

安装需要的软件:

yum install -y    qemu-kvm    libvirt-daemon      libvirt-client      libvirt-daemon-driver-qemu
        启动服务:systemctl start libvirtd

必备软件


• qemu-kvm     – 为 kvm 提供底层仿真支持
• libvirt-daemon     – libvirtd 守护进程,管理虚拟机
• libvirt-client          – 用户端软件,提供客户端管理命令
• libvirt-daemon-driver-qemu       – libvirtd 连接 qemu 的驱劢

在创建虚拟管理平台之前,先了解虚拟机的组成

虚拟机的组成
– 内核虚拟化模块(KVM)
– 系统设备仿真(QEMU)
– 虚拟机管理程序(LIBVIRT)
– 一个 XML 文件(虚拟机配置声明文件)– 位置 /etc/libvirt/qemu/   //配置文件
– 一个磁盘镜像文件(虚拟机的硬盘)– 位置 /var/lib/libvirt/images/     //后端存储

介绍下virsh的命令工具

格式:    virsh     控制挃令    [虚拟机名称]     [参数]

查看KVM节点(服务器)信息   – virsh   nodeinfo
• 列出虚拟机     – virsh list [--all]

列出所有的虚拟机,虚拟机的状态有(8)种 
runing 是运行状态         idel 是空闲状态 
pause 暂停状态                shutdown 关闭状态 
crash 虚拟机崩坏状态           daying 垂死状态 
shut off 不运行完全关闭              pmsuspended客户机被关掉电源中中断
• 列出虚拟网络        – virsh net-list [--all]
• 查看挃定虚拟机的信息         – virsh dominfo 虚拟机名称

运行|重启|关闭挃定的虚拟机                   – virsh start|reboot|shutdown   虚拟机名称
• 强制关闭挃定的虚拟机                           – virsh destroy                            虚拟机名称
• 将挃定的虚拟机设为开机自劢运行        – virsh autostart [--disable]       虚拟机名称

 管理虚拟网卡的操作命令

*net-autostart (network)                自动启动网卡(default) 
*net-create (file)                     把配置加载到文件 
*net-destory ( network )               关闭网卡 
*net-dumpxml(default)       把网卡配置加载到文件 
*net-edit(default)                编辑网卡信息 
*net-info(default)               网卡信息 
*net-list 显示网卡 
*net-uuid (default)            得到网卡的id 
*net-name(id)                    得到网卡的名字 
*net-start (default)            开启网卡

 连接本地/远程KVM

 使用 virsh 客户端工具
– 连接本地
– virsh
– virsh# connect     qemu:///system (默认选项)
– 连接远程
– virsh# connect     qemu+ssh://user@ip.xx.xx.xx:port/system  (连接时要先部署好ssh的免密登陆)

COW技术原理
• Copy On Write,写时复制– 直接映射原始盘的数据内容– 当原始盘的旧数据有修改时,在修改之前自劢将旧数据存入前端盘,对前端盘的修改不回写到原始盘


1,创建虚拟机的模板,首先要创建一个虚拟机(使用磁盘镜像文件格式)

虚拟机的磁盘镜像文件格式

特点\类型                 RAW                  QCOW2
KVM默认                    否                         是
I/O效率                        高                         较高
占用空间                     大                          小
压缩                            不支持                支持
后端盘复用                不支持                支持
快照                            不支持                支持

 所以我们使用的是QCOW2来传教虚拟机模板格式

使用的命令是qemu-img

• qemu-img 是虚拟机的磁盘管理命令
• qemu-img 支持非常多的磁盘格式,例如 raw、qcow2、vdi、vmdk 等等
– qemu-img 命令 参数 块文件名称 大小
– 常用的命令有
– create 创建一个磁盘
– convert 转换磁盘格式
– info 查看磁盘信息
– snapshot 管理磁盘快照

1.1  创建新的镜像盘文件

– qemu-img create -f 格式 磁盘路径 大小

– qemu-img create -f qcow2 node.img 50G

 cd     /var/lib/libvirt/images
 qemu-img create -f qcow2 node.qcow2   16G    //创建后端存储,指定格式为qcow2
 qemu-img   info node.qcow2       //查询node镜像文件的信息

1.2 创建虚拟交换机

vim    /etc/libvirt/qemu/networks/vbr.xml
<network>
    <name>vbr</name>
    <bridge name="vbr"/>
    <forward mode="nat"/>   //配置net可以使虚拟机上外网
        <ip address="192.168.1.254" netmask="255.255.255.0">
            <dhcp>         //配置自动分配ip地址
            <range start="192.168.1.100" end="192.168.1.200"/>
            </dhcp>
        </ip>
</network>

配置的虚拟网卡名为vbr自动分配网址端为100到200

原理:调用 dnsmasq 提供DNS、DHCP等功能

1.3配置模板,加载centos的系统,搭载在1.1建立的后端存储

在配置模板之前,物理机搭建好网络yum源

1.3.1搭建好ftp服务

yum   install  -y  vsftp 

vim    /etc/vsftpd/vsftpd.conf  
listen=YES
listen_ipv6=NO

systemctl  enable  vsftpd
systemctl  start   vsftpd

vsftp默认根目录为   /var/ftp

1.3.2搭建网络yum源

vim  /etc/fstab
/iso/CentOS-7-x86_64-DVD-1708.iso    /var/ftp/centos   iso9660 defaults 0 0
或暂时挂在
mount –t iso9660 –o loop,ro /xx/xx.iso /var/ftp/centos7

 1.4创建模板centos虚拟机

软件选择 minimal ,关闭 KDUMP ,选择手工分区,使用标准分区格式,只分一个根分区

对模板进行优化配置

第一步

1、禁用 selinux /etc/selinux/config
SELINUX=disabled
– 2、卸载防火墙与NetworkManager(主要是为openstack做准备的)
yum remove -y NetworkManager-* firewalld-* python-firewall
– 3、配置 yum 源
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0

软件包安装及yum配置
– 安装软件
yum install -y lftp    – 1、yum 源导入公钥验证配置
gpgcheck=1            – 2、导入 gpg key      rpm --import ftp://192.168.1.254/centos7/RPM-GPG-KEY-CentOS-7  (也是为openstack准备)
– 3、常用系统命令安装    yum install -y net-tools vim-enhanced bridge-utils psmisc

第二步

删除网络配置里的个性化信息
– /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes“
IPV6INIT="no"
TYPE="Ethernet"
BOOTPROTO=“dhcp“
– 禁用空路由
– /etc/sysconfig/network
NOZEROCONF="yes"

第三步

Console及磁盘分区配置
• 添加 Console 配置及初除磁盘分区里的个性化信息

vim     /etc/default/grub
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0  console=ttyS0,115200n8" (可以在物理机使用virsh  console   node1)
GRUB_DISABLE_LINUX_UUID="true"  
GRUB_ENABLE_LINUX_LABEL="true“
– 重新生成 grub.cfg
grub2-mkconfig       -o      /boot/grub2/grub.cfg
– /etc/fstab 文件中到 UUID 手工修改成系统设备
– blkid 查看 uuid 对应的磁盘设备,修改 fstab 文件

第四步

去除个性化信息
• 安装分区扩展软件
yum     install       -y           cloud-utils-growpart
– 设置第一次开机自劢扩容根目录
chmod 755 /etc/rc.local
– 在 rc.local 里加入如下配置
###    (作为下面清理的标记)
/usr/bin/growpart    /dev/vda   1
/usr/sbin/xfs_growfs    /
/usr/bin/sed     '/^###/,$d'    -i     /etc/rc.d/rc.local
– 关闭虚拟机后执行信息清理工作
virt-sysprep      -d      node   (virt-sysprep软件需要提前安装,可以通过yum provides virt-sysprep查询到软件名)

第五步

virsh   undefine   centos7

到此模板创建好了。

2,创建xml配置文件

<domain type='kvm'>
  <name>node</name>
  <memory unit='KB'>2097152</memory>  //最大使用的内存
  <currentMemory unit='KB'>2097152</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/node.img'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>   //虚拟网卡添加
      <source bridge='vbx'/>
      <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>

3,快速创建虚拟机

     1,以我们刚刚装系统的模板为后端文件创建虚拟机
     qemu-img    create    –b    node.qcow2   –f    qcow2     node1.img   //创建node1虚拟机磁盘镜像

      2,

virsh    define    node1.xml
virst    start     node1
virsh    console   node1

写在最后

使用 guestmount 工具
– 支持离线挂载 raw、qcow2 格式虚拟机磁盘
– 可以在虚拟机关机的情冴下,直接修改磁盘中的文档
– 方便对虚拟机定制、修复、脚本维护
!!! 需要注意 SELinux 机制的影响

如何挂载虚拟盘
• 基本用法
guestmount -a 虚拟机磁盘路径 -i /挂载点
[root@kvmsvr ~]# mkdir      /mnt/kdisk
[root@kvmsvr ~]# guestmount    -a    node1.qcow2      -i     /mnt/kdisk
[root@kvmsvr ~]# ls           /mnt/kdisk
bin   home media opt   sbin    tmp      boot   lib   misc    proc      selinux usr

但是要修改模板需要chroot    /mnt/kdisk    但是要注意所在的位置是模板机还是物理机

可以使用virt-manager  中加载重新配置再执行第四步,第五步。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值