1. KVM安装(推荐用桌面系统创建创建虚拟机客户机,方便用vnc进入客户机否则命令行会很难受)

1.1 配置确认

首先需要确认服务器的硬件是否支持虚拟化,执行如下命令确认

egrep -c '(vmx|svm)' /proc/cpuinfo

如果输出结果大于0,意味着服务器硬件是支持虚拟化的。否则,重启进入BIOS设置中启用VT技术。
执行如下命令安装kvm-ok程序,来确定服务器是否能够运行硬件加速的KVM虚拟机

sudo kvm-ok

1.2 安装KVM

安装KVM及依赖项

sudo apt update
sudo apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager
sudo systemctl start libvirtd.service
sudo systemctl enable libvirtd.service

1.3 桥接网络配置

一般虚拟机网络配置有Bridge、NAT等几种模式。NAT模式下,虚拟机不需要配置自己的IP,通过宿主机来访问外部网络;Bridge模式下, 虚拟机需要配置自己的IP,然后虚拟出一个网卡, 与宿主机的网卡一起挂到一个虚拟网桥上(类似于交换机)来访问外部网络,这种模式下,虚拟机拥有独立的IP,局域网其它主机能直接通过IP与其通信。简单理解,就是NAT模式下,虚机隐藏在宿主机后面了,虚机能通过宿主机访问外网,但局域网其它主机访问不到它,Bridge模式下,虚机跟宿主机一样平等地存在,局域网其它主机可直接通过IP与其通信。一般我们创建虚机是用来部署服务供使用的, 所以都是用Bridge模式。

ubuntu 18中,网络配置通过netplan来实现了,如下,更改配置文件 /etc/netplan/50-cloud-init.yaml

devuser@cserver_01:~$ sudo vim /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:ethernets:enp6s0:dhcp4: trueenp7s0:dhcp4: nodhcp6: noversion: 2bridges:br0:interfaces: [enp7s0]dhcp4: noaddresses: [192.168.40.241/24]gateway4: 192.168.40.1nameservers:addresses: [114.114.114.114,8.8.8.8]

将宿主机原有网卡enp7s0挂到网桥br0上,并指定IP地址为192.168.40.241,nameservers指定DNS服务器。修改完后,通过sudo netplan apply重启网络服务生效,然后通过ifconfig查看,

原来挂在enp7s0网卡下的IP现在挂到了br0上,宿主机及所有其它虚拟机都通过该网桥来与外部通讯。我们也可以通过brctl show来直观地查看,

devuser@server_01:~$ brctl show
bridge name        bridge id        STP enabled        interfaces
br0            8000.2a5be3ec2698    no                enp7s0
docker0        8000.02424524dcce    no                veth580af8eveth74119f3vethe7a2b0fvethfe89039

目前因为还没虚机,所以只有宿主机的网卡enp7s0挂在网桥br0上。同时也可以看到docker容器也是通过网桥docker0来通讯的。

2. 虚拟机安装(推荐用下面的centos创建虚拟机客户机)

2.1 安装虚拟机

安装命令

sudo virt-install --name=dev-server1 --memory=16384,maxmemory=16384 \
--vcpus=4,maxvcpus=4 --os-type=linux --os-variant=rhel7 \
--location=/home/devuser/tools/CentOS-7-x86_64-DVD-1810.iso \
--disk path=/var/lib/libvirt/images/devserver1.img,size=300 \
--bridge=br0 --graphics=none --console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"

其中–name指定虚机名称,后面可通过virsh管理;–memory=16384,maxmemory=16384配置了16G内存;–vcpus=4,maxvcpus=4配置了4个CPU内核;centos7需要制定–os-variant=rhel7;–disk path=xx,size=300制定了磁盘路径与大小,这里是300G。

如果执行上述命令出现qemu-kvm: could not open 'xx/CentOS-7-x86_64-DVD-1810.iso': Permission denied异常退出时,可通过修改/etc/libvirt/qemu.conf文件将user = "root"group = "root"前面的注释去掉解决(https://github.com/jedi4ever/veewee/issues/996)

如无问题,安装程序将出现如下配置界面

可通过输入选项对应的数字来选择不同的配置,依次操作如下步骤完成时区设置:
输入2,回车,选择时区设置;输入1,回车,选择“Set timezone”;输入2,回车,选择“Asia”;回车,输入64,回车,选择“Shanghai”

然后进行安装设置,

依次操作如下:
输入5,回车,进入安装设置;输入c,回车,选择默认的磁盘进行安装;输入c,回车,使用默认的“2) Use All
Space”;输入1,回车,选择“1) Standard Partition”进行标准分区;输入c,回车,完成分区设置

最后进入root密码设置,

操作如下:
输入8,回车,进入root密码设置;输入密码,回车;输入确认密码,回车

完成上述设置后,输入b开始进行安装

等待一段时间后,安装程序停在如下界面

按回车继续,最后输入用户名root,及前面设置的密码登录系统

2.2 虚拟机网络配置

虚拟机安装完后,是没有分配IP的,我们通过ip a命令查看,

这时候的eth0下面空空如也,什么都没有。在/etc/sysconfig/network-scripts/ifcfg-eth0文件中添加如下内容

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #静态指定IP
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=eth0
UUID=449ed621-97a8-45b9-902f-0d347e27de98
DEVICE=eth0
ONBOOT=yes  #开机自动启动
IPADDR=192.168.40.96
NETMASK=255.255.255.0
GATEWAY=192.168.40.1
DNS1=192.168.40.1

并通过systemctl restart network重启网络生效,这时候再运行ip a查看,eth0下面已经有配置的IP了。不出意外的话,局域网其它主机就可以通过该IP来远程SSH连接了。

这时候我们再通过brctl show来查看网桥挂载情况,br0下面已经多了一个vnet0虚拟网卡了。

devuser@server_01:~$ brctl show
bridge name        bridge id        STP enabled        interfaces
br0            8000.2a5be3ec2698    no                enp7s0vnet0
docker0        8000.02424524dcce    no                veth580af8eveth74119f3vethd270ee8vethe7a2b0fvethfe89039

虚拟机装完后,默认的hostname是localhost,针对centos7,我们可以通过如下命令来修改hostname

[root@localhost ~]# hostnamectl set-hostname dev-server1

然后在/etc/hosts文件中添加127.0.0.1的host映射 dev-server1

[root@localhost ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 dev-server1
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

3. 虚拟机管理

  1. 列出当前运行的虚拟机virsh list

    devuser@server_01:~$ virsh listId    Name                           State
    ----------------------------------------------------5     dev-server1                    running

    如果列出所有的,则virsh list --all

  1. 从宿主机进入虚拟机virsh console,后面接虚拟机ID或名称

    devuser@server_01:~$ virsh console 5
    Connected to domain dev-server1
    Escape character is ^]CentOS Linux 7 (Core)
    Kernel 3.10.0-957.el7.x86_64 on an x86_64dev-server1 login:

    输入用户名,密码即可登录虚拟机,按Ctrl+]可退出。

  1. 启动与关闭虚拟机virsh start|shutdown

    devuser@cserver_01:~$ virsh start dev-server1
    Domain dev-server1 starteddevuser@server_01:~$ virsh shutdown 5
    Domain 5 is being shutdown
  2. libvirtd启动时,自动启动虚拟机

    devuser@server_01:~$ virsh autostart dev-server1
    Domain dev-server1 marked as autostarted
  3. 挂起/恢复虚拟机

    devuser@server_01:~$ virsh suspend dev-server1    # 挂起虚拟机
    devuser@server_01:~$ virsh resume dev-server1    # 恢复挂起的虚拟机
  4. 销毁虚拟机

    devuser@server_01:~$ virsh undefine dev-server1   # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘

然后提示用ctr+],暂停安装

以下为用ubuntu创建虚拟机的坑:(推荐用上面的centos创建虚拟机客户机)

root@uscwifi:~# virsh start ubuntu18.04启动关闭状态的虚拟机

############# Download #############
# Download and unpack the latest binary on a 64-bit Debian-compatible system:
curl -L -o VNC https://www.realvnc.com/connect/download/binary/latest/debian/64-bit/
# Download the latest binary on a 32-bit Debian-compatible system:
# curl -L -o VNC https://www.realvnc.com/connect/download/binary/latest/debian/32-bit/
# Download the latest binary on a 64-bit Red Hat-compatible system:
# curl -L -o VNC https://www.realvnc.com/connect/download/binary/latest/redhat/64-bit/
# Download the latest binary on a 32-bit Red Hat-compatible system:
# curl -L -o VNC https://www.realvnc.com/connect/download/binary/latest/redhat/32-bit/
############# Install VNC Server #############
# Install VNC Server on a Debian-compatible system (assuming download file named as above):
sudo dpkg -i VNC
# Install VNC Server on a Red Hat-compatible system:
# sudo rpm -U VNC
下载完成后找到文件下载路径后开始安装
sudo dpkg -i <文件路径及文件名>
vncviewer
破解VNC
sudo vnclicense -add WHJRK-UXY7V-Q34M9-CZU8L-8KGFA。因为需要虚拟模式,所以输入如下命令启用开机启动:sudo systemctl enable vncserver-virtuald.service然后输入如下命令开启服务:sudo systemctl start vncserver-virtuald.service

编辑修改虚拟机配置文件 /etc/libvirt/qemu/v1.xml,增加如下内容

<interface type='bridge'>
      <mac address='52:54:00:da:c3:dc'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

请使用网桥配置命令brctl:

brctl show(现在显示的已经是正常的了)

ps:刚开始vnet0莫名其妙跑到virbr0里了,所以一直连不上,遇到这种需要以下三布即可成功将接口换到另外一个网桥里:

ifconfig vnet0 down

brctl delif virbr0 vnet0

brctl addif br0 vnet0

ifconfig vnet0 up

虚拟机启动后,验证网络接口是否正常:

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.4437e64a62ad       no              eth0
                                                                              vnet0

添加网桥命令顺序。

#brctl  addbr  br0  eth0  #eth0是要桥接的网卡的名称。

我的就是enp2s0f0,所以我的命令就是

#brctl addbr br0 enp2s0f0

用下列命令添加 VLAN 网口:

# ip link add link eth0 name eth0.100 type vlan id 100

方法四、使用qga(qemu-guest-agent)工具
方法描述
qga是一种宿主机和虚拟机的交互方式,这里通过它对虚拟机进行关机,确认宿主机有安装qemu-guest-agent工具,然后在虚拟机的xml配置文件中增加下面代码。

<channel type="unix"><source mode="bind"/><target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>

我的虚拟机可以用virsh shutdown关机,问题解决!

qga的参考链接:
原理:
http://www.cnblogs.com/biangbiang/p/3222458.html
示例:
http://serverfault.com/questions/672253/how-to-configure-and-use-qemu-guest-agent-in-ubuntu-12-04-my-main-aim-is-to-get

KVM安装+vlan配置(超详细)相关推荐

  1. post修改服务器数据源,postgresql安装及配置超详细教程

    1. 安装 根据业务需求选择版本,官网下载 初始化数据库 执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库: linux 系统用户 postgres:管理数据库的系统用 ...

  2. MySQL8.0.22安装及配置(超详细)

    MySQL8.0.22安装及配置(超详细) 大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好好学,超详细的 第一步 进入MySQL官网下载,如下图所示: 第二步 进入下载完成后 ...

  3. maven安装及配置(超详细)

    maven安装及配置(超详细) 大家好,今天我们来学习一下maven安装及配置,好好看,好好学,超详细的 第一步 进入maven官网下载,如下图所示: 第二步 下载好压缩包或解压到除了c盘任意一个盘, ...

  4. MySQL安装和配置超详细

    MySQL安装和配置 MySQL是最受欢迎的关系型数据库之一,由于开源而且安装简单,因此受很多开发者的青睐. 官网下载地址:https://downloads.mysql.com/archives/c ...

  5. 2021最新版Python环境安装变量配置超详细教程,看了就会

    Python都更新到3.10最新版本了,赶快下载更新,新功能很香.本文图文并茂教你安装和变量配置,我保证你看了就会,小白赶快学起来.先了解下新功能有哪些. 目录 一.Python 3.10 相比 3. ...

  6. jdk安装及配置超详细图文

    jdk简介 JDK 是 Java Development ToolKit 的简称,也就是 Java 开发工具包.JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime E ...

  7. mysql8.0安装及配置超详细教程_系统城教你mysql8.0安装与配置教程

    一.下载mysql 安装mysql有两种方式,一种是下载安装包安装,另一种是下载压缩包解压配置,这里使用安装包方式. 进去后点击下面的Download 点击No thinks进入下载 二.安装mysq ...

  8. (转)Spring Boot 日志配置(超详细)

    转自:https://blog.csdn.net/inke88/article/details/75007649 ============================== Spring Boot- ...

  9. Centos 6.4 KVM安装和配置

    Centos 6.4 KVM安装和配置 测试使用环境: 服务器:Dell R710  CPU型号物理CPU颗数内存大小和数量 [root@localhost ~]# cat /proc/cpuinfo ...

  10. kafka-eagle-2.0.1安装及使用(超详细)

    kafka-eagle-2.0.1安装及使用(超详细) 一.简介 kafka-eagle是一个由国内团队开发的开源的可视化和管理软件.它可以同时监控多个集群.监控 Kafka 集群中 Topic 被消 ...

最新文章

  1. 关于在SVG中如何实现gif动画的问题?
  2. Discuz1.5 密码错误次数过多,请 15 分钟后重新登录
  3. .net core 调用c dll_工具:搭建Camp;C,一睹模样
  4. 11WinDlg 对话框一
  5. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
  6. pytorch模型部署
  7. 转:canvas--放大镜效果
  8. java多线程之:SynchronousQueue队列
  9. 评估指标_机器学习评估方法与评估指标总结
  10. C语言基础——二维数组应用(一)井字棋
  11. 奈奎斯特曲线怎么确定w的值matlab,用MATLAB绘制Nyquist图.ppt
  12. docker 停止、启动、删除镜像指令操作总结
  13. Linux搭建KMS激活服务器
  14. pdf文件旋转后怎么完整保存
  15. 从Facebook更名Meta看元宇宙||亚太元宇宙新纪元峰会正式启动
  16. 群雄混战的短视频,繁荣背后存在的短板
  17. 关于ARMv8另外几个问题
  18. 工业镜头基础知识整理
  19. 前缀和——(1)什么是前缀和和一维前缀和
  20. HDLBits第十四章练习及答案3

热门文章

  1. a-upload 上传文件到阿里oss
  2. Ensemble查看基因的外显子信息,并根据染色体位点判断是第几号外显子
  3. 上半年要写的博客文章26
  4. deflate php,PHP Deflate a string
  5. android 按钮果冻效果,用Tween动画简单模拟果冻按钮效果
  6. OpenCV合并图片cv2.add、无缝连接图片cv2.addWeighted、图片克隆cv2.seamlessClone 效果对比、按位运算bitwise_and
  7. 新颖的_基于web的毕业设计题目50例
  8. shopify独立站用户行为分析工具推荐-趣迹
  9. logstash grok mysql_日志分析logstash插件-grok详解
  10. Windows找回磁盘被病毒感染后隐藏的文件