一、安装KVM环境
1.1查看cpu是否支持虚拟化
```Bash
服务安装
查看机器是否支持虚拟化
# cat /proc/cpuinfo | egrep 'vmx|svm'
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d
[root@localhost /]#
```
1.2 安装KVM虚拟化软件
配置yum源(略)
# yum groupinstall "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y
# yum install -y qemu-kvm libvirt ###qemu-kvm用来创建虚拟机硬盘,libvirt用来管理虚拟机
# yum install -y virt-install ###用来创建虚拟机
1.3 启动服务
# systemctl start libvirtd
1.4虚拟机相关目录介绍
/etc/libvirt/storage #存储池配置文件存放位置
/etc/libvirt/qemu/ #虚拟机配置文件存放位置
/etc/libvirt/qemu/networks #虚拟网络配置文件存放位置
/var/lib/libvirt/images/ #虚拟磁盘文件存放位置(默认存储池)
图形管理器virt-manager命令方式安装虚拟机: virt-install
1.5 存储池
存储池(Storage pools)是放置虚拟机的存储位置,存储池可以建立在好几种方式的存储上,我们以基于目录为存储池来学习。
默认存储池位置: **/var/lib/libvirt/images/**
创建存储池(目录)[非必须]
1.图形方式: 编辑 → 连接详情 → 存储
2.命令方式:
# mkdir -p /kvm/disk
定义存储池
# virsh pool-define-as vmdisk --type dir --target /kvm/disk
查看已定义的存储池
# virsh pool-list --all
激活并自动启动已定义的存储池,存储池不激活无法使用。
# virsh pool-start vmdisk
# virsh pool-autostart vmdisk
这里vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。
1.6存储卷
存储卷(storage volume)指虚拟磁盘文件,可以理解为虚拟机的硬盘在存储池中创建虚拟机存储卷virsh命令:
创建存储卷:
# virsh vol-create-as vmdisk mini.qcow2 20G --format qcow2
查看存储卷:
# virsh vol-list vmdisk
名称 路径
----------------------------------------------------------------------------
mini.qcow2 /kvm/disk/mini.qcow2
qemu命令(不会被存储池管理)
qemu-img create -f qcow2 /var/lib/libvirt/images/mini.qcow2 20G
注1:KVM存储池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池
注2:KVM存储池也要用于虚拟机迁移任务。
存储池相关管理命令
取消激活存储池
# virsh pool-destroy vmdisk
取消定义存储池
# virsh pool-undefine vmdisk
创建存储卷:
virsh vol-create-as vmdisk pw01.qcow2 20G --format qcow2
virsh vol-create-as vmdisk pw02.qcow2 20G --format qcow2
virsh vol-create-as vmdisk pw03.qcow2 20G --format qcow2
1.7网络
KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。 NAT--用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机。** Bridge--虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。**
Bridge方式
Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。
配置:
1、编辑修改网络设备脚本文件,增加网桥设备br0 # vim /etc/sysconfig/network-scripts/ifcfg-br0
NAT方式(默认)
NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
修改NAT网络例:将default网络的dhcp功能关闭修改网络配置文件
重启default网络
virsh net-destroy default #关闭default网络
virsh net-start default #启动default网络
1.创建NAT网络: 1). 图形方法:
2). 命令方法:
# cd /etc/libvirt/qemu/networks/
# cp default.xml nat-20.xml
查看网络:
# virsh net-list --all
# virsh net-define /etc/libvirt/qemu/networks/nat-20.xml
# virsh net-autostart nat-20
#查看默认网络配置
[root@localhost /]# cat /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>default</name>
<uuid>6c3bded3-6b84-49bc-843a-f56c4cae550e</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:0b:1e:32'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
[root@localhost /]#
二、通过KVM安装1台虚拟机并克隆2台
2.1虚拟机安装
virt-install \
--name=pw01 \
--memory=3072,maxmemory=3072 \
--vcpus=1,maxvcpus=2 \
--os-type=linux \
--os-variant=rhel7 \
--location=/home/CentOS-7-x86_64-DVD-2009.iso \
--disk /kvm/disk/pw01.qcow2,size=20,format=qcow2,bus=scsi \
--network network=default \
--graphics=none \
--console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"
命令解释:
--name:指定虚拟机的名称。
--memory:指定分配给虚拟机的内存资源大小。
maxmemory:指定可调节的最大内存资源大小,因为 KVM 支持热调整虚 拟机的资源。
--vcpus:指定分配给虚拟机的 CPU 核心数量。
maxvcpus:指定可调节的最大 CPU 核心数量。
--os-type:指定虚拟机安装的操作系统类型。
--os-variant:指定系统的发行版本。
--location:指定 ISO 镜像文件所在的路径,支持使用网络资源路径,也就 是说可以使用 URL。
--disk path:指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可 用大小,单位是 G。
--bridge:指定使用哪一个桥接网卡,也就是说使用桥接的网络模式。
--graphics:指定是否开启图形。
--console:定义终端的属性,target_type 则是定义终端的类型。
--extra-args:定义终端额外的参数。
安装完成后出现以下界面, 这是系统基础设 置,带[!]基本都是需要配置的,接下来我们开始配置“Timezone settings”,输 入“2”,按 Enter 键
2.2 虚拟机常用命令
virsh list --all #查看虚拟机列表
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
4 pw01 running
[root@localhost ~]#
virsh console pw01 #进入指定虚拟机
[root@localhost ~]# virsh console pw01
连接到域 pw01
换码符为 ^]
[root@pw01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 8.9M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 3.9G 14G 23% /
/dev/sda1 1014M 172M 843M 17% /boot
tmpfs 301M 0 301M 0% /run/user/0
[root@pw01 ~]#
ctrl+] #退出console
vrish常用的命令
virsh shutdown test #关闭虚拟机
virsh start test #开启虚拟机
virsh destroy test #类似 stop,这个是强制停止
virsh undefine test #彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all 就看不到
virsh autostart test #宿主机开机该虚拟机也开机
virsh autostart --disable test #解除开机启动
virsh suspend test #挂起
virsh resume test #恢复
2.3克隆虚拟机
克隆虚拟机之前,要先关闭虚拟机。
克隆虚拟机的语法
virt-clone --original test --name test02 --file
#--original test: 用于指定原始虚拟机的名称。在这里,test 是您希望克隆的原始虚拟机的名称。
--name test02: 用于指定新创建的克隆虚拟机的名称。在这里,test02 是您希望为克隆虚拟机设置的新名称。
--file <目标磁盘文件>: 用于指定新创建的克隆虚拟机的目标磁盘文件路径。在这里,您需要提供一个目标磁盘文件的路径,该文件将用于存储克隆虚拟机的磁盘镜像。
virsh shutdown pw01
virt-clone --original pw01 --name pw02 --file /kvm/disk/pw02.img
virt-clone --original pw01 --name pw03 --file /kvm/disk/pw03.img
[root@localhost ~]# virt-clone --original pw01 --name pw02 --file /kvm/disk/pw02.img
正在分配 'pw02.img' | 20 GB 00:00:05
成功克隆 'pw02'。
[root@localhost ~]#
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- pw01 关闭
- pw02 关闭
[root@localhost ~]#
2.4 端口映射
在kvm中新建的虚拟机使用NAT网络时, 把虚拟机端口映射到宿主机上,使通过公网可访问虚拟机端口
添加相应的iptables策略:
添加filter 表的forward链
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
添加nat 表的prerouting链, 例: 公网2538端口映射到虚拟机192.168.122.199的22端口
iptables -t nat -I PREROUTING -p tcp --dport 22101 -j DNAT --to-destination 192.168.122.101:22
iptables -t nat -I PREROUTING -p tcp --dport 22102 -j DNAT --to-destination 192.168.122.102:22
iptables -t nat -I PREROUTING -p tcp --dport 22103 -j DNAT --to-destination 192.168.122.103:22
iptables -t nat -I PREROUTING -p tcp --dport 22110 -j DNAT --to-destination 192.168.122.110:17700
#查看一下策略还在不在
iptables -L -n -t nat|grep 2210
[root@localhost ~]# iptables -L -n -t nat|grep 221
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22103 to:192.168.122.103:22
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22102 to:192.168.122.102:22
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22101 to:192.168.122.101:22
[root@localhost ~]#
以上准备工作完成,可以进行下一步磐维数据库的安装
三、通过PTK方式安装磐维2.0数据库
待补充