文章目录
一、搭建KVM虚拟化平台
1、安装所需软件
[root@localhost ~]# yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager //yum安装所需软件
[root@localhost ~]# reboot //重新启动
[root@localhost ~]# cat /proc/cpuinfo | grep vmx //查看cpu是否支持虚拟化(Intel的服务器)AMD服务器可用cat /proc/cpumfo | grep smv命令查看
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dNowprefetch invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dNowprefetch invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
[root@localhost ~]# lsmod | grep kvm //检查KVM模块是否安装
kvm_intel 188688 0
kvm 636965 1 kvm_intel
irqbypass 13503 1 kvm
[root@localhost ~]# systemctl start libvirtd //开启服务
[root@localhost ~]# systemctl enable libvirtd //开机自启动
2、图形化安装KVM虚拟机
[root@localhost ~]# mkdir -p /data_kvm/store /data_kvm/iso //创建存储目录
[root@localhost ~]# cd /data_kvm
[root@localhost data_kvm]# ls
iso store
[root@localhost ~]# cp /media/CentOS-7-x86_64-DVD-1611.iso /data_kvm/iso/ //把镜像上传到服务器目录/data_kvm/iso
[root@localhost ~]# virt-manager //启动virt-manager工具
默认存放的路径/var/lib/libvirt/images/
创建存储池
创建镜像存储池
创建存储卷
新建虚拟机
3、使用命令安装 KVM 虚拟机
1、使用 virt-install 安装
第一种方法
[root@localhost ~]# virt-install --os-type=linux --os-variant centos7.0 --name test01 --ram 1024 --vcpus 1 --disk=/kvm_vm/test01.raw,format=raw,size=10 --location /iso/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
第二种方法
[root@localhost ~]# yum -y install tigervnc virt-viewer virt-v2v
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# virt-install --name centos-72 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos-72.img,size=5 --accelerate --cdrom /data_kvm/iso/CentOS-7-x86_64-DVD-1611.iso --network bridge=br0 --graphics vnc
[root@localhost ~]# vncviewer 127.0.0.1 //测试远程连接
参数 | 说明 |
---|---|
–name | 指定 Guest 名字 |
–ram | 指定内存大小 |
–vcpus | 指定虚拟机的 cpu 数量 |
–disk | 指定虚拟机磁盘存储文件的路径 |
size=5 | 指定虚拟磁盘的大小,单位是 G |
–accelerate | KVM或KQEMU内核加速器 |
–cdrom | 指定用于全虚拟化 Guest 的虚拟光驱,后指定ISO或 CDROM 镜像 |
–network | 指定虚拟机的网卡模式 |
-x | 提供额外的内核命令行参数 |
2、使用 ks 文件,无交互字符界面安装 |
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# mkdir /var/www/html/centos7/
[root@localhost ~]# mount /data_kvm/iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/centos7/
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vim ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$R3WeI8np$p87QNYBUo5P6Ab5lEBd4q1
# Use network installation
url --url="http://192.168.1.10/centos7"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Network information
network --bootproto=dhcp --device=ethO --onboot=on
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=none
# Partition clearing information
clearpart --all
# disk partitioning information
part /boot --fstype="xfs" --size=500
part /home --fstype="xfs" --size=4096
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%post --interpreter=/bin/bash
rm -rf /etc/yum.repo.d/*
cat >> /etc/yum.repo.d/yum.repo << EOF
[centos7]
name=centos7
baseurl=http://192.168.1.10/centos7
gpgcheck=0
EOF
%end
%packages
@development
@gnome-desktop
%end
[root@localhost ~]# virt-install --name centos7.32 --ram 1024 --vcpus=1 --disk path=/data_kvm/store/centos-7.32.qcow2,size=13 --accelerate --location=http://192.168.1.10/centos7/ --network bridge=br0 -x "ks=http://192.168.1.10/ks.cfg"
二、KVM基本管理
1、查看虚拟机
[root@localhost ~]# ls /etc/libvirt/qemu //查KVM的配置文件存放目录
autostart centos7.0.xml networks
[root@localhost ~]# virsh list --all //查看虚拟机列表
Id 名称 状态
----------------------------------------------------
2 centos7.0 running
[root@kvm01 ~]# virsh dominfo centos7.0 //查看虚拟机详细信息域
Id: -
名称: centos7.0
UUID: 47bf2df1-2085-4d7d-acc2-15e9c2f09e92
OS 类型: hvm
状态: 关闭
cpu: 1
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
2、虚拟机域的开关机
[root@localhost ~]# virsh start centos7.0 //启动虚拟机
域 centos7.0 已开始
[root@localhost ~]# virsh shutdown centos7.0 //关闭虚拟机
域 centos7.0 被关闭
[root@localhost ~]# virsh destroy centos7.0 //强制实例系统关闭电源
域 centos7.0 被删除
3、导出配置(备份)
[root@localhost ~]# virsh dumpxml centos7.0 > /etc/libvirt/qemu/centos7.2.xml //导出虚拟机配置
[root@localhost qemu]# virsh define centos7.0.xml
定义域 centos7.0(从 centos7.0.xml)
[root@localhost ~]# virsh create /etc/libvirt/qemu/centos7.0.xml //通过配置文件启动虚拟机系统实例
域 centos7.0 被创建(从 /etc/libvirt/qemu/centos7.0.xml)
4、删除虚拟机
[root@localhost ~]# virsh undefine centos7.0 //删除虚拟机
域 centos7.0 已经被取消定义
5、修改配置文件
[root@localhost ~]# vim /etc/libvirt/qemu/centos7.0.xml //通过vim命令修改
[root@localhost ~]# virsh edit centos7.0 //通过virsh命令修改
[root@localhost ~]# virsh domrename centos7.0 centos7.2 //虚拟机的重命名(7.2以上)
6、查看虚拟机对应的VNC端口(已安装VNC服务)
[root@localhost ~]# virsh vncdisplay centos7.0
:0 //默认不加端口,指定的也是:0,也就是5900
7、挂起虚拟机
[root@localhost ~]# virsh suspend centos7.0 //挂起虚拟机
域 centos7.0 被挂起
[root@localhost ~]# virsh resume centos7.0 //恢复虚拟机
域 centos7.0 被重新恢复
8、开机自启
[root@localhost ~]# virsh autostart centos7.0 //配置虚拟机实例伴随宿主机自动启动
域 centos7.0标记为自动开始
[root@localhost ~]# virsh autostart --disable centos7.0 //取消开机自启
注意:如果kvm虚拟机在另一块磁盘上,记得设置开机自动挂载 sdb1,不然后开机启动不了虚
拟机
[root@localhost ~]# vim /etc/fstab
/dev/sdb1 /data_kvm xfs defaults 0 0
三、KVM磁盘管理
磁盘格式 | 说明 |
---|---|
RAW | 裸格式。占用空间较大,性能较好,但不支持虚拟机快照功能 |
QCOW2 | (copy on write) 写时复制。占用空间较小,支持快照,性能比RAW稍差一些 |
1、磁盘格式
[root@localhost ~]# qemu-img info /data_kvm/store/admin.kvm //查看磁盘信息
image: /data_kvm/store/admin.kvm
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
[root@localhost ~]# qemu-img create /kvm_vm/123.raw 5G //创建磁盘(默认是裸格式)
[root@localhost ~]# qemu-img create -f qcow2 /kvm_vm/456.qcow2 5G //创建指定格式磁盘
[root@localhost ~]# qemu-img convert -f raw -O qcow2 /kvm_vm/123.raw /kvm_vm/123.qcow2 //转换磁盘格式
2、快照管理
[root@localhost ~]# virsh snapshot-create centos7.0 //创建快照
已生成域快照 1596527654
[root@localhost ~]# virsh snapshot-current centos7.0 //查看虚拟机快照版本信息
<domainsnapshot>
<name>1596527654</name>
<state>shutoff</state>
<creationTime>1596527654</creationTime>
<memory snapshot='no'/>
[root@localhost ~]# virsh snapshot-list centos7.0 //查看快照信息
名称 生成时间 状态
------------------------------------------------------------
1596527654 2020-08-04 15:54:14 +0800 shutoff
[root@localhost ~]# virsh snapshot-revert centos7.0 1596527654 //恢复虚拟机状态
[root@localhost ~]# virsh snapshot-delete centos7.0 1596527654 //删除快照
已删除域快照 1596527654
四、虚拟机域的克隆
1、自动克隆(完整克隆)
[root@localhost ~]# virt-clone --auto-clone -o centos7.0 -n centos7.3
正在分配 'centos7.3.qcow2' | 8.0 GB 00:06
成功克隆 'centos7.3'。
2、手动克隆(完整克隆)
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# cp test01.xml test02.xml //复制xml配置文件
[root@localhost kvm_vm]# cp centos.raw test02.raw //复制磁盘文件
[root@localhost qemu]# vim test02.xml
<domain type='kvm'>
<name>test02</name> //更改name字段,删除UUID
<memory unit='KiB'>1048576</memory>
......
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_vm/test02.raw'/> //修改磁盘路径以及名称
......
</controller>
<interface type='network'> //删除mac addres
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
[root@localhost qemu]# virsh define test02.xml //重新生成一个虚拟机
3、链接克隆
做一个链接的磁盘,然后第二个新的虚拟机更改xml配置文件,磁盘信息指定新的链接磁盘。
[root@localhost ~]# qemu-img create -f qcow2 -b centos.raw test02.qcow2
五、设置KVM网络
模式 | 说明 |
---|---|
用户模式 | 即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络 |
桥接模式 | 这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访冋到虚拟机内部,但需要网卡支持,一般有线网卡都支持 |
1、NAT模式
1、外部主机设置
[root@localhost ~]# echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
2、KVM主机设置
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
......
ONBOOT=yes
2、桥接模式
1、外部主机设置
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# virsh iface-bridge ens33 br0
使用附加设备 br0 生成桥接 ens33 失败
已启动桥接接口 br0
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29b7e3d0 yes ens33
virbr0 8000.525400de1f59 yes virbr0-nic
vnet0
[root@localhost ~]# virsh edit test02
</controller>
<interface type='bridge'>
<mac address='52:54:00:71:a8:7a'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
[root@localhost ~]# virsh start test02
域 test02 已开始
[root@localhost ~]# curl 192.168.1.128:80
www.baidu.com
2、KVM主机设置
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNowN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <broADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:71:a8:7a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.128/24 brd 192.168.1.255 scope global noprefixroute dynamic eth0
valid_lft 1715sec preferred_lft 1715sec
inet6 fe80::1fb8:58e9:31e7:30e8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost ~]# yum -y install Nginx
[root@localhost ~]# systemctl start Nginx
[root@localhost ~]# echo "www.baidu.com" > /usr/share/Nginx/html/index.html
六、KVM虚拟机的迁移
主机 | IP地址 | 主机名 |
---|---|---|
原主机 | 192.168.1.10 | kvm01 |
待迁移主机 | 192.168.1.20 | kvm02 |
nfs服务器 | 192.168.1.30 | nfs |
1、冷迁移(静态迁移)
前提是待迁移虚拟机需要关机
[root@kvm01 ~]# scp /etc/libvirt/qemu/test01.xml
192.168.1.20:/etc/libvirt/qemu/
[root@kvm01 ~]# scp /kvm-vm/centos.raw 192.168.1.20:/kvm-vm/
2、热迁移(动态迁移)
1、创建共享磁盘并挂载
[root@nfs ~]# mkdir /kvmshare
[root@nfs ~]# vim /etc/exports
/kvmshare *(rw,sync,no_root_squash)
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl enable rpcbind
[root@kvm01 ~]# mkdir /kvm-share
[root@kvm01 ~]# chmod -R 777 /kvm-share/
[root@kvm01 ~]# mount -t nfs 192.168.1.30:/kvmshare /kvm-share/
[root@kvm02 ~]# mkdir /kvm-share
[root@kvm02 ~]# chmod -R 777 /kvm-share/
[root@kvm02 ~]# mount -t nfs 192.168.1.30:/kvmshare /kvm-share/
2、在共享磁盘上安装系统
3、设置桥接网络
[root@kvm01 ~]# systemctl stop NetworkManager
[root@kvm01 ~]# virsh iface-bridge ens33 br0
使用附加设备 br0 生成桥接 ens33 失败
已启动桥接接口 br0
[root@kvm01 ~]# virsh edit test02
</controller>
<interface type='bridge'>
<mac address='52:54:00:71:a8:7a'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
编辑了域 test02 XML 配置。
[root@kvm01 ~]# virsh start test02
域 test02 已开始
[root@kvm01 ~]# yum -y install openssh-askpass
[root@kvm02 ~]# systemctl stop NetworkManager
[root@kvm02 ~]# virsh iface-bridge ens33 br0
Created bridge br0 with attached device ens33
Bridge interface br0 started
4、迁移虚拟机
原文地址:https://www.jb51.cc/wenti/3279300.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。