ubuntu18.04上搭建KVM虚拟机环境超完整过程
看标题这是篇纯运维的文章。在中小型企业中,一般很少配置专业的运维人员,都是由开发人员兼着。同时,对有志于技术管理的开发人员来说,多了解一些运维及整个软件生命周期的知识,是很有帮助的,因为带团队不仅仅是个管人的活,更多的是在你的部下遇到难题或者无人能上的时候,你能协助他解决或亲自上阵,这比只会“吆五喝六”的管理者将能获得更高的敬重与威信。闲话不多说了,记录下整个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 安装虚拟机
安装命令
sudo virt-install --name=dev-server1 --memory=,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=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 .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. 虚拟机管理
- 列出当前运行的虚拟机
virsh list
devuser@server_01:~$ virsh list
Id Name State
----------------------------------------------------
dev-server1 running如果列出所有的,则
virsh list --all
- 从宿主机进入虚拟机
virsh console
,后面接虚拟机ID或名称devuser@server_01:~$ virsh console
Connected to domain dev-server1
Escape character is ^] CentOS Linux (Core)
Kernel 3.10.-.el7.x86_64 on an x86_64 dev-server1 login:输入用户名,密码即可登录虚拟机,按
Ctrl+]
可退出。
启动与关闭虚拟机
virsh start|shutdown
devuser@cserver_01:~$ virsh start dev-server1
Domain dev-server1 started devuser@server_01:~$ virsh shutdown
Domain is being shutdownlibvirtd启动时,自动启动虚拟机
devuser@server_01:~$ virsh autostart dev-server1
Domain dev-server1 marked as autostarted挂起/恢复虚拟机
devuser@server_01:~$ virsh suspend dev-server1 # 挂起虚拟机
devuser@server_01:~$ virsh resume dev-server1 # 恢复挂起的虚拟机销毁虚拟机
devuser@server_01:~$ virsh undefine dev-server1 # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
我的个人博客地址:http://blog.jboost.cn
我的微信公众号:jboost-ksxy (一个不只有技术干货的公众号,欢迎关注,及时获取更新内容)
—————————————————————————
ubuntu18.04上搭建KVM虚拟机环境超完整过程的更多相关文章
- ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】
PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...
- ubuntu14.04上搭建android开发环境
这几天心血来潮,想在ubuntu上写写android软件.所以就上网找些资料在ubuntu上搭建android环境.结果要么时不完整的,要么就是过时的. 所以我把我搭建android环境的过程写下了, ...
- 在ubuntu18.04下搭建kvm
前一段时间一直在尝试Ubuntu上搭建xen,一直出现各种问题,各种坑 首先先感谢下面这个公司对我的耐心解答,非常感谢.特别是后面来的电话对我进行了详细的解答,所以选择搭建kvm. 1. 需要检查一下 ...
- 在 ubuntu18.04 中搭建 Django 开发环境
在Ubuntu 18.04 安装 python3.pip3.pycharm,搭建 Django 开发环境. 1.安装 python3 pip3 sudo apt-get install python3 ...
- Linux实战笔记__Ubuntu20.04上搭建Vulhub漏洞环境
安装python3和pip3 安装docker 安装docker-compose 上传解压vulhub-master.zip 启动漏洞环境 进入某漏洞目录,执行docker-compose up -d ...
- (转)Windows上搭建Kafka运行环境
转自:<Windows上搭建Kafka运行环境> 完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS 在环境搭建过 ...
- CENTOS6.4上KVM虚拟机环境搭建
CENTOS6.4上KVM虚拟机环境搭建 关键词: KVM,虚拟机,windows7, VNC, 桥接网络,br0, SCSI, IDE 环境: host: CENTOS6.4 guest: ...
- Ubuntu18.04下搭建LAMP环境
一.Apache2 web 服务器的安装 : 可以先更新一下服务器 1.sudo apt-get update # 获取最新资源包 2.sudo apt-get upgrade ...
- 在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. ...
随机推荐
- WPF- 模拟触发Touch Events
原文:WPF- 模拟触发Touch Events 基于API: [DllImport("User32.dll")] public static extern bool Initia ...
- Java 知识笔记 - 类、集合、多线程、IO、JVM(最后一次更新,2019年02月17日)
目录 Class 内部类.静态内部类.匿名内部类.局部内部类 Collection Java Collection Set Queue Map Collections Arrays System Co ...
- 计算机网络OSI参考模型与tcp/ip四层模型
OSI参考模型--7层 1层物理层:主要定义物理设备标准,如网线的接口类型.光线的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化 ...
- redis 从0到1 linux下的安装使用 数据类型 以及操作指令 一
安装 redis 到 /usr/目录下 我这里安装的是redis-3.2.9.tar.gz tar zxvf redis-3.2.9.tar.gz -C /usr 然后进行 执行编译命令 mak ...
- 《Docker 实战》第三章 Docker Hub 寻宝游戏
# 秘密仓库和密码 docker run --rm -it --name password dockerinaction/ch3_ex2_huntanswer
- 【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?
原文:[msdn wpf forum翻译]如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点? 原文链接:http://social.msdn.microsoft.com/Fo ...
- C#原子性运算 interlocked.compareExchanged
缘起: 假设有一个类myClass, myclass里有一个count属性. 在多线程的环境下 每个线程中 直接使用count++, 如果两个线程并行执行时, 两个线程中的一个的结果会被覆掉, 非线 ...
- Image Paragraph论文合辑
A Hierarchical Approach for Generating Descriptive Image Paragraphs (CPVR 2017) Li Fei-Fei. 数据集地址: h ...
- WinForm 清空界面控件值的小技巧
原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextB ...
- Delphi中 TStringList 的详细用法 good
TStringList 类是在Delphi使用最厂的一个对像,我们这里一起来看看 TStringList 的详细用法. 先把要讨论的几个属性列出来:1.CommaText2.Delimiter &am ...