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
宿主机安装相关组件
[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虚拟机的管理。