KVM 配置步骤
(一) 准备工作
1.关闭selinux
临时关闭
setenforce 0 临时关闭SELinux
setenforce 1 临时开启SELinux
getenforce 查看当前状态命令
sestatus 命令的作用是可以查看系统运行SELinux的状态
vi /etc/sysconfig/selinux 永久关闭SELinux需修改配置文件
永久关闭SELinux需修改配置文件:vi /etc/sysconfig/selinux
,修改 SELINUX=disabled。
代码示例:
# 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 将原来的enforcing改为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
注意:修改SELinux永久关闭,必须重启服务器,才能生效。
永久关闭后,不能通过 setenforce 1 命令临时打开了
关闭NetworkManager
systemctl stop NetworkManager 关闭NetworkManager
(centos7 network和NetworkManager可能会冲突)
systemctl disable NetworkManager 设置开机不启动
systemctl 查看
2 修改宿主机 hostname
hostnamectl set-hostname kvmbase
重新登陆后生效
3 修改 ip 地址(查看自己宿主机网段 例 宿主机网段 192.168.1.0 kvm 宿主机 IP 地址指定
192.168.1.100)
systemctl stop NetworkManager 关闭 NetworkManager(centos7 network 和 NetworkManager
可能会冲突)
systemctl disable NetworkManager 设置开机服务不启动
ip addr 查看 自己网卡名称 如网卡名称 ens33
修改 kvm 宿主机 ip 地址为 192.168.1.100
vi /etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=yes
BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
wq 保存退出
systemctl restart network 重启 network 服务
ip addr 验证 ip 地址是否修改成功
4 建立本地 yum 源 建立本地挂载点
mkdir /mnt/cdrom 挂载光盘
mount /dev/cdrom /mnt/cdrom
配置 yum 源文件
cd /etc/yum.repo.d
mv CentOS-Base.repo CentOS-Base.repo.bak mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
vi CentOS-Media.repo baseurl=file:///mnt/cdrom/
# file:///media/cdrom/
# file:///media/cdrecorder/ gpgcheck=1
enabled=1 wq 保存退出
yum clean all
yum makecache
5 安装 net-tools (可运行 ifconfig/route/netstat 等网络指令)
yum install net-tools -y
安装完成后
ifconfig 验证安装是否成功
6 挂载磁盘
fdisk -l
找到未分区的磁盘(例如 sdb) fdisk /dev/sdb
n (新建分区)
p (主分区) 默认-默认 (大小) w (写保存)
fdisk -l 查看分区情况
mkfs.xfs /dev/sdb1 格式新建分区 mkdir /kvm 新建分区挂在点 mount /dev/sdb1 /kvm 挂在磁盘
vi /etc/fstab 修改配置文件 开机自动挂载
7 安装 kvm 相关工具
yum install virt* libvirt* qemu-kvm
8 设置 libvritd 开机自启动并且启动服务
systemctl start libvirtd systemctl enable libvirtd
9 重启
reboot/shutdown -r now
10 上传宿主机 CentOS 安装 iso 至 kvm 宿主机/kvm 文件夹下
sftp root@192.168.182.230 put iso
11 firewalld 打开 vnc 5900 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
systemctl disable firewalld 关闭firewalld服务(重启后生效)
systemctl stop firewalld 本次关闭
systemctl status firewalld 查看防火墙状态
(二) 安装虚拟机 centos01
1 使用 qemu-img 虚拟机 centos01 磁盘文件
qemu-img create -f qcow2 centos01.qcow2 5G 安装虚拟机
virt-install \
--virt-type kvm \
--name centos01 \
--memory 2048 \
--vcpus=2 \
--cdrom=/mnt/data/CentOS-7-x86_64-DVD-2009.iso \
--disk path=/mnt/data/centos01.qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole\
输入virsh进入工具
start centos01 开启虚拟机
stop centos01 关闭虚拟机
vncdisplay centos01 查看vnc端口
1、查看运行的虚拟机
# virsh list
查看所有的虚拟机(关闭和运行的,不包括摧毁的)
# virsh list --all
2.、启动虚拟机
# virsh start 虚拟机名称
虚拟机随物理机启动而启动
# virsh autostart 虚拟机名称
3、连接虚拟机
# virsh console 虚拟机名称
4、退出虚拟机
快捷键: ctrl+]
5、关闭虚拟机
virsh shutdown 虚拟机名称
#前提虚拟机需要(安装acpid服务)
yum install -y acpid
/etc/init.d/acpid start
6、在virsh list中删除该虚拟机
virsh destroy 虚拟机名称
7、彻底删除虚拟机
#解除标记
virsh undefine 虚拟机名称
然后删除虚拟机存储所在的位置
virsh suspend 虚拟机名称 #挂起
virsh resume 虚拟机名称 #恢复被挂起的
2.5 如果错过了安装时间 进入 centos 自检 需要强制虚拟机关机
virsh destroy centos01
修改虚拟机配置文件:从光盘启动,并配置光盘镜像
virsh edit centos01
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='cdrom'/>
</os>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/kvm/CentOS-7-x86_64-DVD-1908.iso'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
3 安装完成后 进入虚拟机开启 ttyS0 服务,使 kvm 宿主机可通过 virsh console centos01 控制虚拟机
使 kvm 宿主机可通过 virsh console centos01 控制虚拟机
virsh console centos01
systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service;
4 virsh console centos01 进入虚拟机
5 开启网卡
测试 nat 模式 是否能 ping 通 vicbr0 地址 192.168.122.1 以及宿主机网关 192.168.1.1 (三) kvm 虚拟机与 kvm 宿主机连接方式为网桥模式
1 复制 kvm 宿主机网卡配置文件为 ifcfg-br0 cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-br0
2 编辑 ifcfg-ens33 网卡配置文件
TYPE=Ethernet
#PROXY_METHOD=none
#BROWSER_ONLY=no
#BOOTPROTO=static
#DEFROUTE=yes
#IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_FAILURE_FATAL=no
#IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33
#UUID=dcd7c36e-892c-4889-96d9-b196846d60a0 DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.1.100
#NETMASK=255.255.255.0
#GATEWAY=192.168.1.1
#DNS=192.168.1.1 BRIDGE=br0
3 编辑 ifcfg-br0 网桥配置文件
TYPE=Bridge
#PROXY_METHOD=none
#BROWSER_ONLY=no
BOOTPROTO=static DEFROUTE=yes
#IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_FAILURE_FATAL=no
#IPV6_ADDR_GEN_MODE=stable-privacy NAME=br0
#UUID=dcd7c36e-892c-4889-96d9-b196846d60a0 DEVICE=br0
ONBOOT=yes
IPADDR=10.78.15.240
NETMASK=255.255.255.0
GATEWAY=10.78.15.1
DNS=10.120.35.13
4 重启网络服务
service network restart
5 查看 出口是否转移到 br0 [root@kvmbase network-scripts]# route -n
6 修改虚拟机配置文件 将 nat 改成网桥
virsh destroy centos01 virsh edit centos01
<interface type='bridge'>
<mac address='52:54:00:49:e5:07'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
virsh start centos01
7 查看 kvm 虚拟机网卡是否与 br0 关联
brctl show
[root@kvmbase network-scripts]# brctl show
bridge name bridge id STP enabled interfaces ens33
virbr0-nic
8 进入 kvm 虚拟机修改网卡地址与宿主机相同网段
9 检测 kvm 虚拟机是否 ping 通宿主机网段
克隆及迁移
克隆操作需要在目标虚拟机关机状态下进行
1完全克隆
virt-clone --auto-clone -o 目标虚拟机 -n 新虚拟机
2.链接克隆
1.链接克隆虚拟磁盘文件
qume-img create -f qcow2 -b 后备文件名称(被链接的文件)新文件名称 大小
2.复制虚拟机配置文件
进入/etc/libvirt/qemu/
找到一个已经被定义的虚拟机文件,复制一个新的虚拟机配置
vi编辑虚拟机配置
删除UUID及MAC地址信息
修改磁盘指定的虚拟磁盘文件路径
修改虚拟机名字
3.在virsh中定义虚拟机
使用define命令在virsh中定义虚拟机