23
2024
05
12:03:52

在 Oracle Linux 上使用 KVM 创建 VM

https://docs.oracle.com/zh-cn/learn/ol-kvm/index.html#introduction


注意:

  • 此教程在 Oracle 提供的免费实验室环境中提供。

  • 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成练习后,将这些值替换为特定于云环境的值。

简介

基于内核的虚拟机 (Kernel-based Virtual Machine,KVM) 是一个开源的 type-1(裸机)虚拟机管理程序。此功能允许主机系统(如 Oracle Linux 8)在受支持的硬件上运行时托管多个虚拟机 (Virtual Machine,VM) 或来宾。

本教程将部署 Oracle Linux 内核虚拟化管理器 (KVM) 来创建虚拟机。

目标

  • 部署 KVM

  • 为虚拟机部署 Cockpit

  • 基于 ISO 创建虚拟机

  • 使用 Oracle Cloud 映像创建虚拟机

先决条件

具有以下配置的任何 Oracle Linux 8 或更高版本系统:

  • 具有 sudo 权限的非 root 用户

virtualization" style="margin: 20px 0px 10px; padding: 0px; box-sizing: border-box; color: var(--oj-heading-text-color); font-family: "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 30px; font-weight: 400; line-height: var(--oj-typography-heading-xl-line-height); text-wrap: wrap; background-color: rgb(255, 255, 255);">验证环境支持虚拟化

注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用说明。

  1. 如果尚未连接,请打开一个终端并通过 ssh 连接到您的实例。

    复制ssh oracle@<ip_address_of_instance>
  2. 运行以下命令以确定 CPU 类型。

    复制grep -e 'vendor_id' /proc/cpuinfo

    输出示例:

    复制[oracle@ol-node01 ~]$ grep -e 'vendor_id' /proc/cpuinfo
    vendor_id	: GenuineIntel 
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel

    此系统基于 Intel,由 GenuineIntel 的输出显示。

  3. 对于 Intel 系统,键入以下命令。

    复制grep -e 'vmx' /proc/cpuinfo

    命令输出中存在 vmx 标志表示此系统支持虚拟化。

  4. 检查装入的 KVM 模块。

    复制lsmod | grep kvm

    输出示例:

    复制[oracle@ol-node01 ~]$ lsmod |grep kvm
    kvm_intel             262144  0 
    kvm                   696320  1 kvm_intel
    irqbypass              16384  1 kvm

    输出基于此系统的硬件显示 KVM 内核模块和 kvm_intel 处理器模块。默认情况下,这些模块应在现代 Linux 系统上加载。

安装和启动 KVM

  1. 安装与 Oracle Linux 虚拟化模块关联的软件包。

    复制sudo dnf module install virt -y

    此命令安装虚拟化软件包的集合,包括 libvirt、qemu-kvm 和其他依赖项。

  2. 安装 virt-install 和 virt-viewer

    复制sudo dnf install virt-install virt-viewer -y

    这将完成所需软件包集的安装。

  3. 验证主机是否已准备就绪并设置为运行 libvirt VM。

    复制virt-host-validate

    输出示例:

    复制[oracle@ol-node01 ~]$ virt-host-validate
    QEMU: Checking for hardware virtualization                                 : PASS
    QEMU: Checking if device /dev/kvm exists                                   : PASS
    QEMU: Checking if device /dev/kvm is accessible                            : PASS
    QEMU: Checking if device /dev/vhost-net exists                             : PASS
    QEMU: Checking if device /dev/net/tun exists                               : PASS
    QEMU: Checking for cgroup 'cpu' controller support                         : PASS
    QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
    QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
    QEMU: Checking for cgroup 'memory' controller support                      : PASS
    QEMU: Checking for cgroup 'devices' controller support                     : PASS
    QEMU: Checking for cgroup 'blkio' controller support                       : PASS
    QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
    QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)

    如果所有检查 PASS,则系统将为创建的 VM 准备。如果有任何检查失败,请按照说明更正问题。如果有任何检查返回 WARN 的值,请考虑按照说明改进虚拟化功能。

  4. 启动 libvirtd 守护进程并使其在每次引导时自动启动。然后检查其状态以确认其已启动且正在运行。

    复制sudo systemctl enable --now libvirtd.servicesudo systemctl status libvirtd.service

    输出示例:

    复制[oracle@ol-node01 ~]$ sudo systemctl enable --now libvirtd.service
    [oracle@ol-node01 ~]$ sudo systemctl status libvirtd.service
    * libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor pr>
       Active: active (running) since Mon 2022-06-13 21:28:19 GMT; 8s ago
         Docs: man:libvirtd(8)
               https://libvirt.org
    ...

    输出指示服务已启用且正在运行。

设置 Cockpit Web 控制台以在 Oracle Linux 上管理 KVM

  1. 安装 cockpit-machines 扩展以基于 Libvirt 管理 VM。

    复制sudo dnf install cockpit cockpit-machines –y
  2. 启动 cockpit 套接字并使其能够在系统引导时自动启动。

    复制sudo systemctl enable --now cockpit.socketsudo systemctl status cockpit.socket

    输出示例:

    复制[oracle@ol-node01 ~]$ sudo systemctl enable --now cockpit.socket
    Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/lib/systemd/system/cockpit.socket.
    [oracle@ol-node01 ~]$ sudo systemctl status cockpit.socket
    * cockpit.socket - Cockpit Web Service Socket
       Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor pres>
       Active: active (listening) since Mon 2022-06-13 21:39:24 GMT; 10s ago
         Docs: man:cockpit-ws(8)
       Listen: [::]:9090 (Stream)
    ...

    输出指示服务已启用并正在监听。

  3. 远程访问此站点,请为 cockpit 服务启用防火墙端口并重新加载防火墙配置以应用新更改。

    复制sudo firewall-cmd --add-service=cockpit --permanentsudo firewall-cmd --reload

    注:从 lunabox Desktop 上的第二个终端运行下一个命令。

  4. 在 lunabox 桌面上打开第二个终端,然后输入以下命令使用 ssh 为 Cockpit 创建本地端口转发。

    复制ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
  5. 在桌面上打开 Web 浏览器并浏览到 https://localhost:9090。

    Cockpit Web 控制台使用自签名证书启用 HTTPS。

    accept_cert

    从浏览器收到警告后,单击 "Advanced"(高级)并接受连接。

  6. 以口令为 oracle 的 oracle 用户身份登录。

    登录

    此时将显示 "Cockpit" 显示板。

  7. 单击“Limited Access(有限访问)”按钮获得管理权限。

    通道

  8. 关闭“Administration(管理)”访问窗口。

    克隆

基于 ISO 创建虚拟机

  1. 单击左侧导航面板中的“Virtual Machines(虚拟机)”选项。

  2. 单击 "Create VM"(创建 VM)按钮。

    VM

  3. 请提供以下信息:

    复制Name: OL-demo
    Connection: System
    Installation type: URL (ISO image or distro install tree)
    Installation source: https://yum.oracle.com/ISOS/OracleLinux/OL8/u6/x86_64/OracleLinux-R8-U6-x86_64-dvd.iso
    Operating system: Oracle Linux 8.6
    Storage: Create new volume
    Size: 20 GiB
    Memory: 16 GiB
    Immediately start VM: check

    VM

  4. 单击“Create(创建)”开始。

  5. 从虚拟机列表中,单击 OL-demo 链接。

    vmlist

  6. 向下滚动以查看 VNC 控制台。

    如果您速度足够快,您将看到包含安装 Oracle Linux 或测试此介质和安装选项的菜单。默认情况下,将在几秒钟后选择“Test(测试)”选项。安装程序将验证介质上的内容是否正确,然后启动安装程序。

    战利品

  7. 安装程序引导后,会显示 "Welcome to Oracle Linux" 屏幕。通过选择安装过程的语言开始安装。

    lang

    此实验不会继续执行安装过程。

    注意:可以通过以下视频链接观看演示 Oracle Linux 安装过程的免费视频:安装 Oracle Linux 8

  8. 单击窗口右上角的“X”关闭 Web 浏览器。

使用 Oracle Cloud 映像创建虚拟机

注:请确保从云实例 (ol-node01) 终端窗口中输入以下命令。

  1. 转到 KVM 映像存储位置。

    复制cd /var/lib/libvirt/images
  2. 下载 Oracle Linux VM 模板。

    复制sudo curl -O https://yum.oracle.com/templates/OracleLinux/OL8/u6/x86_64/OL8U6_x86_64-kvm-b126.qcow
  3. 创建元数据文件。

    复制cat << 'EOF' | sudo tee ~/meta-data > /dev/null
    instance-id: iid-local01
    local-hostname: vm-01EOF
  4. 创建用户数据文件。

    复制cat << 'EOF' | sudo tee ~/user-data > /dev/null
    #cloud-config
    
    system_info:
      default_user:
        name: opc
    
    ssh_authorized_keys:
      - <paste_public_key_here>EOF
  5. 生成 SSH 密钥对

    复制ssh-keygen -t rsa -b 4096

    单击 Enter 可接受每个默认值。密钥对将写入用户主目录中的 .ssh 目录。

  6. 将公钥复制到用户数据文件中。

    复制SSHKEY=$(cat ~/.ssh/id_rsa.pub)sed -i "s|<paste_public_key_here>|${SSHKEY}|g" ~/user-data
  7. 生成 ISO 映像。

    复制sudo genisoimage -output /var/lib/libvirt/images/vm-01.iso -volid cidata -joliet -rock ~/user-data ~/meta-data
  8. 创建实例。

    复制sudo cp /var/lib/libvirt/images/OL8U6_x86_64-kvm-b126.qcow /var/lib/libvirt/images/vm-01.qcowsudo virt-install --name vm-01 \--memory 2048 \--vcpus 2 \--disk /var/lib/libvirt/images/vm-01.qcow,device=disk,bus=virtio \--disk /var/lib/libvirt/images/vm-01.iso,device=cdrom \--os-type linux --os-variant ol8.6 \--virt-type kvm --graphics none \--network network=default,model=virtio \--noautoconsole \--import
  9. 列出 VM。

    复制sudo virsh list
  10. 检索 vm-01 虚拟机的 IP 地址。

    复制sudo virsh net-dhcp-leases --network default

    注:根据虚拟机的启动速度,可能需要再次运行该命令以显示 IP 地址。

  11. 或者,可以基于 MAC 地址进行过滤。

    复制sudo virsh domiflist vm-01
  12. 从上一个输出复制 MAC 地址并在以下命令中提供。

    复制sudo virsh net-dhcp-leases --network default --mac <MAC_address>
  13. 使用 ssh 连接来验证虚拟机工作。

    复制ssh opc@<vm-01-ip_address>

    输出示例:

    复制[oracle@ol-node01 images]$ ssh opc@192.168.122.46
    The authenticity of host '192.168.122.46 (192.168.122.46)' can't be established.
    ECDSA key fingerprint is SHA256:xcuVfQdoFDCC72i7plD0OfqDTSBG6QWhOm5ti4HIKEs.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.122.46' (ECDSA) to the list of known hosts.
      
    [opc@vm-01 ~]$ uname -a
    Linux vm-01 5.4.17-2136.307.3.1.el8uek.x86_64 #2 SMP Mon May 9 17:29:47 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux

[可选] 从 Cockpit 仪表盘查看 VM

注:从 lunabox Desktop 上的终端运行下一个命令。

  1. 从 lunabox Desktop 终端窗口输入以下命令,以便使用 ssh 为 Cockpit 创建本地端口转发。

    复制ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
  2. 在桌面上打开 Web 浏览器并浏览到 https://localhost:9090。

  3. 以口令为 oracle 的 oracle 用户身份登录。

    登录

    此时将显示 "Cockpit" 显示板。

  4. 如有必要,请单击“Limited Access(有限访问)”按钮以获取管理权限。

  5. 单击左侧导航面板中的“Virtual Machines(虚拟机)”选项。

  6. 从虚拟机列表中,单击 vm-01 链接。

  7. 根据需要浏览“概览”部分、“磁盘”部分、“网络接口”等。

    注:由于 vm-01 虚拟机是使用带有 virt-install 的 --graphical none 选项创建的,因此控制台在 Cockpit 中未处于活动状态。

此实验结束。

详细信息:

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle 学习资源管理器。

有关产品文档,请访问 Oracle 帮助中心




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6297.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: