KVM # centos7-mini化-kvm图形化安装系统

KVM 部署与使用

1、系统配置

[root@kvm01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@kvm01 ~]# uname -r
3.10.0-693.el7.x86_64
[root@kvm01 ~]# sestatus 
SELinux status:                 disabled
[root@kvm01 ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@kvm01 ~]# hostname -I
172.16.1.240 10.0.0.240
# kvm主机内存不能低于4GB

2、KVM 环境准备

1、基础配置
  • 必须跑在 x86 系统的架构上

  • 必须支持硬件级虚拟化

    • vmx: Intel VT-x
    • svm: AMD AMD-v
  • 虚拟机上再虚拟化,需开启虚拟化 Intel VT-x/EPT
    在这里插入图片描述
    2、判断CPU是否支持硬件虚拟化:

[root@kvm01 ~]# grep -i -E '(vmx|svm|lm)' /proc/cpuinfo

注意:vmx 或 svm 必须出现一个,表示是支持的

  • vmx: Intel VT-x
  • svm: AMD AMD-v
    在这里插入图片描述
    3、安装前准备
modprobe kvm
yum install libvirt* virt-* qemu-kvm* -y
systemctl start libvirtd.service && systemctl enable libvirtd.service
创建物理桥桥接接口br0(注意:使用网络安装的时候创建)

**注意:执行以下命令请备份网卡配置文

[root@kvm01 ~]# virsh iface-bridge eth0 br0

在这里插入图片描述

  • 分析:把自己的物理网卡eth0 作为交换机,把br0 当网卡,提供IP,重启网络服务
  • 注意:命令可能会卡死或出错,终端被强制退出;等一会,在登录就OK 了
    -重启网卡报错,需修改网卡配置文件
    ================================================

br0桥接失败,解决方法

1、查看管理接口对应的网卡


[root@real-kk network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c2925897a       yes             ens37
docker0         8000.0242c4439567       no
virbr0          8000.525400c39b08       yes             virbr0-nic
                                                        vnet0

2、从交换机上把vnet网卡删除

[root@kvm-server ~]# brctl delif br0 ens37

3、添加vnet网卡添加到交换机上:

[root@kvm-server ~]# brctl addif br0 ens37
恢复正常

4、先将kvm虚拟机关闭

配置文件方式配置桥接:在宿主机上
[root@kvm-server ~]# ip a   #先找出宿主机用的哪个网卡设备,我的是enp0s25
[root@kvm-server ~]# cd /etc/sysconfig/network-scripts/
1.定义网卡配置文件
[root@kvm-server network-scripts]# vim ifcfg-br0    #创建该桥接网卡,默认没有此文件需要新建
[root@kvm-server network-scripts]# cat ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=10.11.67.188   #要和宿主机在一个网络,这里我用的是宿主机的ip
GATEWAY=10.11.67.1    #宿主的网关,nat的是.2,桥接是.1
NETMASK=255.255.255.0
DNS1=114.144.144.144
DNS2=8.8.8.8

然后看清楚宿主机正在使用的网卡,修改配置文件,(将物理机网卡桥到桥接网卡)
[root@kvm-server network-scripts]# cp ifcfg-ens37 ifcfg-ens37.back
[root@kvm-server network-scripts]# vim ifcfg-ens37
NAME=ens37   #定义网卡设备名称
DEVICE=ens37   #宿主机正在使用的网卡设备
ONBOOT=yes
BRIDGE=br0     #和ifcfg-br0文件里面的设备对应,新添加
2.重启libvirtd服务
[root@kvm-server network-scripts]# systemctl restart libvirtd 
3.重启network服务 
[root@kvm-server network-scripts]# systemctl restart network 
重启network报错则删除桥接重新添加即可
brctl delif br0 ens37
brctl addif br0 ens37
ystemctl restart libvirtd
systemctl restart network

===================================================
4、图形化工具创建虚拟机

[root@kvm01 ~]# virt-manager
注意:这个命令需在支持图形化界面的机器才能执行, 用其他机器 ssh -X 连接,再执行

5、安装VNC软件

[root@kvm01 ~]# yum -y install tightvnc
[root@kvm01 ~]# vncviewer

请使用MobaXterm终端运行、XSHELL需付费插件、Finalshell无法打开

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、使用命令安装

[root@localhost network-scripts]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7-clone --memory 1024 --vcpus 2 --disk /data/centos7-clone.qcow2,format=qcow2,size=20 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole

注意: 需要先将镜像文件拷贝到 /opt/CentOS-7-x86_64-DVD-1810.iso

#创建20G的qcow2
qemu-img create -f qcow2 /data/kvm-1.qcow2 20G
#创建新的虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name kvm-1 --memory 1024 --vcpus 2 --disk /data/kvm-1.qcow2,format=qcow2 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole

在这里插入图片描述

使用vnc连接虚拟机安装系统
[root@kvm01 ~]# vncviewer

在这里插入图片描述
在这里插入图片描述

==================================================

kvm安装完毕
命令管理
virsh list                                   # 显示本地活动虚拟机
virsh list –all                              # 显示本地所有的虚拟机(活动的+不活动的)
virsh define eden7.xml                       # 通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start eden7                            # 启动名字为ubuntu的非活动虚拟机
virsh create eden7.xml                       # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend eden7                          # 暂停虚拟机
virsh resume eden7                           # 启动暂停的虚拟机
virsh shutdown eden7                         # 正常关闭虚拟机
virsh destroy eden7                          # 强制关闭虚拟机
virsh dominfo ubuneden7tu                    # 显示虚拟机的基本信息
virsh domname 2                              # 显示id号为2的虚拟机名
virsh domid eden7                            # 显示虚拟机id号
virsh domuuid eden7                          # 显示虚拟机的uuid
virsh domstate eden7                         # 显示虚拟机的当前状态
virsh dumpxml eden7                          # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem eden7 512000                    # 给不活动虚拟机设置内存大小
virsh setvcpus eden7 4                       # 给不活动虚拟机设置cpu个数
virsh edit eden7                             # 编辑配置文件(一般是在刚定义完虚拟机之后)
启动
[root@kvm-server ~]# virsh start vm2
域 vm2 已开始

暂停虚拟机:
[root@kvm-server ~]# virsh suspend vm_name
域 vm2 被挂起

恢复虚拟机:
[root@kvm-server ~]# virsh resume vm_name
域 vm2 被重新恢复

关闭:
方法1:
[root@kvm-server ~]# virsh shutdown vm3
域 vm3 被关闭
    
方法2:
[root@kvm-server ~]# virsh destroy vm3

重启:
[root@kvm-server ~]# virsh reboot vm3
域 vm3 正在被重新启动

重置:
[root@kvm-server ~]# virsh reset vm3   #断电重启。速度快
Domain vm3 was reset

删除虚拟机:
[root@kvm-server ~]# virsh undefine vm2
Domain vm2 has been undefined
注意:虚拟机在开启的情况下undefine是无法删除的只是将配置文件删除了,不能删除磁盘文件。需要手动rm
======================

虚拟机开机自动启动:
#如果虚拟机开机自启,里面的服务应该设置的有开机自启,不然没有意义
[root@kvm-server ~]# virsh autostart vm_name
域 vm3标记为自动开始

[root@kvm-server ~]# ls /etc/libvirt/qemu/autostart/     //此目录默认不存在,在有开机启动的虚拟机时自动创建
vm3.xml

关闭开机启动
[root@kvm-server ~]# virsh autostart --disable vm_name
域 vm3取消标记为自动开始
[root@kvm-server ~]# ls /etc/libvirt/qemu/autostart/

如何查看已启动的虚拟机ip地址
假如vm3虚拟机已启动
[root@kvm-server ~]# virsh domifaddr vm3
 名称     MAC 地址           Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:82:d6:3c    ipv4         192.168.122.85/24



[root@kvm-server ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm4-1.qcow2 5G
注:创建空的磁盘文件:这里我们创建一个5G的磁盘,不过创建出来,通过ll -h查看大小,看不出它是5G,添加上之后才能看到
克隆虚拟机
2.在终端执行命令克隆
[root@kvm-server ~]# virt-clone -o vm2 --auto-clone
正在分配 'vm2-clone.qcow2'                              | 5.0 GB  00:00     
成功克隆 'vm2-clone'。
-o       origin-原始
    
[root@kvm-server ~]# virt-clone -o vm2 -n vm5 --auto-clone
正在分配 'vm5.qcow2'                                    | 5.0 GB  00:00     
成功克隆 'vm5'。
-n :指定新客户机的名字
        
[root@kvm-server ~]# virt-clone -o vm2 -n vm6 -f /var/lib/libvirt/images/vm6.img 
正在分配 'vm6.img'                                      | 5.0 GB  00:00     
成功克隆 'vm6'。
-f ,--file NEW_DISKFILE:为新客户机使用新的磁盘镜像文件

这条命令在克隆的同时,可以指定镜像文件的位置和名称。

[root@kvm-server ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     vm2                            关闭
 -     vm2-clone                      关闭
 -     vm3                            关闭
 -     vm5                            关闭
 -     vm6                            关闭
kvm高级命令
#建立虚拟机磁盘镜像文件:
磁盘镜像文件格式:
    1.qed  ----不用了
    2.raw     原始格式,性能最好 直接占用你一开始给多少 系统就占多少 不支持快照
    qcow  先去网上了解一下cow(写时拷贝copy on write) ,性能远不能和raw相比,所以很快夭折了,所以出现了qcow2(性能低下 早就被抛弃)
    3.qcow2 性能上还是不如raw,但是raw不支持快照,qcow2支持快照。

#什么叫写时拷贝?
raw立刻分配空间,不管你有没有用到那么多空间
qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费

工作当中用哪个?看你用不用快照。本身做快照也是需要存储空间的。

[root@kvm-server images]# pwd
/var/lib/libvirt/images

建立qcow2格式磁盘文件:
[root@kvm-server images]# qemu-img create -f qcow2 test.img 5G
Formatting 'test.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off 

qemu-kvm  qemu是早先的一个模拟器,kvm是基于qemu发展出来的。

建立raw格式磁盘文件:
[root@kvm-server images]# qemu-img create -f raw test.raw 5G
Formatting 'test.raw', fmt=raw size=5368709120 

查看已经创建的虚拟磁盘文件:
[root@kvm-server images]# qemu-img info test.img 
[root@kvm-server images]# qemu-img info test.raw 

=============================================================================
#挂载磁盘,,,先前条件:文件系统没有坏掉

将vm2虚拟机先关闭
查看vm2的磁盘镜像分区信息:
[root@kvm-server images]# virt-df -h -d vm2
文件系统                                  大小      已用空间    可用空间     使用百分比%
vm2:/dev/sda1                            1014M        92M       922M         10%
vm2:/dev/centos/root                      3.5G       863M       2.6G         25%

1.创建一个挂载目录
[root@kvm-server images]# mkdir /test
2.挂载虚拟机的跟分区到test目录
[root@kvm-server images]# guestmount -d vm2 -m /dev/centos/root --rw /test/
[root@kvm-server images]# cd /test/
[root@kvm-server test]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[root@kvm-server test]# cat etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

取消挂载
[root@kvm-server ~]# guestunmount /test
删除桥接网卡步骤:
删除桥接网卡步骤:
1.删除br0的配置文件
2.修改正常网卡的配置文件
3.重启系统

[root@kvm-server network-scripts]# mv ifcfg-br0 ifcfg-br0.bak
[root@kvm-server network-scripts]# mv ifcfg-enp0s25 ifcfg-enp0s25.bak
[root@kvm-server network-scripts]# mv ifcfg-enp0s25.back ifcfg-enp0s25
[root@kvm-server network-scripts]# systemctl restart libvirtd
[root@kvm-server network-scripts]# systemctl restart network
[root@kvm-server network-scripts]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=13.3 ms
备份恢复虚拟机
1、备份虚拟机配置(关机时备份)
[root@kvm01 ~]# virsh dumpxml centos7  > centos7.xml
2、删除虚拟机配置
# 查看
[root@kvm01 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
 -     centos7                        关闭
 # 删除
[root@kvm01 ~]# virsh undefine centos7 
# 域 centos7 已经被取消定义
[root@kvm01 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
3、导入虚拟机
# 导入
[root@kvm01 ~]# virsh define centos7-off.xml 
定义域 centos7(从 centos7-off.xml)
# 查看
[root@kvm01 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
 -     centos7                        关闭
4、修改虚拟机名称(重命名)
[root@kvm01 ~]# virsh domrename centos7 eden7
Domain successfully renamed
# 查看
[root@kvm01 ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 9     eden7                          关闭
5、虚拟机挂起与恢复
1、挂起虚拟机
[root@kvm01 ~]# virsh suspend eden7
  • 查看状态
[root@kvm01 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 9     eden7                          暂停
2、恢复虚拟机
[root@kvm01 ~]# virsh resume eden7 
# 域 eden7 被重新恢复
6、查询虚拟机vnc端口
[root@kvm01 ~]# virsh vncdisplay eden7 
:0  
# :0 即 为 5900 端口,以此类推 :1为5901 。
7、开机自启动设置
# 设置 libvirtd 服务开机自启动。
[root@kvm01 ~]# systemctl enabled libvirtd.service 
enabled
1、设置宿主机开机虚拟机在其他
[root@kvm01 ~]# virsh autostart eden7 
# 域 eden7标记为自动开始
# 实质为创建软连接
[root@kvm01 ~]# ll /etc/libvirt/qemu/autostart/eden7.xml 
lrwxrwxrwx 1 root root 27 1月  22 12:17 /etc/libvirt/qemu/autostart/eden7.xml -> /etc/libvirt/qemu/eden7.xml
2、取消开机自启动
[root@kvm01 ~]# virsh autostart --disable eden7 
# 域 eden7取消标记为自动开始
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值