【vagrant】硬盘扩容

之前一直使用vagrant作为虚拟机的作者,遇到了一项棘手的问题——虚拟硬盘空间不足。

使用df -h命令查看后,发现主硬盘(/dev/sda1)的总空间仅有10G,而通常系统镜像的初始大小就超过9G。

经查,vagrant的设计初衷是快速还原运行环境,因此在虚拟机初始化时不会分配足够的主硬盘空间。

这导致使用半年后,空间不够用,甚至无法执行pip3 install命令。

经过进一步研究,发现了一个有效的解决方案——通过vbox操作来解决vagrant的空间限制问题。

准备工作:

在本次操作中,需要使用virtualbox提供的vboxmanage命令。因此,首先需要将此命令添加到环境变量中。

在Windows系统下,将virtualbox的安装路径添加到path项中。在Unix系统下,操作类似。

记录原始硬盘信息:

输入以下命令:

vboxmanage showhdinfo "box-disk1.vmdk" 

记录原硬盘的uuid,之后会用到。

制作扩容版硬盘:

首先,克隆原硬盘:

vboxmanage clonehd "box-disk1.vmdk" "new-virtualdisk.vdi" --format vdi

将硬盘克隆为vdi格式后,开始扩容操作:

vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720

其中30720单位为MB,表示30G空间。

jQuery硬盘容量使用情况百分比特效 jQuery硬盘容量使用情况百分比特效

jQuery硬盘容量使用情况百分比特效

jQuery硬盘容量使用情况百分比特效 33 查看详情 jQuery硬盘容量使用情况百分比特效

接下来,将硬盘文件转换回原来的格式(也可以直接使用vdi格式),建议不要直接覆盖原来的vmdk硬盘文件,以备份:

VBoxManage clonehd "new-virtualdisk.vdi" "resized.vmdk" --format vmdk

记录新vmdk文件的uuid信息。至此,带有原数据和新尺寸的硬盘制作完成。

将新硬盘载入使用,替换原硬盘文件:

虽然是替换,建议先备份原来的vmdk文件。

Windows系统:

ren box-disk1.vmdk box-disk1-backup.vmdkren resized.vmdk box-disk1.vmdk

Linux系统:

mv box-disk1.vmdk box-disk1-backup.vmdkmv resized.vmdk box-disk1.vmdk

修改.box配置文件:

替换完硬盘后,还需最后一步。

打开原vmdk对应的box文件,将原来的vmdk的uuid信息全部替换为新vmdk文件的uuid。注意,可能有多个地方需要替换,确保替换完全。

大功告成截图纪念:

【vagrant】硬盘扩容

可以看到,主硬盘现在已扩大到30G,再也不用担心空间不够用了。

方法来源:修改Vagrant box磁盘大小

以上就是【vagrant】硬盘扩容的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/510825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 00:37:40
下一篇 2025年11月9日 00:43:17

相关推荐

  • Go语言日志文件输出:使用os.OpenFile实现高效持久化

    本教程详细介绍了在Go语言中如何正确地将日志写入文件。核心在于使用`os.OpenFile`函数,而非`os.Open`,并结合`os.O_RDWR`、`os.O_CREATE`和`os.O_APPEND`等文件操作模式,确保文件能够被创建、读写并支持追加写入。文章提供了清晰的代码示例,并解释了关键…

    2025年12月16日
    000
  • Golang如何在Linux上配置开发工具链

    安装Go环境并配置PATH,设置GOPATH和GOBIN,启用Go Modules,选择VS Code并安装Go扩展与工具,创建项目测试运行与构建,确保权限正确即可完成Linux下Golang开发环境搭建。 在Linux上配置Golang开发工具链并不复杂,只要按步骤安装Go环境并设置好相关路径,再…

    2025年12月16日
    000
  • Go语言在Windows系统下静默启动子进程教程

    本教程详细介绍了如何使用go语言在windows操作系统中静默启动子进程,避免弹出恼人的命令行窗口。通过配置`os.procattr`结构体的`hidewindow`属性为`true`,开发者可以轻松实现后台计算或任务的无界面执行,确保用户体验不受干扰。 引言:静默执行子进程的需求 在开发Go语言应…

    2025年12月16日
    000
  • Go语言教程:在Windows平台下隐藏执行外部进程

    本教程将详细介绍如何在go语言中,特别是在windows操作系统环境下,实现外部进程的无窗口隐藏式启动。通过利用`os.procattr`结构体的`sys.hidewindow`属性,开发者可以有效避免在执行后台计算或自动化任务时,不必要的命令窗口弹出,从而提升用户体验和程序运行的隐蔽性。文章将提供…

    2025年12月16日
    000
  • macOS .bash_profile PATH 配置指南与故障排除

    本文详细指导用户如何在macos上正确配置`.bash_profile`以避免`path`环境变量失效。针对因错误修改导致`nano`, `ls`等系统命令不可用的问题,文章提供了临时恢复`path`的方法,并演示了设置go开发环境时正确追加环境变量的步骤,强调了`path_helper`的作用,确…

    2025年12月16日
    000
  • Go语言实现Windows后台进程无窗口启动教程

    本文详细介绍了如何使用go语言在windows操作系统中启动外部进程,并使其在后台隐藏运行,避免弹出命令行窗口。通过配置`os.procattr`结构体中的`sys.hidewindow`属性,开发者可以有效地管理后台计算任务,提升用户体验,确保进程无干扰地执行。文章提供了详细的代码示例和注意事项。…

    2025年12月16日
    000
  • Go语言在Windows下隐藏执行外部进程的教程

    本教程详细介绍了如何在go语言中,利用os包的startprocess函数,在windows操作系统下启动一个不显示控制台窗口的外部进程。通过设置os.procattr中的sys.hidewindow为true,开发者可以轻松实现后台计算或任务的无感执行,避免弹出烦人的命令窗口。此外,文章还将探讨o…

    2025年12月16日
    000
  • Golang如何提升TCP长连接处理效率_Golang TCP长连接处理性能优化实践详解

    答案:通过非阻塞I/O、单Goroutine双工模型、sync.Pool对象复用、TCP_NODELAY优化及高效心跳管理,结合系统调优,可显著提升Golang百万级TCP长连接处理效率。 在高并发网络服务场景中,TCP长连接的处理效率直接影响系统的吞吐能力和资源消耗。Golang凭借其轻量级Gor…

    2025年12月16日
    000
  • Go语言包如何导出为C/C++可用的动态/静态库(.so/.a):实现与实践

    go语言已提供官方机制,允许将go代码编译为c++/c++项目可调用的动态库(.so)或静态库(.a)。通过`go build -buildmode=c-archive`或`go build -buildmode=c-shared`命令,并配合`//export`指令,开发者可以有效地将go函数暴露…

    2025年12月16日
    000
  • 将Go包编译为C/C++可用的共享库(.so/.a)的现状与展望

    目前,go语言尚未直接提供将go包编译成标准c++/c++可直接加载和使用的动态链接库(.so)或静态链接库(.a)的功能。尽管go支持通过cgo调用c代码,但反向操作(即让c/c++项目直接消费go编译的库)仍处于活跃的社区讨论和开发阶段,未来有望通过新的构建模式或工具链改进实现。 Go语言与C/…

    2025年12月16日
    000
  • 解决 LiteIDE 自动补全问题:Go 开发环境 GOROOT 配置详解

    本教程详细阐述了解决 LiteIDE 中 Go 语言自动补全功能失效的问题。核心在于正确配置 `GOROOT` 环境变量,确保 IDE 及其辅助工具能准确识别 Go 标准库路径。文章将指导用户如何在 LiteIDE 内部和系统层面进行环境设置,并通过示例代码提供清晰的配置步骤,旨在帮助开发者恢复流畅…

    2025年12月16日
    000
  • 解决LiteIDE中Go语言自动补全失效问题

    本文旨在解决LiteIDE集成开发环境中Go语言自动补全功能失效的问题。核心在于正确配置Go语言的`GOROOT`环境变量,这包括在LiteIDE内部环境设置以及系统级别的`.bashrc`文件中进行配置。通过详细的步骤和示例,确保Go工具链能够正确识别标准库路径,从而恢复和优化代码自动补全功能。 …

    2025年12月16日
    000
  • 解决LiteIDE自动补全问题:Go环境路径配置指南

    本文详细介绍了在LiteIDE中解决Go语言自动补全功能失效的问题。核心在于正确配置Go语言的环境变量,特别是`GOROOT`。教程将指导用户如何在LiteIDE内部以及系统shell中设置这些关键路径,以确保自动补全功能正常工作,覆盖标准库和用户自定义代码。 LiteIDE作为一款轻量级的Go语言…

    2025年12月16日
    000
  • 解决LiteIDE自动补全失效问题:Go开发环境配置指南

    本教程详细指导用户如何解决liteide中go语言自动补全功能失效的问题。核心解决方案涉及在liteide内部以及系统级 shell 配置中正确设置 `goroot`、`gopath` 和 `path` 等关键环境变量。通过确保这些变量指向正确的go安装路径和工作区,可以恢复标准库及项目代码的自动补…

    2025年12月16日
    000
  • Go Web服务中安全会话令牌的生成:crypto/rand的应用实践

    本文深入探讨了在go web服务中生成用户会话令牌时,采用密码学安全随机数的必要性。它阐明了高熵随机数在抵御令牌猜测攻击中的关键作用,并详细介绍了如何利用go标准库crypto/rand包来高效且安全地生成此类令牌。通过具体代码示例和最佳实践,本文旨在指导开发者构建更健壮、更安全的认证系统。 会话令…

    2025年12月16日
    000
  • Go语言库的跨环境兼容:利用构建约束处理App Engine与标准SQL

    本文将探讨Go语言库如何在Google App Engine (GAE) 和标准运行环境中实现代码的条件编译,尤其针对appengine/cloudsql包的兼容性问题。通过利用Go的构建约束(Build Constraints),开发者可以优雅地隔离特定于GAE的代码逻辑,如数据库连接,从而在不修…

    2025年12月16日
    000
  • 解决Go语言GOPATH环境变量与sudo权限冲突的教程

    本文旨在解决go语言开发中,当使用sudo命令执行go get时,即使gopath已正确配置,系统仍提示gopath not set的问题。核心原因在于sudo默认不继承所有用户环境变量,特别是出于安全考虑。教程将提供两种解决方案:一是通过/bin/env显式传递gopath,二是更推荐的做法,即避…

    2025年12月16日
    000
  • 深入理解Go语言中select语句与time.After的性能考量

    在使用go语言的select语句实现goroutine中断模式时,开发者可能会发现,当使用time.after设置微秒级延迟时,循环执行频率远低于预期,而default分支则能达到极高频率。这主要是因为time.after依赖于操作系统层面的定时器,其精度和调度受限于底层os,尤其是在亚毫秒级别,跨…

    2025年12月16日
    000
  • Go语言中利用crypto/rand生成加密安全会话令牌的实践指南

    在go语言web服务中,为用户会话生成加密安全的令牌至关重要,以有效抵御会话劫持和猜测攻击。本文将深入探讨为何需要高熵令牌,并详细演示如何利用go标准库中的crypto/rand包来生成这些安全令牌,确保应用程序的认证机制健壮可靠。 会话令牌的安全性需求 在现代Web服务中,用户登录后通常会获得一个…

    2025年12月16日
    000
  • Go Goroutine中断模式与time.After计时精度及性能影响解析

    本文深入探讨了go语言中,当select语句结合time.after用于控制goroutine循环频率时,可能出现的性能瓶颈。特别是当设置微秒级延迟时,实际执行速率远低于预期。文章揭示了这一现象的根源在于time.after依赖底层操作系统计时器的精度限制,导致无法实现高频次的亚毫秒级精确计时,并提…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信