AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 580872
Accepted
enraged camel
enraged camel
Asked: 2014-03-10 12:06:37 +0800 CST2014-03-10 12:06:37 +0800 CST 2014-03-10 12:06:37 +0800 CST

管理虚拟机更新和分发 - 做错了吗?

  • 772

我在一家软件公司工作。我的部门负责(除其他外)构建 VMWare 虚拟机并将其分发给我们的销售团队成员,然后他们使用 VMWare Player 启动它们,为客户运行他们的产品演示。

最近,我发现我们更新和分发这些虚拟机的方式是各种错误的。这是我们更新“Demo VM”的过程:

  1. 从中央服务器下载新的虚拟机副本(~35 GB)
  2. 将其设置为持久模式,然后启动它并进行更改,例如将产品升级到最新版本和更新许可证
  3. 更改完成后,将其关闭并将其设置回非持久模式,然后将整个内容(~35 GB)上传回中央服务器,并使用新的文件夹名称和递增的版本号
  4. 谁需要最新版本然后从文件服务器下载它(35 GB * X)

这不仅会占用大量网络带宽,而且从网络下载 35 GB 的内容可能会非常耗时,尤其是对于我们远程办公室中无法享受 Intranet 速度的人来说。

我的问题:有没有更好的方法来管理需要在用户机器上本地运行的虚拟机的更新和分发?

我开始质疑我们当前方法的原因是,当更新虚拟机时,只有一小部分文件(VMEM 和虚拟磁盘映像)发生变化,对吧?因此,与其复制整个 VM 文件夹,不如说应该有一种仅上传/下载增量的方法。类似于 Git 等版本控制系统的工作方式。我实际上尝试为此使用 Git,但事实证明 Git 在管理大文件时很糟糕。所以我想我会在这里问。

vmware-player
  • 2 2 个回答
  • 355 Views

2 个回答

  • Voted
  1. Best Answer
    Evan Anderson
    2014-03-10T12:59:08+08:002014-03-10T12:59:08+08:00

    Rsync 可以很好地解决这个问题。如果您想将差异分发到无法直接访问服务器的机器,您也可以尝试xdelta。

    触发更新以在虚拟机内部运行也是一种选择,但您必须小心,如果不耐烦的用户在更新时中断虚拟机,他们不会损坏虚拟机。我会亲自修补VM磁盘文件。

    • 5
  2. dawud
    2014-03-11T11:49:17+08:002014-03-11T11:49:17+08:00

    在我看来,一个合适的答案取决于目标操作系统,因为可用的工具差别很大。

    在这个工作流程中可能会有一个有趣的转变,它可以通过使其具有可重复性和灵活性来改进流程。让我试着解释一下。正如您所描述的(如果我理解正确的话),这项任务是基于离线建立一个黄金形象,并让销售部门人员克隆它。

    (从您提供的信息中尚不清楚该员工是否应该能够修改黄金图像或仅在分发时用于演示目的,这可能会产生我在下面不考虑的后果)。

    因此,为了至少给出部分答案,这些是我的

    假设:

    • 目标平台(Demo VM)是一台 GNU/Linux 机器
    • 分布式软件及其许可证都使用目标操作系统的格式(RPM、deb、...)打包(或可以打包)。这可以通过多种方式处理:
      • 标准debian-rules或与流spec配对的文件autotools
      • 使用类似工具的更敏捷的流程fpm

    • 有一个可用的分发点可以处理包和配置管理/分发(不需要是单个服务/机器,这只是试图反映这些服务集中和可用的需求)。同样,有许多不同的方法来处理这个:
      • 服务器cobbler。可以管理不同的服务,但有趣的是 TFTP、PXE、kickstarting、预置,即配置步骤。或者,pulp也可以分发存储库(不仅在客户端请求时,而且在服务器主动请求时)。
      • 一个配置管理系统,如puppet, ansible, salt, ..., 即配置步骤。
      • 所有不能按原样捆绑在包中的特定配置都由配置管理系统管理并存储在修订控制系统中。

    • 可以使用 VMWare 的 VMPlayer 以外的软件来管理虚拟化系统。

    和一些用例:

    - 成熟的 GNU/Linux 虚拟机

    如果您对上述假设感到不满,那么有很多方法可以确保最终用户可以拥有一台具有您之前决定的确切配置和安装软件的虚拟机。其中之一将涉及使用vagrant. 使用该软件,您只需要修改一个文件(vagrantfile描述您要构建的机器类型。此外,vagrant还可以将配置的机器处理到您选择的配置管理系统。在线文档非常好,并且有网上很多例子。

    销售人员的机器可以运行任何操作系统,因为唯一的要求是它们安装vagrant在主机上。生成一个 Demo VM 只需要一个简单的vagrant up.

    也有一些有趣的替代方案vagrant。例如,检查packer。

    - 基于容器的提案,而不是成熟的虚拟机

    如果销售人员的机器可以使用任何 GNU/Linux 操作系统,您还可以利用容器,这是一种运行虚拟化操作系统且开销很小的方式。使用这项技术的更有趣的方式(在我看来)包括但不限于libvirt:docker和LXC. Docker 有这个概念dockerfile,在功能上类似于vagrantfile,更有趣的是,有一个注册表可以托管您的可分发图像。

    容器可以作为托管操作系统中的简单服务运行,因此使用它们非常简单。

    - 没有操作系统

    为了帮助改进分发过程,当然,应该确保只安装最低限度的所需软件。但是有一些方法可以完全没有操作系统。如果您的用例可以从使用类似的软件中受益supermin,那么一个设备可能小到几兆字节到千兆字节。

    其他人提出了一种不同的方法,没有托管操作系统,但这种模型似乎不符合您的描述。

    • 4

相关问题

  • LAMP 服务器虚拟机问题

  • VmWare 播放器 Windows XP 性能

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • 在 VMPlayer 上 Windows 和 Linux 之间共享目录的最佳方式

  • VMWare Converter P2V 是否会成为非 ACPI 2000 服务器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve