搭建kvm应用的服务器前端
虚拟化主要厂商及产品
系 列 PC/服务器版表明node
- VMware VMware Workstation、vSphere
- Microsoft VirtualPC、Hyper-V
- RedHat KVM、RHEV
- Citrix Xen
- Oracle Oracle VM VirtualBox
红色标记的为企业如今最经常使用的python
1,安装虚拟化服务器平台linux
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 不用户交互ios
yum install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu
启动服务:systemctl start libvirtdvim
• 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/ //后端存储centos
格式: virsh 控制挃令 [虚拟机名称] [参数]api
查看KVM节点(服务器)信息 – virsh nodeinfo
• 列出虚拟机 – virsh list [--all]bash
列出全部的虚拟机,虚拟机的状态有(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) 开启网卡
使用 virsh 客户端工具
– 链接本地
– virsh
– virsh# connect qemu:///system (默认选项)
– 链接远程
– virsh# connect qemu+ssh://user@ip.xx.xx.xx:port/system (链接时要先部署好ssh的免密登录)
虚拟机的磁盘镜像文件格式
特色\类型 RAW QCOW2
KVM默认 否 是
I/O效率 高 较高
占用空间 大 小
压缩 不支持 支持
后端盘复用 不支持 支持
快照 不支持 支持
因此咱们使用的是QCOW2来传教虚拟机模板格式
• qemu-img 是虚拟机的磁盘管理命令
• qemu-img 支持很是多的磁盘格式,例如 raw、qcow二、vdi、vmdk 等等
– qemu-img 命令 参数 块文件名称 大小
– 经常使用的命令有
– create 建立一个磁盘
– convert 转换磁盘格式
– info 查看磁盘信息
– snapshot 管理磁盘快照
– 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镜像文件的信息
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等功能
在配置模板以前,物理机搭建好网络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虚拟机
对模板进行优化配置
一、禁用 selinux /etc/selinux/config
SELINUX=disabled
– 二、卸载防火墙与NetworkManager(主要是为openstack作准备的)
yum remove -y NetworkManager-* firewalld-* python-firewall
– 三、配置 yum 源
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0
软件包安装及yum配置
– 安装软件
yum install -y lftp – 一、yum 源导入公钥验证配置
gpgcheck=1 – 二、导入 gpg key rpm --import ftp://192.168.1.254/centos7/RPM-GPG-KEY-CentOS-7 (也是为openstack准备)
– 三、经常使用系统命令安装 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
到此模板建立好了。
<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>
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 中加载从新配置再执行第四步,第五步。