我应该使用vagrant resume还是vagrant up?

22

学习几天后,我很高兴成功设置了虚拟机并运行了Laravel的起始页。非常开心 :)

请问何时使用vagrant功能,以下是我的问题:

  1. 如果我计划关闭电脑,应该使用halt还是suspend?(我猜测应该使用halt)如果我忘记执行以上两个命令,会有问题吗?

  2. 在打开电脑后应该使用up还是resume

  3. 如果我通过关闭笔记本盖子来将电脑置于睡眠模式,是否需要使用vagrant suspend命令?

3个回答

25

简而言之

1. 关机

"关机"方法在关闭/打开虚拟机时的速度和虚拟机所需磁盘空间量方面有所不同。从vagrant suspendvagrant haltvagrant destroy这三个命令中选择:前者速度更快/磁盘占用更多,后者速度较慢/磁盘占用较少。

2. 开机

只需使用vagrant up "启动"方法的区别在于,vagrant resume将仅"唤醒"虚拟机,而vagrant up将在此之前进行一些配置检查。例如,它将检查您的vagrant盒子是否有更新版本,并通过运行vagrant box update来通知您可以更新。

此外,您只能在先前挂起的虚拟机上使用vagrant resume。在挂起的机器上使用这两个命令时,时间上没有明显区别。

有关详细信息,请参见下面的文档引用。

3. 睡眠/休眠

将计算机置于睡眠状态甚至休眠状态都不会造成任何损害。前者只是低功耗状态,而后者则将RAM保存到存储驱动器中,然后在启动计算机时恢复。这是操作系统级别的东西,除非出现睡眠失败或其他问题,否则不应影响任何内容。
引用文档 Vagrant文档有一个章节介绍了不同命令的作用:
调用vagrant suspend将会暂停虚拟机并保存当前运行状态。当你准备好继续工作时,只需运行vagrant up即可从离开的地方恢复。这种方法的主要优点是速度非常快,通常只需要5到10秒钟来停止和启动您的工作。缺点是虚拟机仍然占用磁盘空间,并且需要更多的磁盘空间来存储虚拟机RAM的所有状态。
通过调用vagrant halt停止虚拟机将会优雅地关闭客户操作系统并关闭客户机。当你准备好再次启动它时,可以使用vagrant up。这种方法的好处是它会干净地关闭您的机器,保留磁盘的内容,并允许它被干净地重新启动。缺点是它需要额外的时间从冷启动开始,并且客户机仍然占用磁盘空间。
通过调用vagrant destroy销毁虚拟机将会从您的系统中删除所有客户机的痕迹。它将停止客户机、关闭电源并删除所有客户机硬盘。同样,当您准备好再次工作时,只需发出vagrant up即可。这样做的好处是您的机器上没有任何垃圾。客户机占用的磁盘空间和RAM将被回收,您的主机机器会保持干净。缺点是再次启动需要额外的时间,因为它必须重新导入。

关于vagrant upvagrant resume

命令: vagrant up

该命令会根据你的Vagrantfile创建和配置虚拟机。

这是Vagrant中最重要的命令,因为它是创建任何Vagrant虚拟机的方式。任何使用Vagrant的人都必须每天使用此命令。

命令: vagrant resume

该命令会恢复之前使用suspend command暂停的Vagrant管理的虚拟机。

或者只需查看终端中两个命令输出的差异:

$ vagrant resume
==> default: Resuming suspended VM...
==> default: Booting VM...
...

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: Resuming suspended VM...
==> default: Booting VM...
...

在执行vagrant up时,您可以看到检查动作。例如,如果存在更新版本的虚拟机镜像,您将收到通知:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: A newer version of the box 'laravel/homestead' is available! You currently
==> default: have version '0.3.3'. The latest is version '0.5.0'. Run
==> default: `vagrant box update` to update.
==> default: Resuming suspended VM...
==> default: Booting VM...

因此,在挂起后执行vagrant up是安全的吗?从你的输出中看,执行up将检测到之前已经挂起(而不是停止),然后进行恢复操作? - sheamus
@sheamus 是的,通常你可以使用 up 命令。它会进行检查,但这并不会使过程变慢,并且会在你的盒子有更新版本时通知你。 - totymedli

10
  1. 我通常在关闭电脑时使用halt命令。当你挂起电脑时,它会将当前状态图像存储到磁盘上。如果你不关心存储问题,那么你可以使用挂起命令。

  2. 如果你已经挂起了虚拟机,那么应该使用resume命令来恢复上一状态。如果你只是启动虚拟机,则应该使用“up”命令。

  3. 我认为,在休眠电脑时并不需要挂起虚拟机。


谢谢ganni。还有一个问题,如果你刚从vagrant halt回来,使用vagrant up --no-provision比使用普通的vagrant up更好吗? - kofi
嗨@kofi,默认情况下vagrant up在从简单的vagrant halt转换时不会运行配置。因此,您不需要在vagrant up中使用--no-provision。顺便说一句,默认情况下,在第一次vagrant up时运行配置。在这里查看文档 - ganni

2
最初的回答:
简而言之,如果您使用

$ vagrant suspend

then use

$ vagrant resume

最初的回答,但如果您使用

$ vagrant halt

最初的回答:使用 < /p>
$ vagrant up

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接