虚拟化
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化技术分为全虚拟化和半虚拟化
。
全虚拟化:
虚拟机上的操作系统通过Hypervisor(VMM)管理器来翻译指令,该过程比较耗费资源。
半虚拟化:
通过修改操作系统内核,使得操作系统可以直接使用CPU资源,而不需要翻译指令,从而节省资源。准虚拟化(para-virtualization)Xen:
改动客户端操作系统,让它以为自己运行在虚拟环境下,能够与Hypervisor 协同工作。
虚拟化架构
Hypervisor直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的Linux系统。Xen和VMWare的ESXi 都属于这个类型。
物理机上首先安装常规的操作系统,比如 RedHat、Ubuntu和Windows。Hypervisor作为OS上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox和 VMWare Workstation 都属于这个类型。
KVM简介
KVM(Kernel-Based Virtual Machines)是一个基于Linux内核的虚拟化技术, 可以直接将Linux内核转换为Hypervisor(系统管理程序)从而使得Linux内核能够直接管理虚拟机, 直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机
。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。
KVM架构
一、安装kvm
(一)调整虚拟机
虚拟机内存,至少设置成2G,cpu2核,虚拟化引擎勾选前两个,镜像选择1511
添加一块50G的磁盘
虚拟网络编辑器勾选使用本地dhcp分配
(二)查看参数并更改主机名
free -h
grep -Ei 'vmx|svm' /proc/cpuinfo //检查CPU是否开启虚拟化支持
//vmx为英特尔的cpu;svm为AMD的cpu。
//如果显示为空,就要检查你虚拟机设置。
hostnamectl set-hostname kvm
(三)格式化并挂载新磁盘
lsblk //查看虚拟机是否新增一块50 GB的磁盘
mkfs.ext4 /dev/sdb //格式化磁盘
blkid /dev/sdb //查看磁盘信息
mkdir /kvm_data //创建挂载目录/kvm_data
mount /dev/sdb/ /kvm_data //挂载磁盘
将磁盘添加到自动挂载/etc/fstab
文件中:
/dev/sdb /kvm_data ext4 defaults 0 0
[root@kvm ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Feb 2 22:22:18 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=d7f8cd9b-eff5-4f50-a8dc-5195db4bfe21 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb /kvm_data ext4 defaults 0 0
(四)关闭防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
关闭SELinux,编辑/etc/selinux/config,将enforcing修改为disabled
[root@kvm ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
(五)重启虚拟机后安装kvm
reboot
yum install -y virt-* libvirt bridge-utils qemu-img
(六)配置网卡
cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# cp ifcfg-eno16777728 ifcfg-br0
[root@kvm network-scripts]# vi ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.200.66
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@kvm network-scripts]# vi ifcfg-eno16777728
TYPE=Ethernet
BOOTPROTO=static
NAME=eno16777728
DEVICE=eno16777728
ONBOOT=yes
BRIDGE=br0
systemctl restart network
查看网卡信息
[root@kvm network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:0c:29:cd:bf:9a brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:cd:bf:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.200.66/24 brd 192.168.200.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::f8e8:17ff:fe24:efe8/64 scope link
valid_lft forever preferred_lft forever
(七)启动kvm相关服务
systemctl start libvirtd
检查是否成功启动
[root@kvm network-scripts]# ps -ef |grep libvirt
root 22041 1 0 00:21 ? 00:00:00 /usr/sbin/libvirtd
nobody 22149 1 0 00:21 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 22150 22149 0 00:21 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 22175 1491 0 00:22 pts/0 00:00:00 grep --color=auto libvirt
[root@kvm ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29cdbf9a no eno16777728
virbr0 8000.000000000000 yes
二、安装centos虚拟机
(一)将CentOS7-1511镜像上传到/tmp目录下
[root@kvm ~]# ll /tmp/
total 4228100
-rw-r--r-- 1 root root 4329570304 Nov 2 16:19 CentOS-7-x86_64-DVD-1511.iso
(二)安装centos7
yum -y update openssl
virt-install --name=test //--name:指定虚拟机的名称
--memory=512,maxmemory=1024 // --memory:指定分配给虚拟机的内存资源大小。maxmemory:指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源。
--vcpus=1,maxvcpus=2 //--vcpus:指定分配给虚拟机的CPU核心数量。 maxvcpus:指定可调节的最大CPU核心数量。
--os-type=linux //--os-type:指定虚拟机安装的操作系统类型。
--os-variant=rhel7 //-os-variant:指定系统的发行版本。
--location=/tmp/CentOS-7-x86_64-DVD-1511.iso //--location:指定ISO镜像文件所在的路径,支持URL
--disk path=/kvm_data/test.img,size=10 //--disk path:指定虚拟硬盘所存放的路径及名称,size则是指定该硬盘的可用大小,单位是G
--bridge=br0 //--bridge:指定使用哪一个桥接网卡
--graphics=none //--graphics:指定是否开启图形
--console=pty,target_type=serial //--console:定义终端的属性,target_type 则是定义终端的类型
--extra-args="console=tty0 console=ttyS0" //--extra-args:定义终端额外的参数
进入安装界面
anaconda 21.48.22.56-1 for CentOS 7 started.
* installation log files are stored in /tmp during the installation
* shell is available on TTY2
* when reporting a bug add logs from /tmp as separate text/plain attachments
16:34:00 Not asking for VNC because we don't have a network
==============================================================================================================================================================Installation
1) [x] Language settings 2) [!] Timezone settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]: 1 //输入1,回车
================================================================================
================================================================================
Language settings
Available languages
1) Afrikaans 25) Hindi 48) Oriya
2) Amharic 26) Croatian 49) Punjabi
3) Arabic 27) Hungarian 50) Polish
4) Assamese 28) Interlingua 51) Portuguese
5) Asturian 29) Indonesian 52) Romanian
6) Belarusian 30) Icelandic 53) Russian
7) Bulgarian 31) Italian 54