看标题这是篇纯运维的文章。在中小型企业中,一般很少配置专业的运维人员,都是由开发人员兼着。同时,对有志于技术管理的开发人员来说,多了解一些运维及整个软件生命周期的知识,是很有帮助的,因为带团队不仅仅是个管人的活,更多的是在你的部下遇到难题或者无人能上的时候,你能协助他解决或亲自上阵,这比只会“吆五喝六”的管理者将能获得更高的敬重与威信。闲话不多说了,记录下整个KVM虚拟机的搭建过程吧。

1. KVM安装

1.1 配置确认

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

devuser@server_01:~$ egrep -c '(vmx|svm)' /proc/cpuinfo

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

devuser@server_01:~$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

1.2 安装KVM

安装KVM及依赖项

devuser@server_01:~$ sudo apt update
devuser@server_01:~$ sudo apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager

启动libvirtd服务,并设置开机自动启动

devuser@server_01:~$ sudo systemctl start libvirtd.service
devuser@server_01:~$ sudo systemctl enable libvirtd.service

执行service libvirtd status查看libvirtd服务状态,如图

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: true
        enp7s0:
            dhcp4: no
            dhcp6: no
    version: 2

    bridges:
         br0:
             interfaces: [enp7s0]
             dhcp4: no
             addresses: [192.168.40.241/24]
             gateway4: 192.168.40.1
             nameservers:
                 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            .2a5be3ec2698    no                enp7s0
docker0        .02424524dcce    no                veth580af8e
                                                      veth74119f3
                                                    vethe7a2b0f
                                                      vethfe89039

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

2. 虚拟机安装

2.1 安装虚拟机

安装命令

,maxmemory= \--vcpus=,maxvcpus= --os-type=linux --os-variant=rhel7 \--location=/home/devuser/tools/CentOS--x86_64-DVD-.iso \--disk path=/var/lib/libvirt/images/devserver1.img,size= \--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=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #静态指定IPDEFROUTE=yes#IPV4_FAILURE_FATAL=no#IPV6INIT=yes#IPV6_AUTOCONF=yes#IPV6_DEFROUTE=yes#IPV6_FAILURE_FATAL=no#IPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0UUID=449ed621-97a8-45b9-902f-0d347e27de98DEVICE=eth0ONBOOT=yes  #开机自动启动IPADDR=192.168.40.96NETMASK=255.255.255.0GATEWAY=192.168.40.1DNS1=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            .2a5be3ec2698    no                enp7s0
                                                      vnet0
docker0        .02424524dcce    no                veth580af8e
                                                    veth74119f3
                                                     vethd270ee8
                                                     vethe7a2b0f
                                                     vethfe89039

虚拟机装完后,默认的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
::         localhost localhost.localdomain localhost6 localhost6.localdomain6

3. 虚拟机管理

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

    devuser@server_01:~$ virsh list
     Id    Name                           State
    ----------------------------------------------------
          dev-server1                    running

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

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

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

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

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

    devuser@cserver_01:~$ virsh start dev-server1
    Domain dev-server1 started
    
    devuser@server_01:~$ virsh shutdown
    Domain  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   # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘

我的个人博客地址:http://blog.jboost.cn
我的微信公众号:jboost-ksxy (一个不只有技术干货的公众号,欢迎关注,及时获取更新内容)
———————————————————————————————————————————————————————————————

有道词典

devuser@server_ ...

详细X

  devuser@server_01: ~ $ sudo apt安装cpu-checker
  
  devuser@server_01: ~ $ sudo kvm-ok
  信息:/ dev / kvm的存在
  可以使用KVM加速度

有道词典

devuser@server_ ...

详细X

  devuser@server_01: ~ $ sudo apt安装cpu-checker
  devuser@server_01: ~ $ sudo kvm-ok
  信息:/ dev / kvm的存在
  可以使用KVM加速度

ubuntu18.04上搭建KVM虚拟机环境超完整过程的更多相关文章

  1. ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】

    PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...

  2. ubuntu14.04上搭建android开发环境

    这几天心血来潮,想在ubuntu上写写android软件.所以就上网找些资料在ubuntu上搭建android环境.结果要么时不完整的,要么就是过时的. 所以我把我搭建android环境的过程写下了, ...

  3. 在 ubuntu18.04 中搭建 Django 开发环境

    在Ubuntu 18.04 安装 python3.pip3.pycharm,搭建 Django 开发环境. 1.安装 python3 pip3 sudo apt-get install python3 ...

  4. (转)Windows上搭建Kafka运行环境

    转自:<Windows上搭建Kafka运行环境> 完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS   在环境搭建过 ...

  5. CENTOS6.4上KVM虚拟机环境搭建

    CENTOS6.4上KVM虚拟机环境搭建   关键词: KVM,虚拟机,windows7, VNC, 桥接网络,br0, SCSI, IDE   环境: host: CENTOS6.4 guest: ...

  6. Ubuntu18.04下搭建LAMP环境

    一.Apache2 web 服务器的安装 : 可以先更新一下服务器 1.sudo apt-get update             # 获取最新资源包 2.sudo apt-get upgrade ...

  7. 在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA

    在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA 一. 环境 Ubuntu14.04 64位    JDK 1.8.0_73    scala-2.10. ...

  8. 在ubuntu18.04上安装EOS

    在ubuntu18.04上安装EOS 在ubuntu18.04上安装EOS的目的: 把交易所的eos转到eos主网,防止交易所跑路或者交易所被黑客攻击 在不联网的安全环境下,用eos官方的命令行工具, ...

  9. Ubuntu 16.04上搭建CDH5.16.1集群

    本文参考自:<Ubuntu16.04上搭建CDH5.14集群> 1.准备三台(CDH默认配置为三台)安装Ubuntu 16.04.4 LTS系统的服务器,假设ip地址分布为 192.168 ...

随机推荐

  1. 难道.NET Core到R2连中文编码都不支持吗?

    今天写了一个简单的.NET Core RC2控制台程序,发现中文显示一直是乱码.查看操作系统设置,没有问题:查看源文件编码,也没有问题:甚至查看了Console字符编码相关的注册表,依然没有发现问题. ...

  2. Mysql更换MyISAM存储引擎为Innodb的操作记录

    一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show p ...

  3. 高可用集群heartbeat全攻略

    heartbeat的概念   Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...

  4. A - FatMouse&#39; Trade

    Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the wareho ...

  5. 深入理解 GIL:如何写出高性能及线程安全的 Python 代码

    深入理解 GIL:如何写出高性能及线程安全的 Python 代码 本文由 伯乐在线 - 郑芸 翻译.未经许可,禁止转载!英文出处:A. Jesse.欢迎加入翻译组. GIL对多线程的影响:http:/ ...

  6. mybatis常用类起别名

    在mybatis的配置文件中添加如下配置 <settings> <setting name="cacheEnabled" value="true&quo ...

  7. python--对象实例化过程

    实例化过程: class luffy_stu: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = ...

  8. function(){}、var fun=function(){}和function fun(){}的区别

    一.基本定义 1.函数声明:使用function声明函数,并指定函数名. function fun() { // ...... } 2.函数表达式:使用function声明函数,但未指定函数名,将匿名 ...

  9. [Hadoop]Hadoop章1 Hadoop原理解析

    Hadoop是Apache软件基金会所开发的并行计算框架与分布式文件系统.最核心的模块包括Hadoop Common.HDFS与MapReduce. HDFS HDFS是Hadoop分布式文件系统(H ...

  10. Redis单线程单进程为什么效率那么高

    1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速.数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1): 2.数据结构简单,对数据操作也简单,Red ...