微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux操作文档——部署KVM虚拟化平台


一、搭建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
状态:       关闭
cpu1
最大内存: 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 举报,一经查实,本站将立刻删除。

相关推荐