KVM安装及使用

前端之家收集整理的这篇文章主要介绍了KVM安装及使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文介绍在CentOS 7.2系统环境的KVM安装及使用,包括NAT网络配置和磁盘添加

KVM安装

KVM 是基于cpu 辅助的全虚拟化方案,它需要cpu虚拟化特性的支持

numactl --hardware

检查是否支持KVM
支持 KVM, Intel cpu 的 vmx 或者 AMD cpu 的 svm 扩展必须生效

a: 
grep ‘(vmx|svm)‘ /proc/cpuinfo

vmx是intel cpu支持的
svm是AMD cpu支持的
如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。

b: 确保BIOS里开启VT: Intel(R) Virtualization Tech [Enabled]

c:
lsmod | grep kvm

命令输出中必须存在 kvm_intel (intel cpu的情况下)
如果没有输出 则运行 modprobe kvm-intel

安装KVM-QEMU

安装kvm-qemu

yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer

启动libvirt

systemctl enable libvirtd && systemctl start libvirtd service libvirtd start /etc/init.d/libvirtd restart

关闭selinux(黑石默认关闭
sed -i ‘s/=enforcing/=disabled/g’ /etc/selinux/config

可以选择-批量安装包命令
yum -y groupinstall “Virtualization” “Virtualization Client” “Virtualization Platform” “Virtualization Tools”
yum install bridge-utils -y

qemu-kvm:qemu模拟器
qemu-img:qemu磁盘image管理器
virt-install:用来创建虚拟机的命令行工具
libvirt:提供libvirtd daemon来管理虚拟机和控制hypervisor
libvirt-client:提供客户端API用来访问server和提供管理虚拟机命令行工具的virsh实体
virt-viewer:图形控制台

创建KVM镜像-NAT方式

http://joelhy.github.io/2015/01/23/qemu-kvm-install-guide/

virt-install --connect qemu:///system -n centos7_demo \
-r 8192 --vcpus=4 --disk path=/home/CentOS/centos7_demo.img,size=20 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --os-type linux \
--os-variant rhel7 --accelerate --network=bridge:br0 --paravirt \
--cdrom /home/CentOS/CentOS-7-x86_64-Minimal-1511.iso

让virsh console登录虚拟机,宿主机执行
echo "ttyS0" >> /etc/securetty
echo "S0:12345:respawn:/sbin/agetty/ ttyS0 115200" >> /etc/inittab
echo "console=ttyS0" >> /etc/grub.conf

// virsh console登录,完成安装
virt-install --connect qemu:///system -n centos7_demo -r 8192 --vcpus=4 --disk path=/home/CentOS/centos7_demo.img,size=20 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type linux --os-variant rhel7 --accelerate --network=network:default --paravirt --location /home/CentOS/CentOS-7-x86_64-Minimal-1511.iso --extra-args='console=tty0 console=ttyS0,115200n8 serial'

// 指定ip 192.168.122.6,外部可以ssh 192.168.122.6 (root:123456)
virt-install --connect qemu:///system -n centos7_demo -r 8192 --vcpus=4 --disk path=/home/CentOS/centos7_demo.img,115200n8 serial linux ip=192.168.122.2 netmask=255.255.255.0 gateway=192.168.122.1'

--debug

参数说明:
–connect qemu:///system 连接到本地系统上的KVM,也可以连接到其他主机上的KVM
-n centos7_demo 虚拟机的名称,这个例子中叫 centos7_demo
-r 512 分配给虚拟机的内存,此处为512M
-vcpus=4 虚拟cpu个数:4
–disk path=/home/kvm/images/centos7_demo.img,size=15 虚拟机磁盘镜像文件存储路径,存储目录必须是已经存在的目录,文件大小为10GB
–graphics vnc,listen=0.0.0.0 图形化访问虚拟机的方式:通过VNC协议。也可以使用效率更高的spice协议,spice协议支持音频和USB设备,不过配置较为复杂
–noautoconsole 不自动连接到控制台
–os-type linux 操作系统类型,如果是Windows操作系统,则是windows
–os-variant rehel7 guest操作系统类型,即上面virt-install –os-variant=list中显示
–accelerate 使用硬件加速
–network=bridge:br0 使用类型为桥接的br0网卡
–hvm 全虚拟化(–paravirt 部分虚拟化)
–cdrom /home/kvm/iso/CentOS-7.0-1406-x86_64-Minimal.iso ISO安装文件的存储路径

安装过程,设计命令行界面安装CentOS过程,按照命令提示,配置好参数,直接安装即可。

VNC 图形界面连接

查看VNC监听端口:
virsh vncdisplay centos7_demo
:0
其中::0代表第一个屏幕,VNC的默认连接端口为5900,:0即端口5900,如果是:1则端口是5901,:2端口是5902,以此类推。支持VNC的客户端有TightVNC,TigerVNC,realvnc等。本文使用的是tigervnc。

从另一台支持图形化界面的主机连接到guest虚拟机:
vncviewer 192.168.122.99::5900
其中,192.168.122.99为KVM宿主机的IP地址,5900是根据上面vncdisplay结果得到的端口,也可以用vncviewer 192.168.122.99:0访问。192.168.122.99需要改成实际使用的IP。

KVM宿主机网络包转发

https://jamielinux.com/docs/libvirt-networking-handbook/nat-based-network.html
http://qkxue.net/info/153833/centos-amp-amp-centos-KVM-NAT-firewalld-amp-amp-iptables-7-6-5

宿主机开启包转发

vim /etc/sysctl.conf
     net.ipv4.ip_forward = 1
sysctl -p

guest-os添加Gateway
Gateway添加192.168.122.1(host-os的虚拟网卡ip),guest-os就能够通过nat访问外网ip。

ip route add default via 192.168.122.1 dev eth0
ip route flush cache


vim /etc/sysconfig/network-scripts/ifcfg-eth0
gateway=192.168.122.1

ip可以通,域名不通
ping 100.80.82.122
ping baidu.com

guest-os添加DNS
DNS添加192.168.122.1(host-os的虚拟网卡ip),guest-os就能够通过nat获得host-os的域名解析服务(host-os此ip的53端口有监听)。

vim /etc/resolv.conf
nameserver 192.168.122.1

就可以通过域名ping通外网

如果开了防火墙或者iptables:systemctl status firewalld.service

宿主机DNS包含域名解析

nameserver 100.80.72.201

guest-os添加磁盘-virtio驱动

raw

qemu-img create -f raw centos7_demo2-disk2.img 20G
virsh edit centos7_demo2

<disk type='file' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source file='/home/CentOS/centos7_demo2-disk2.img'/>
  <target dev='vdb' bus='virtio'/>
  <serial>virtio_abcdef001</serial>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>

reboot guest-os

qcow2

qemu-img create -f qcow2 centos7_demo2-disk2.img 20G

virsh edit centos7_demo2

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/home/CentOS/centos7_demo2-disk2.img'/>
  <target dev='vdb' bus='virtio'/>
  <serial>virtio_abcdef001</serial>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>

reboot guest-os

其中:virtio_abcdef001 virtio_abcdef001出现在/dev/disk/by-id/virtio-virtio_abcdef001
区别:qcow2支持Copy on Write,创建时,文件和truncate类似。qcow2 格式的文件虽然在性能上比rRaw 格式的有一些损失(主要体现在对于文件增量上,qcow2 格式的文件为了分配 cluster 多花费了一些时间),但是 qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量,更适用于云计算系统,同时,它还具有加密,压缩,以及快照等 raw 格式不具有的功能

kvm虚拟机克隆

virt-clone -o centos7_demo2 -n centos7_demo2_clone -f /home/CentOS/centos7_demo2_clone.img

虚拟机操作相关命令

virsh list –all 获取虚拟机列表
virsh dominfo {vmname} 获取虚拟机信息
virsh shutdown {vmname} 正常关闭虚拟机
virsh reboot {vmname} 重启虚拟机
virsh start {vmname} 启动虚拟机
virsh autostart {vmname} 虚拟机随宿主机启动
virsh destroy {vmname} 强制关闭虚拟机
virsh undefine {vmname} 删除虚拟机定义文件,即删除/etc/libvirt/qemu目录下相应的xml文件,注意_这个命令并不会删除磁盘img文件,磁盘img文件需要手动删除
virsh undefine {vmname} –remove-all-storage 删除该访客以及所有关联的存储器
virsh edit {vmname} 编辑虚拟机配置文件,即修改虚拟机的内存、cpu以及VNC连接端口等配置
virsh console {vmname} 连接虚拟机
virsh suspend {vmname} 挂起虚拟机
virsh resume {vmname} 恢复挂起虚拟机
virt-install {}创建虚拟机
virt-clone -o {old_vmname} -n {new_vmname} -f /path/to/img/file.img 复制虚拟机,-f参数指定新虚拟机镜像文件路径,复制完成后需要登录进虚拟机更改ip、hostname
virsh dumpxml {vmname}
virsh connect –name qemu:///system
virsh net-list
virsh net-dumpxml default

习惯操作流程:

virsh list
virsh start {vmname}
virsh console {vmname}
virsh shutdown {vmname}
virsh destroy {vmname}
virsh undefine {vmname}

virsh edit {vmname} virsh destroy {vmname}

原文链接:https://www.f2er.com/centos/376963.html

猜你在找的CentOS相关文章