5.5. 管理映像

Acronis Cyber Infrastructure 允许您上传可用于创建 VM 卷的 ISO 映像和模板。ISO 映像是典型的操作系统发行版,需要安装在磁盘上。反过来,模板是 QCOW2 格式的就绪卷,其中具有已安装的操作系统和应用程序以及已设置的最小大小。许多操作系统供应商以“云映像”的名义提供其操作系统的模板。有关虚拟机中支持的来宾操作系统的列表,请参阅 支持的来宾操作系统

注解

映像根据默认存储策略进行存储。

安装负载均器或 Kubernetes 服务后,特殊映像会出现在计算群集中,系统将使用这些映像来创建服务 VM。此类图像带有系统标记,无法在管理面板中进行修改或删除。

5.5.1. 上传、编辑和删除映像

要添加映像,请执行以下操作:

  1. Compute > Virtual machines > Images tab 上,单击添加映像

  2. 添加映像窗口中,请执行以下操作:

    1. 单击浏览,然后选择模板或 ISO 文件。

    2. 指定要在管理面板中显示的映像名称。

    3. 从下拉列表中选择正确的操作系统类型。

      重要

      操作系统类型会影响虚拟机监视程序设置等 VM 参数。基于操作系统类型错误的映像创建的 VM 可能无法正常运行,例如故障。

    ../_images/compute_images1_ac.png
  3. (可选)选中在所有项目之间共享复选框。在该选项已禁用的情况下,映像将仅在默认域的管理项目中可用。

  4. 单击添加以上传映像。

管理面板将显示上传进度。

重要

请勿在上传映像时重新加载页面,否则过程将失败。

要编辑映像,请选择它,然后单击需要更改的参数旁边的铅笔图标。

要删除映像,请单击它旁边的省略号按钮,然后单击删除

5.5.2. 从映像创建卷

可以从 ISO 映像和模板创建卷。请执行以下操作:

  1. 在映像面板上,单击创建卷

  2. 创建卷窗口中,指定卷名称、大小并选择存储策略。

    ../_images/compute_images2_ac.png
  3. 单击创建

新卷将显示在 Compute > Storage > Volumes tab 上。

5.5.3. 加载 ISO 映像至虚拟机

注解

本功能仅支持用于 Linux 虚拟机。但可以通过 vinfra 工具将 ISO 映像加载至 Windows VM。使用 Installing guest tools in existing virtual machines 中提供的说明。将示例中的来宾工具映像替换为您的映像。

要将 ISO 映像加载至 Linux VM,请执行以下操作:

  1. 从 ISO 映像创建卷,如 从映像创建卷 中所述。

  2. 将生成的卷附加至所需的 VM,如 附加和拆离卷 中所述。

加载的磁盘将显示在 Linux VM 中。

5.5.4. 准备模板

在以下情况下,您可能需要创建一个模板:

  • 救援虚拟机

  • 创建可通过 SSH 访问的 VM

  • 创建可根据用户数据定制的 VM

通常,基于 ISO 映像创建模板的操作如下:

  1. 基于 ISO 映像创建虚拟机(请参阅 创建虚拟机)。

  2. 使用内置的 VNC 中控台安装来宾操作系统。

  3. 关闭 VM。

  4. 将 VM 启动卷转换为模板(请参阅 基于卷创建映像)。

但是,要能够自定义 VM 或通过 SSH 连接到 VM,还需要在 VM 部署之前在其模板内安装 cloud-init 和 OpenSSH。准备此类模板取决于来宾操作系统,将在以下各部分中进行介绍。

5.5.4.1. 准备 Linux 模板

由于所有 Linux 来宾默认都已预安装 OpenSSH Server,因此只需确保 Linux 模板已安装 cloud-init。

获取安装有 cloud-init 的 Linux 模板的最简单方法是从官方存储库中获取它,或使用 diskimage-builder 工具构建一个模板。有关详细信息,请参阅 Creating Linux templates

5.5.4.2. 准备 Windows 模板

Windows 来宾默认没有预安装 Cloudbase-Init 或 OpenSSH Server。需要手动安装和配置它们。请执行以下操作:

  1. 基于 Windows 映像创建 VM,如 创建虚拟机 中所述。

  2. 登录到 VM 并使用内置的 VNC 中控台安装来宾操作系统。

  3. 创建一个将用于 SSH 连接的新管理员帐户,然后使用该帐户登录。

  4. 需要手动安装和配置 OpenSSH 服务器,如下所示:

    1. 使用管理员权限运行 Windows PowerShell,然后将执行策略设置为不受限制才能运行脚本:

      > Set-ExecutionPolicy Unrestricted
      
    2. 下载 OpenSSH Server(例如,从 GitHub 存储库)、将存档提取至 C:\Program Files 目录,然后运行以下命令进行安装:

      > & 'C:\Program Files\OpenSSH-Win64\install-sshd.ps1'
      
    3. 启动 sshd 服务,然后将其启动类型设置为“自动”:

      > net start sshd
      > Set-Service sshd -StartupType Automatic
      
    4. 在 Windows 防火墙中,为 OpenSSH 服务打开 TCP 端口 22:

      • 在 Windows 8.1、Windows Server 2012 及更高版本上,运行

        > New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound \
        -Action Allow -DisplayName OpenSSH
        
      • 在 Windows 7、Windows Server 2008 和 Windows Server 2008 R2 上,运行

        > netsh advfirewall firewall add rule name=sshd dir=in action=allow \
        protocol=TCP localport=22
        
    5. 打开 C:\ProgramData\ssh\sshd_config 文件:

      > notepad 'C:\ProgramData\ssh\sshd_config'
      

      在文件末尾注释掉以下几行:

      #Match Group administrators
      #AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
      

      保存更改。

    6. C:\Users\<current_user> 中创建 .ssh 目录,然后在该目录中创建空的 authorized_keys 文件:

      > cd C:\Users\<current_user>
      > mkdir .ssh
      > notepad .\.ssh\authorized_keys
      

      从创建的文件中删除 .txt 扩展名:

      > move .\.ssh\authorized_keys.txt .\.ssh\authorized_keys
      
    7. 修改已创建文件的权限以禁用继承:

      > icacls .\.ssh\authorized_keys /inheritance:r
      
  5. 下载 Cloudbase-Init(例如,从官方网站)、启动安装,然后按照屏幕上的说明进行操作:

    1. 配置选项窗口中,在用户名字段中输入当前用户名:

      重要

      用户帐户密码将在下次 VM 启动时进行重置。将可以在使用密钥身份验证方法时使用此帐户登录,也可以使用自定义脚本设置新密码(请参阅 创建虚拟机)。

      ../_images/win_guests_ssh1.png
    2. 安装完成后,请勿运行 Sysprep 并单击完成

      ../_images/win_guests_ssh2.png
    3. 以管理员权限运行 Windows PowerShell,然后打开文件 C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf

      > notepad 'C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf'
      

      在两行中添加 metadata_servicesplugins

      metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,\
      cloudbaseinit.metadata.services.httpservice.HttpService
      plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,\
      cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,\
      cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,\
      cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,\
      cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin,\
      cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin,\
      cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,\
      cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,\
      cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,\
      cloudbaseinit.plugins.common.userdata.UserDataPlugin,\
      cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,\
      cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin,\
      cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin
      

      注解

      确保删除上述行中的所有反斜杠。

      保存更改。

  6. 停止 VM。

  7. 关闭虚拟机后,将其启动卷转换为模板(请参阅 基于卷创建映像)。