kvm系列之一:构建kvm虚拟机(centos7)

概述

为什么会把题目定位kvm虚拟机简单定制呢?

我想把自己对kvm虚拟机的认识系统的写下来,但感觉一下子不知道该怎么写。比如说安装就有很多参数:从光盘安启动安装或是从现有磁盘启动、磁盘大小是多少、网络类型是怎样的、cpu规格是怎样的、内存又是多少?另外如何实现网络类型转换、各种分区的扩展,或是当你想添加一块网卡时要如何操作?

想的太多,水平不够,当然就很难用简短的文字描述,所以干脆从初始构建开始,把这个过程走一遍,尽量包含所有能想到的细节。

环境

宿主机cpu和内存

  •  KVM(linux)是券虚拟化技术,需要硬件支持CPU虚拟化,物理机大多是支持的,我这里用的VMware虚拟机作为宿主机,所以需要勾选如下选项

  • 内存尽量大一点,我这里设置了4G

宿主机配置

[root@kvm1 ~]# uname -r
3.10.0-862.el7.x86_64
[root@kvm1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@kvm1 ~]# getenforce 
Disabled
[root@kvm1 ~]# systemctl is-active firewalld.service 
unknown
[root@kvm1 ~]# ip add show eth0|awk 'NR==3{print $2}' 
10.0.0.101/24
[root@kvm1 ~]# ip add show eth1|awk 'NR==3{print $2}' 
172.16.1.101/24
##配置repo源,我使用的ali源
[root@kvm1 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@kvm1 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
View Code

宿主机安装相关组件

[root@kvm1 ~]# yum install libvirt* virt-* qemu-kvm* -y
  • libvirt,是虚拟机的管理软件,可以管理kvm、xen、qemu等
  • virt,包含virt-install、virt-clone,作用是虚拟机的安装和克隆
  • qemu-kvm,qemu-imag,作用是复制管理虚拟机的磁盘

其中libvirtd服务安装后,应该会自动设置启动和开机自启动,如果没有,那就人工开启。另外,如果这时留意,会发现宿主机多了一些网卡信息,如下

[root@kvm1 opt]# systemctl is-active libvirtd.service 
active
[root@kvm1 opt]# systemctl is-enabled libvirtd.service       
enabled

[root@kvm1 opt]# ip add |grep virbr0
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000

默认的kvm虚拟机网络使用nat模式,并且由这个virbr0来分配ip地址,所以构建并安装好kvm虚拟机后会发现它的ip是192.168.122.0/24网段的

宿主机上传镜像

上传镜像后,就可以模拟从光盘安装系统的过程了。我这里上传到/opt目录。当然,镜像大的话就别用rz传了,速度慢不快,还有最大容量限制,可以使用sftp传输

[root@kvm1 ~]# cd /opt
[root@kvm1 opt]# ll
total 927744
-rw-r--r--  1 root root 950009856 Feb  3 09:32 CentOS-7-x86_64-Minimal-1804.iso

vnc工具

kvm默认网络模式是nat,宿主机会充当路由器,为内部的kvm虚拟机做端口映射。如果开启了vnc连接功能,kvm会为每个kvm虚拟机开启一个连接端口。可以访问宿主机的设备,就可以使使用vnc工具来连接kvm虚拟机。具体的使用方法会在下文中描述。

构建kvm虚拟机,并安装系统

构建虚拟机

[root@kvm1 opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name Centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-Minimal-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole   

参数说明:

--virt-type kvm 虚拟化的类型
--os-type=linux 系统类型
--os-variant rhel7 系统版本
--name Centos7 虚拟机的名字
--memory 1024 虚拟机的内存
--vcpus 1 虚拟机cpu核数
--disk /opt/centos2.raw,format=raw,size=10 磁盘路径
--cdrom /opt/CentOS-7-x86_64-DVD-1804.iso 镜像路径
--network network=default 使用默认的NAT网络
--graphics vnc,listen=0.0.0.0 开启VNC
--noautoconsole

来看看宿主机是否为我们开放了一个vnc端口:

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

接下来,就可以用这个端口连接它了

为kvm虚拟机安装系统

我们已经构建好了虚拟机,就好比在VMware中构建了一个空的虚拟机,并且连接了光盘镜像,接下来就是开机安装了。那么如上所说,vnc粉墨登场了,操作图示如下

上图中的端口是0,这是vnc端口的简明表达,0就代表5900,1代表5901,依次类推。填好ip和端口后,点击“connect”就可以了,那么,下面的界面是不是很熟悉了?

接下来就是系统安装了,其中有几个地方需要注意,如下图

除图中标明的点之外,我在磁盘分区中发现,如果使用lvm格式,就必须有一个/boot分区,但如果使用standard格式,就可以只分一个/f分区。另外提前说明一下,如果设置了/boot和/两个分区,那么在后面对根分区扩容时会遇到麻烦。 

安装完毕后reboot时vnc会断开,系统启动后我们还可以重新连接。但是我们发现vnc窗口里是不能复制粘贴的,并且连来连去也麻烦,别烦,接下来我们会使用console或者ssh来连接。那么在以后的岁月里,vnc就只是备用工具了。

不过,在下一步实现kvm管理之前,还是来vnc页面来看看我们安装的系统是不是ok吧

 

好了,系统安装成功了,下一篇,我们来说kvm虚拟机的管理。

 

posted @ 2019-02-03 10:13  Go_Timmy_Go  阅读(623)  评论(0编辑  收藏  举报