Centos7 KVM虚拟化

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40478570/article/details/102698840

                                                                  Centos7 KVM虚拟化

KVM是Kernel-based Virtual Machine的简称,是一个开源的,基于内核的系统虚拟化模块,自Linux2.6.20开始,各大主流Linux发行版都已经将其集成与发行版中。相比于Xen(Xen的早期产品时基于软件的半虚拟化产品,新版本则是基于硬件支持的完全虚拟化),其核心源码较少,但是要求硬件支持完全虚拟化(Inter VT或AMD V),KVM由内核加载并使用Linux系统的调度器进行管理,因此KVM对资源的管理效率较高,而反观Xen则有自己的进程调度器,存储管理模块等,所以源码较为庞大,在基于Linux操作系统的虚拟化产品中占有较大份额,其中商业虚拟化软件Vmware ESX系列是基于软件模拟的Full-Virtualization

配置环境只需要一台Centos7的虚拟机就可以了,配置给的高一点(别太低,因为要在虚拟机里创建虚拟机)

在开始配置之前,先说明一下配置顺序:

  • 检查cpu是否包含相关指令集
  • 安装KVM需要的相关软件包
  • 安装图形化操作界面(易于之后使用图形化界面创建虚拟机)
  • 修改网卡配置(添加一块桥接网卡)
  • 给新新盘分区(80G那个),格式化文件系统,挂在至文件(为之后的虚拟机提供存储空间,如果你的空间足够,就跳过)
  • 使用FTP或SFTP或其他传输工具将Centos7的镜像上传至KVM服务器(怎么弄进去是你的事,反正你得弄进去)
  • 使用图形化界面创建虚拟机
  • 使用命令行创建虚拟机

STEP1:检测CPU是否包含相关的指令集

[root@localhost ~]# egrep '(vmx|svm)' /proc/cpuinfo

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 ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

STEP2:安装KVM相关的软件包,并启动libvirtd服务

[root@localhost ~]# yum install -y qemu-kvm libvirt virt-install bridge-utils virt-manager

  • qemu-kvm:KVM与QEMU的结合,KVM负责CPU+内存虚拟化,QEMU负责其他IO设备虚拟化
  • libvirt:用于虚拟化平台的开源API,后台程序和管理工具,可用于管理KVM,Xen,VMware ESX,QEMU等
  • virt-install:virt-install是一个命令行工具,它能够为KVM,Xen或其他支持libvrit API的pypervisor创建虚拟机并安装
  • bridge-utils:Linux网桥工具
  • virt-manager:virt-manager是一套虚拟化的桌面管理器,像Vmware的vCenter和XenCenter相似

[root@localhost ~]# systemctl start libvirtd         ##启动libvirtd服务

扫描二维码关注公众号,回复: 7657404 查看本文章

[root@localhost ~]# systemctl enable libvirtd     ##设置libvirtd服务开机自启动

STEP4:安装图形化界面(如果你已经是图形化,自然就不需要安装了)

[root@localhost network-scripts]# yum groupinstall -y "Server with GUI"


修改网卡参数

STEP1:将你的Centos7虚拟机的网卡设置到桥接模式,将ifcfg-ens33网卡参数修改至下图

##很多文章的网卡都不一样比如eth0,enp5s0,ens37等等,命名不一样,但修改的东西不要搞错,是你桥接出去的那块网卡

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# vim ifcfg-ens33

TYPE=Ethernet

DEVICE=ens33

ONBOOT=yes

BRIDGE=br0                             ##之后你那块桥接网卡叫什么名字这里就是什么名字

STEP2:创建br0网卡并配置如下参数

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# vim ifcfg-br0

TYPE=Bridge

BOOTPROTO=none

IPADDR=192.168.100.100

PREFIX=24

GATEWAY=192.168.100.1

DEVICE=br0

ONBOOT=yes

STEP3:重启网络服务

[root@localhost network-scripts]# systemctl restart network

STEP4:使用ifconfig查看当前系统网络配置

[root@localhost network-scripts]# ifconfig

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::20c:29ff:fe0c:3a7e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0c:3a:7e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 740 (740.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:0c:3a:7e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21  bytes 1612 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


新硬盘分区并挂载

STEP1:使用lsblk命令查看新硬盘在/dev文件中的位置

[root@localhost network-scripts]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   80G  0 disk 
sr0              11:0    1  4.3G  0 rom  /mnt/cdrom

STEP2:使用fdisk工具对其进行分区(简单点操作的话,到了p那步之后一直回车就好了)

[root@localhost network-scripts]# fdisk /dev/sdb

Command (m for help): n

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p

Command (m for help): w

STEP3:使用fdisk -l查看分区情况

[root@localhost network-scripts]# fdisk -l

Disk /dev/sdb: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x448fe9a7

Device Boot         Start         End           Blocks       Id    System
/dev/sdb1            2048   167772159    83885056   83     Linux

STEP4:使用mkfs命令,为分区写入文件系统

[root@localhost network-scripts]# mkfs -t ext3 /dev/sdb1

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

STEP5:在根目录创建目录(挂载点)并将分区挂载

[root@localhost network-scripts]# mkdir /sdb1

[root@localhost network-scripts]# mount /dev/sdb1 /sdb1


将Centos7的ISO镜像上传至KVM

STEP1:在根目录创建/iso目录用于存放iso文件

[root@localhost network-scripts]# mkdir /iso

STEP2:使用任何方法将Centos7镜像上传至/iso

[root@localhost /]# ls /iso

CentOS-7-x86_64-DVD-1810.iso


创建KVM虚拟机

STEP1:打开图形化界面(如果已经是图形化界面的请跳过这步)

[root@localhost network-scripts]#startx

STEP2:在左上角“Applications”--->“system tools”--->”Virtual Machine Manager“(打开KVM管理工具)

STEP3:点击左上角“File"--->"New Virtual Machine"(新建虚拟机)

STEP4:到这一界面后,选择第一个(因为ISO在本地),然后forward(下一步)

下图四个选项分别意为:

  • Local Install Media (ISO image or CDROM):本地安装介质(ISO映像或光驱)
  • Network Install (HTTP,FTP ,or NFS):网络安装(HTTP,FTP,NFS)
  • Network Boot (PXE):网络引导
  • import existing disk image:导入现有磁盘映像

STEP5:到此界面点击”Browse“--->点击左下角的”+“号---取名为”iso“,类型选择为”dir“--->路径选择为”/iso"

STEP6:选择刚刚上传的镜像,双击即可

STEP7:选择完成后,依然“Forward”即可

STEP8:分配的内存大小与CPU数量,点击”Forward“

STEP9:在分配磁盘大小时,选择”Select or create custom storage“(选择或创建自定义存储)(如果你的系统空间管够,就选择第一个,然后直接跳到STEP12即可)

STEP10:点击左下角”+“--->取名为”KVMDisk“--->路径设置为“/sdb1”--->点击“Finish”完成

STEP11:选择刚刚创建的KVMDisk--->点击中间的”+”--->取名为“Centos7-1”--->点击“Finish”--->点击"Choose Volume"

STEP12:在这里选择刚刚创建的桥接网卡(br0)

STEP13:到此为止基本就完成了,就可以装系统了


使用命令行创建虚拟机

STEP1:安装所需的软件

[root@localhost sdb1]# yum install virt-viewer

STEP2:输入下框命令,环境继续使用上面的即可(因为下面的实验将基于上面的环境)

[root@localhost sdb1]# virt-install -n centos7-5 -r 1024 \

--disk /sdb1/centos7-5.qcow2,size=10 \

--network bridge=br0 --os-type=linux --os-variant=CentOS7.0 \

--cdrom /iso/CentOS-7-x86_64-DVD-1810.iso \

--graphics vnc,port=5955,listen='0.0.0.0',password='abc.123'


对命令进行逐一解释:

  • -n centos7-5:-n [name]     为创建的虚拟机名称
  • -r 1024:-r [size]                 为虚拟机分配的内存大小(单位MB)
  • --disk /sdb1/centos7-5.qcow2:--disk [/path/name]       将虚拟机的磁盘文件建在目标位置,后缀为raw | qcow2 | qed
  • size=10:--disk后面,给虚拟机分配多少存储空间(单位G)
  • --network bridge=br0:选择网卡为桥接网卡br0
  • --os-type=linux:选择操作系统类型
  • --os-variant=CentOS7.0:选择操作系统发行版(要打全对,打错在之后会报错)
  • --cdrom /iso/CentOS-7-x86_64-DVD-1810.iso:操作系统ISO所在路径
  • --graphics vnc,port=5955:设置VNC服务端的端口为5955
  • listen='0.0.0.0':跟在vnc参数后,指侦听在哪块网卡上
  • password='abc.123':VNC客户端访问服务端的密码

STEP3:可以使用ss命令查看本地的vnc端口开启状态

[root@localhost sdb1]# ss -tunlp | grep 5955
tcp    LISTEN     0      1         *:5955                  *:*                   users:(("qemu-kvm",pid=49026,fd=18))

STEP4:使用VNC客户端连接桥接网卡IP:5955即可(不做演示了)


virt系列命令列表

命令形式 作用
virt-install 用于创建虚拟机,详细命令可查阅相关手册
virsh list --all 查看所有虚拟机

virsh start name

启用名为name的虚拟机

virsh destroy name

停用名为name的虚拟机
virsh undefine name 删除名为name的虚拟机
virsh console name 连接到名为name的虚拟机的控制台

☆附注1:如果在图形化界面创建虚拟机时,出现如下报错:

  • 原因:libvirtd调用紫禁城dmidecode超时无法响应,可能和Vmware的兼容性有关
  • 解决方法:killall dmidecode,在结束掉dmidecode进程后,KVM随即恢复正常

猜你喜欢

转载自blog.csdn.net/qq_40478570/article/details/102698840