Linux单机使用本地镜像创建KVM虚拟机实例

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux单机使用本地镜像创建KVM虚拟机实例相关的知识,希望对你有一定的参考价值。

环境

  • Linux 内核2.6以上 2G内存以上,20G硬盘以上
  • CPU需支持虚拟化,如果是虚机需在CPU选项中开启虚拟化支持
  • 宿主机可以正常访问网络或者已搭建内部源仓库
  • 准备安装的虚拟机镜像或介质,也可以是网络安装环境
  • ssh工具支持图形化,建议使用Moba

1. 开启虚拟化引擎

  • 本次实验使用VMWare Workstation
  • 在虚拟机选项中,选择处理器选项,勾选虚拟化引擎第一项并确定
  • 需要在虚机关闭时进行此项设置

2. 设置网桥

  • KVM虚机使用网桥和宿主机使用同一网络方便访问
  • 在宿主机设置网桥,相当于vmware中的虚拟交换机的作用

创建网桥文件

  • 创建网桥虚拟网卡,并将宿主机IP设置在虚拟网桥上
cat >/etc/sysconfig/network-scripts/ifcfg-br0 << SUN
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=10.0.0.199
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=223.5.5.5
SUN

编辑宿主机网卡

  • 将宿主机网卡桥接至网桥虚拟网卡
  • 备份原宿主机网卡配置文件
    mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
  • 创建新的宿主机网卡配置文件
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 << SUN
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
SUN

重启网络服务

  • 重启网络服务使网桥配置生效
    systemctl restart network.service
  • 检查网络配置情况
[root@c7-199 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:0c:29:e6:1f:9e brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:e6:1f:9e brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.199/24 brd 10.0.0.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 fe80::ec28:98ff:fe31:7370/64 scope link
       valid_lft forever preferred_lft forever

3. 安装KVM相关工具和依赖

  • 装多了没事,装少了怕用到了缺包
yum -y install kvm qemu-kvm qemu-kvm-tools \\
libvirt libvirt-client libguestfs-tools libvirt-python \\
python-virtinst virt-manager  bridge-utils virt-install
  • 启动libvirt服务
    systemctl enable --now libvirtd.service
  • 重启服务器以生效
    init 6

4. 创建虚拟机存放目录

  • 单独创建虚拟机和安装系统镜像的存放目录方便管理
  • 生产中通常将虚拟机存放在独立挂载的存储设备上,方便迁移

mkdir -pv /vms/{vmdisk,vmhost,vmiso}


[root@c7-199 ~]# mkdir -pv /vms/{vmdisk,vmhost,vmiso}
mkdir: created directory ‘/vms’
mkdir: created directory ‘/vms/vmdisk’
mkdir: created directory ‘/vms/vmhost’
mkdir: created directory ‘/vms/vmiso’

5. 创建虚拟磁盘

  • 使用qemw-img命令创建一个qcow2格式大小为20G的稀疏格式虚拟磁盘文件
  • KVM支持多种格式磁盘文件,qcow2格式磁盘并不会立即分配所有磁盘空间
    qemu-img create -f qcow2 /vms/vmdisk/v1.qcow2 20G
[root@c7-199 ~]# qemu-img create -f qcow2 /vms/vmdisk/v1.qcow2 20G
Formatting '/vms/vmdisk/v1.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off
[root@c7-199 ~]# ll -h /vms/vmdisk/v1.qcow2
-rw-r--r-- 1 root root 193K Jul  8 10:44 /vms/vmdisk/v1.qcow2

6. 确保虚拟机安装介质可访问

  • 可以将得到的系统安装镜像上传至宿主机本地目录
  • 也可以挂载存储,并确保系统安装静静可访问
  • 也可以使用本地光驱或者移动存储
  • 也可以直接从互联网wget最新版的RockyLinux到本地镜像目录
    wget https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.4-x86_64-minimal.iso -P /vms/vmiso/
[root@c7-199 ~]# wget https://download.rockylinux.org/pub/rocky/8/isos/x86_64/R
--2021-07-08 11:18:06--  https://download.rockylinux.org/pub/rocky/8/isos/x86_6
Resolving download.rockylinux.org (download.rockylinux.org)... 151.101.230.132
Connecting to download.rockylinux.org (download.rockylinux.org)|151.101.230.132
HTTP request sent, awaiting response... 200 OK
Length: 1980760064 (1.8G) [application/octet-stream]
Saving to: ‘/vms/vmiso/Rocky-8.4-x86_64-minimal.iso’

100%[==========================================================================

2021-07-08 11:27:20 (3.43 MB/s) - ‘/vms/vmiso/Rocky-8.4-x86_64-minimal.iso’ sav

[root@c7-199 ~]# file /vms/vmiso/Rocky-8.4-x86_64-minimal.iso
/vms/vmiso/Rocky-8.4-x86_64-minimal.iso: # ISO 9660 CD-ROM filesystem data 'Rocky-8-4-x86_64-dvd' (bootable)

7. 使用系统镜像创建并启动KVM虚拟机

  • 使用virt工具安装虚拟机
virt-install --virt-type kvm --name v1 --ram 1024 --vcpus 2 \\
--cdrom=/vms/vmiso/Rocky-8.4-x86_64-minimal.iso \\
--disk path=/vms/vmdisk/v1.qcow2 \\
--network bridge=br0 \\
--graphics vnc,listen=0.0.0.0 \\
--noautoconsole --autostart

参数说明

  • –virt-type kvm 指定安装的虚拟机类型为KVM
  • –name v1 虚拟机名叫v1,同一宿主机虚拟机不能重名,生产中建议设置为业务相关文件名
    例如:sun.coWebS1-10.0.0.155-SMY-20210708
  • –ram 1024 内存1G
  • –vcpus 2 虚拟CPU2个
  • –cdrom= 指定安装系统镜像绝对路径
  • –disk path= 指定使用的虚拟磁盘文件绝对路径
  • –network bridge=br0 指定网络使用桥接模式到br0
  • –graphics 指定图形显示使用 vnc,并监听在宿主机所有IP,可指定端口,默认5900
  • –noautoconsole 不要自动尝试连接到客户端控制台
  • –autostart 随宿主机启动而启动虚拟机
[root@c7-199 ~]# virt-install --virt-type kvm --name v1 --ram 1024 --vcpus 2 \\
> --cdrom=/vms/vmiso/Rocky-8.4-x86_64-minimal.iso \\
> --disk path=/vms/vmdisk/v1.qcow2 \\
> --network bridge=br0 \\
> --graphics vnc,listen=0.0.0.0 \\
> --noautoconsole --autostart
WARNING  No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.

Starting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

8. 图形化窗口安装虚机操作系统

  • 确保本地ssh工具支持图形化,建议使用MobaXterm,Xshell需要花钱买呀!
  • MobaXterm启动图形化支持,在宿主机安装图形化包
    yum -y groupinstall "X Window System"
  • 使用virt-manager图形化工具安装并管理虚拟机
    virt-manager
  • 在弹出的图形化窗口中安装虚拟机操作系统

启动virt-manager
安装虚拟机系统

9. 安装后进入虚机

  • 设置临时IP
    ip addr add 10.0.0.161/24 dev ens3
    设置IP
  • 使用ssh连接
    ssh连接
  • 至此KVM虚拟机已安装完成呀!就像正常的操作系统用就完事了!

10. 使用初始化脚本优化虚拟机系统

初始化系统

  • 至此新KVM虚拟机服务器上线成功
    新服务器上线

以上是关于Linux单机使用本地镜像创建KVM虚拟机实例的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令行冷迁移KVM虚拟机

WebVirtMgr新建KVM虚拟机

KVM虚拟机管理——虚拟机创建和操作系统安装

Linux实战之KVM虚拟机安装爱快软路由系统

linux 下的KVM 虚拟机

如何在kvm服务器上创建虚拟机