KVM-命令行安装

1、虚拟机的设置,然后开启虚拟机

在这里插入图片描述

2、系统环境的要求
关闭防火墙和seliunx
[root@ c7-41 ~]# systemctl stop firewalld
[root@ c7-41 ~]# systemctl disable firewalld
[root@ c7-41 ~]# setenforce 0
[root@ c7-41 ~]# sed -i  '/^SELINUX/s#enforcing#disabled#g' /etc/selinux/config
查看系统的设置
[root@ c7-41 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@ c7-41 ~]# uname -r
3.10.0-1062.el7.x86_64
[root@ c7-41 ~]# getenforce
Disabled

补充说明:
uname -r : 显示操作系统的发行版号。
uname -a :显示系统名、节点名称、操作系统的发行版号、内核版本等等。
getenforce:查看当前SELinux的运行模式。

查看CPU是否支持虚拟化
[root@ c7-41 ~]# egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx
检查cpu是否开启虚拟化
[root@ c7-41 ~]# dmesg | grep kvm
##如果什么也不出来就对了,出来kvm:disabled by blos,就是cpu没有开启虚拟化

补充说明:

Linux dmesg命令用于显示开机信息。
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

一、语法
dmesg [-cn][-s <缓冲区大小>]

安装KVM用户模块
[root@ c7-41 ~]# yum -y install qemu-kvm qemu-kvm-tools libvirt
##解释说明
##libvirt用来管理kvm
##kvm属于内核态,不需要安装。但是需要一些类似于依赖的
启动libvirt
[root@ c7-41 ~]# systemctl start libvirtd
[root@ c7-41 ~]# systemctl enable libvirtd
[root@ c7-41 ~]# systemctl status libvirtd
##启动之后我们可以使用ifconfig来查看,libvirtd已经为我们安装了一个桥接网卡
[root@ c7-41 ~]# ifconfig
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:9a:0e:e3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
创建虚拟机

1.准备虚拟机硬盘 2.需要一个系统iso镜像 3.需要安装一个vnc的客户端来连接

查看磁盘空间
[root@ c7-41 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 2.0G     0  2.0G   0% /dev
tmpfs                    2.0G     0  2.0G   0% /dev/shm
tmpfs                    2.0G   12M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root   27G  2.2G   25G   8% /
/dev/sda1               1014M  137M  878M  14% /boot
tmpfs                    394M     0  394M   0% /run/user/0
##磁盘空间必须大于20G
上传镜像

这里我们使用dd命令,复制系统的镜像,只需要挂载上光盘就可以了

[root@ c7-41 ~]# cd /opt/
[root@ c7-41 opt]# ls
CentOS-7-x86_64-Minimal-1810.iso
[root@ c7-41 opt]# dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-Minimal-1810.iso
9109504+0 records in
9109504+0 records out
4664066048 bytes (4.7 GB) copied, 227.7 s, 20.5 MB/s
##有点慢

补充说明:
dd是一个Unix和类Unix系统上的命令,主要功能为转换和复制文件。

创建磁盘

qemu-lmg软件包是我们安装qemu-kvm-tools依赖给安装上的

[root@ c7-41 opt]# qemu-img create -f qcow2 /opt/c73.qcow2 6G
[root@ c7-41 opt]# ll
total 4555144
-rw-r--r-- 1 root root     197120 May 13 14:31 c73.qcow2
-rw-r--r-- 1 root root 4664066048 May 13 14:28 CentOS-7-x86_64-Minimal-1810.iso
#解释说明
#-f制定虚拟机格式
#/opt/Centos 存放路径
# 6G代表镜像大小的

磁盘格式介绍
raw:指定多大就创建多大,直接占用指定大小的空间,用一个字来说就是裸,也就是赤裸裸,你随便dd一个file就模拟了一个raw格式的镜像。
qcow2,是openstack默认也是比较推荐的格式,将差异保存在一个文件,文件比较小而且做快照也比较小,空间是动态增长的
区别
qcow2 镜像抄格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像袭相比,有以下特性:
更小的空间占用,即使文件系统不支持空洞(holes);
支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化zd;
支持快照(snapshot),镜像文件能够包含多个快照的历史;
可选择基于 zlib 的压缩方式
可以选择 AES 加密

安装虚拟机
[root@ c7-41 opt]# yum -y install virt-install

[root@ c7-41 opt]# virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/c73.qcow2,size=6,format=qcow2

##默认连接端口是从5900开始的
[root@ c7-41 opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     c73                            running

[root@ c7-41 opt]# netstat -lntup | grep 5900
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      3032/qemu-kvm

virt-install 参数使用说明
https://blog.csdn.net/allison_ywt/article/details/51647980(借用一下,很详细)

VNC连接虚拟机

注意: 如果查看5900端口开启,但是vnc无法连接虚拟机时,看下防火墙是否开启,创建虚机用vnc连接是从默认端口5900开始
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虚拟机安装完成之后是关闭了,我们需要启动

[root@ c7-41 opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     c73                            shut off

[root@ c7-41 opt]# virsh start c73
[root@ c7-41 opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 2     c73                            running

c73是虚拟机的名字,是我们创建的时候定义的
在这里插入图片描述

常用的virsh管理命令

列出所有的虚拟机 virsh list --all
显示虚拟机信息 virsh dominfo c73
列出ID为6的虚拟机名 virsh domname 6
显示虚拟机内存和cpu的使用情况 apt-get install virt-top -y、virt-top
显示虚拟机分区信息 virt-df $hostname
关闭虚拟机 virsh shutdown c73
强制关闭虚拟机 virsh destroy c73
启动虚拟机 virsh start c73
设置虚拟机随系统自启 virsh autostart c73
关闭虚拟机随系统自启 virsh autostart --disable c73
删除虚拟机 virsh undefine c73
通过控制窗口登录虚拟机 virsh console c73
挂起$hostname虚拟机 virsh suspend c73 1
恢复挂起的虚拟机 virsh resume c73
查看网卡配置信息 virsh domiflist c73
查看该虚拟机的磁盘位置 virsh domblklist c73
查看KVM虚拟机当前配置 virsh dumpxml c73

–config, --live, --current

--config
 使用--config时,只会修改对应虚拟机的XML配置。这个配置直到虚拟机下一次启动时才会生效。注意,使用virsh reboot domain并不会让新的设置生效!
--live
当使--live时,客户机(就是虚拟机)必须是活动状态,配置会立即生效。可以看到,如果使--live时,客户机没有启动,系统会报错的。而且,这时并没有将配置写到虚拟机的XML配置中,即,在虚拟机下一次启动时,这个配置就没了。
如果hypervisor支持的话,可以同时使用--config 和 --live。
--current
使用 --current时,会根据当前客户机的状态来生效。这个说的有点隐晦,实际上就是说,当客户机处于关闭状态时,它等价--config;当客户机处于运行状态时,它等价于--live。

KVM桥接配置

在这里插入图片描述

[root@ c7-41 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.5254009a0ee3	yes		virbr0-nic

查看物理机网卡设备

[root@ c7-41 ~]# ifconfig virbr0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:9a:0e:e3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置桥接设备br0

[root@ c7-41 ~]# yum -y install bridge-utils
手动添加临时生效
[root@ c7-41 ~]# brctl addbr br0

[root@ c7-41 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000000000000	no
virbr0		8000.5254009a0ee3	yes		virbr0-nic

[root@ c7-41 ~]# brctl addif br0 ens33
#执行此步后,会导致xshell与宿主机断开连接,以下操作在宿主机完成
#删除ens33上面的IP地址,将br0上面添加上固定IP地址:

#在虚拟机上执行
[root@ c7-41 ~]# ip addr del dev ens33 10.0.0.41/24
[root@ c7-41 ~]# ifconfig br0 10.0.0.41/24 up
[root@ c7-41 ~]# route add default gw 10.0.0.254

[root@ c7-41 ~]# route -n
[root@ c7-41 ~]# ifconfig br0
[root@ c7-41 ~]# ping qq.com

在这里插入图片描述
连接xshell查看是否生效
此时宿主机的IP:10.0.0.41已经绑定到br0网卡;但是服务器重启后就不能生效了。
在这里插入图片描述

通过配置文件配置桥接设备永久生效

为kvm宿主机创建虚拟网卡,并将物理网卡作为桥设备

[root@ c7-41 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 .
[root@ c7-41 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no

[root@ c7-41 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.41
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
NM_CONTROLLED=no

[root@ c7-41 ~]# systemctl restart network.service

通过vnc连接kvm虚机修改网卡配置
[root@ c7-41 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 2     c73                            running

[root@ c7-41 ~]# systemctl stop firewalld

#编辑kvm虚出来的机器(也就是kvm)
[root@ c7-41 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
ONBOOT=yes
IPADDR=10.0.0.100
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=1.1.1.1

在这里插入图片描述

[root@ c7-41 ~]# vi /etc/resolv.conf
 nameserver 223.5.5.5
[root@ c7-41 ~]# ifup eth0

KVM图形管理工具

在这里插入图片描述

查看sshd是否开启X11转发

[root@ c7-41 ~]# grep X11Forwarding /etc/ssh/sshd_config --colour
X11Forwarding yes

#	X11Forwarding no

安装xorg-x11

[root@ c7-41 ~]# yum install -y xorg-x11-font-utils.x86_64 xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64 xorg-x11-drv-ati-firmware

安装libvirt

[root@ c7-41 ~]# yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm mesa-libglapi  -y
#因为我的主机是服务器,没有图形化界面,想要用virt-manager图形化安装虚拟机,还需要安装x-window
[root@ c7-41 ~]# yum install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils -y

[root@ c7-41 ~]# systemctl restart libvirtd.service
[root@ c7-41 ~]# systemctl enable libvirtd.service

配置xshell

安装好Xming后,打开xshell,在连接属性的tunneing中,勾选Forwarding X11 connection to 选项,可以正常打开virt-manager的图形界面
在这里插入图片描述

启动virt-manager

断开xshell会话,重新连接,输入命令:virt-manager;就可以自动弹出kvm管理软件(注意这时候首先要开启Xming)

[root@ c7-41 ~]# virt-manager

在这里插入图片描述
在这里插入图片描述
出现乱码,安装以下包

[root@ c7-41 ~]# yum -y install dejavn-sans-mono-fonts

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

下面测试

在这里插入图片描述
在这里插入图片描述
如果ping不通外网,启动一下网卡,看看行不行,记得看一下你网卡的配置文件是否正确(桥接模式是否正确)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面是VNC测试的(连接的时候,必须要把Xming关掉,才可以连接这个VNC)

在这里插入图片描述

kvm宿主机配置

[root@ c7-42 ~]# yum -y install qemu-kvm qemu-kvm-tools libvirt
[root@ c7-42 ~]# systemctl start libvirtd
[root@ c7-42 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a7:55:3d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.42/24 brd 10.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea7:553d/64 scope link
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a7:55:47 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.42/16 brd 172.16.255.255 scope global ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea7:5547/64 scope link
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:b8:c5:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN groupdefault qlen 1000
    link/ether 52:54:00:b8:c5:25 brd ff:ff:ff:ff:ff:ff
 
[root@ c7-42 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.525400b8c525	yes		virbr0-nic

[root@ c7-42 ~]# virsh iface-bridge ens33 br0
Created bridge br0 with attached device ens33
Bridge interface br0 started

[root@ c7-42 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:0c:29:a7:55:3d brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a7:55:47 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.42/16 brd 172.16.255.255 scope global ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea7:5547/64 scope link
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:b8:c5:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN groupdefault qlen 1000
    link/ether 52:54:00:b8:c5:25 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:a7:55:3d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.42/24 brd 10.0.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea7:553d/64 scope link
       valid_lft forever preferred_lft forever
       
[root@ c7-42 ~]# ping qq.com
PING qq.com (125.39.52.26) 56(84) bytes of data.
^C64 bytes from 125.39.52.26: icmp_seq=2 ttl=128 time=25.1 ms

--- qq.com ping statistics ---
2 packets transmitted, 1 received, 50% packet loss, time 1000ms
rtt min/avg/max/mdev = 25.182/25.182/25.182/0.000 ms

[root@ c7-42 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE="br0"

[root@ c7-42 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.42"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
STP="on"
DELAY="0"

猜你喜欢

转载自blog.csdn.net/xiaowoniuwzx/article/details/106096740
今日推荐