VirtualBox 使用教程:提升工作效率的实用技巧分享
2024-07-12
文章目录
在运维工作中,虚拟机扮演着重要的角色。它不仅帮助我在多种操作系统环境中进行测试和验证,还通过快照功能提供了实验和回滚的便利。此外,虚拟机为自动化脚本的测试与调试提供了理想的平台,并使得环境的快速部署与还原成为可能。总的来说,虚拟机的这些功能使得运维工作更加高效、灵活和安全。
引言
-
为什么需要使用虚拟机?
- 满足多操作系统环境需求
- 快照功能带来的灵活性
- 自动化脚本的测试与调试
- 快速部署与还原环境
- 部署集群多节点服务器环境需求
- 网络隔离安全测试等
-
为什么选择 VirtualBox?
- 免费开源的虚拟化软件
- 支持多种操作系统
- 适合个人和企业使用
- 相较于VMware,Hyper-V使用直观性更好
- VirtualBox 官网:https://www.virtualbox.org
-
本教程目标:
- 帮助用户掌握 VirtualBox 的基本功能
- 分享一些提升工作效率的实用技巧
- 提供问题解决方案
一、VirtualBox 基础入门
1.1 安装 VirtualBox
-
下载 VirtualBox:
-
安装步骤:
-
Windows的安装过程
首先双击主程序 VirtualBox-7.0.18-162988-Win.exe 默认下一步直至完成,然后双击扩展包 Oracle_VM_VirtualBox_Extension_Pack-7.0.18.vbox-extpack 默认点击确认,现在已经在宿主机上完成了 Virtualbox 。
-
安装注意事项和常见问题
VirtualBox 安装提示VT-x(Intel Virtualization Technology)或 AMD-V(AMD Virtualization)不可用或者虚拟机不能虚拟64位操作系统:
重启计算机,并在启动时按下 BIOS 访问键。常见的 BIOS 访问键包括 F2、F10、Delete、Esc,具体按键可以参考你的主板说明书。
进入 BIOS 设置界面后,找到与虚拟化相关的设置选项,通常在“高级”或“CPU 配置”菜单下。选项名称可能为:
Intel: “Intel Virtualization Technology” 或 “VT-x”
AMD: “AMD-V” 或 “SVM Mode”
启用虚拟化技术,然后保存设置并退出 BIOS,重启安装即可。 -
安装完成后长这样
-
1.2 创建和配置虚拟机
-
创建新的虚拟机:
-
新建虚拟机:使用ISO系统镜像文件,可以快速创建一个虚拟机,这里以安装Windows 24H2 为例
-
点击"控制"–”新建“
-
根据提示设置所需信息,如指定虚拟机名称,存放位置以及ISO镜像等信息后下一步
-
设置虚拟机内存和处理器
-
设置虚拟机磁盘,在配置 VirtualBox 虚拟机磁盘时,可以通过不勾选“预先分配全部空间”来优化存储使用。这种方式允许虚拟机根据实际使用情况动态占用宿主机存储空间,并且在后期可以通过收缩虚拟机磁盘来释放宿主机的磁盘空间。
-
校对摘要信息无误,点击“完成”。
-
-
-
配置虚拟机设置:
到这里,已经完成了创建虚拟机和简单的配置,现在可以点击主页面的“启动”按钮,启动该虚拟机并安装操作系统。以下列出对虚拟机更详细的配置步骤供参考,通常我习惯于这样配置。
-
主页面信息
-
系统设置:内存、处理器、显示设置
-
通过选中刚才创建的虚拟机,右键进入该虚拟机的设置页面
-
设置虚机启动顺序,关闭软盘
-
关闭声卡
-
USB设备,选择“USB 3.0控制器”
-
-
网络设置:NAT、桥接、仅主机网络
通常我会设置两张网卡,一张用于服务器访问公网,一张用于与本地宿主机网络互通(模拟云服务器公网和私网),详见2.4。
-
1.3 安装操作系统
现在已经完成了虚拟机的创建和基本配置,可以点击主页面的“启动”按钮,启动该虚拟机并安装操作系统。在安装系统时,如果发现鼠标无法移出虚拟机系统安装界面,可以按键盘上的右侧“Ctrl”键切换虚拟机内的键盘和鼠标与宿主机的捕获状态。已安装扩展包,就不需要“Right Ctrl”这个操作。
- 安装步骤:
-
从 ISO 文件启动虚拟机:选择安装介质
-
操作系统安装过程:常见操作系统的安装步骤
- 操作系统安装步骤(略)
-
安装完成后,切换windows11系统语言为中文,最终示例
-
操作系统安装教程(略)
-
二、VirtualBox 高级功能
2.1 快照和还原
云主机或虚拟机都支持快照功能,该功能在工作中经常被用于安全冗余或回滚测试工作,非常方便。通过快照功能,可以在进行重大更改之前创建系统的当前状态的快照,这样如果出现问题,可以迅速恢复到之前的状态,避免了系统崩溃带来的风险。
-
创建快照:
-
快照的用途:系统备份、状态恢复
-
创建快照教程
-
以windows11虚拟机快照为例,点击“快照”,设置备注信息后确认即可。
-
-
-
还原快照:
-
如何恢复到之前的快照状态
-
关闭虚拟机
-
选择要还原的快照,“恢复备份”即可。
-
-
2.2 虚拟机共享文件夹
- 设置共享文件夹:
-
创建和配置共享文件夹:主机与虚拟机之间的文件共享
-
共享文件夹配置教程
-
例如Windows11虚拟机,首先安装增强组件
-
在虚拟机操作系统中将自动挂载虚拟光盘,右键并点击“从媒体安装或运行程序”,默认下一步直至完成安装。
-
配置共享文件夹后,重启虚拟机(或注销虚拟机当前账号)生效。
-
通过宿主机共享文件夹:D:\share 与虚拟机的 Z 盘进行文件交换
-
工作中多虚拟Linux,共享文件夹从来就没用过,使用sftp数据交互挺好。
-
-
2.3 虚拟机克隆和复制
- 复制虚拟机:
-
全完全复制和连接复制的区别
-
阅读软件操作界面的说明
-
简单来说
完全复制:就是将原虚拟机完整的克隆了一份,从A-B后,AB无任何关联。(请注意再克隆时应该考虑同一网络中主机名的唯一性和MAC地址等主机信息不要冲突。)
链接复制:就是将原虚拟机的元数据克隆一份,从A-B后,AB存在关联(逻辑上的隔离),图中Windows11-24H2-copy是链接复制B,另一个是基线链接A。
-
-
如何复制虚拟机文件
- 图形化操作,按照提示操作即可。
-
2.4 使用虚拟网络
- 网络模式介绍:
-
NAT、桥接、仅主机网络、内部网络的区别和应用场景
-
网络地址转换(NAT)
该模式为创建虚拟机的默认模式
特点:
虚拟机可以访问外部网络(比如互联网),但外部设备(宿主机)无法直接访问虚拟机。适用于需要虚拟机访问互联网,但不需要外界访问虚拟机的场景。注意该模式下虚拟机间不可以互访。类云EIP网络。
解释:
你可以将该模式下的宿主机理解为一台路由器。虚拟机是连接到这个“路由器”的设备。路由器(宿主机)分配一个特定的地址网段(通常是10.0.2.0/24)给虚拟机。虚拟机可以通过路由器访问外部网络(比如互联网),但外部网络设备无法直接访问虚拟机。虚拟机之间不能相互通讯。
为什么叫NAT:
NAT(Network Address Translation,网络地址转换)会将虚拟机的私有IP地址转换成宿主机的公共IP地址进行外部通信。宿主机需要通过配置“端口转发”来访问虚拟机,这类似于路由器上的NAT端口映射。比如,将宿主机的某个端口映射到虚拟机的一个特定端口(如RDP),这样外部设备通过宿主机的特定端口就可以访问到虚拟机上的远程桌面服务。
下图为虚拟机的IP地址:10.0.2.15
该网络模式下,宿主机192.19.19.109无法直接与虚拟机10.0.2.15直接通讯
作端口转发配置后,可以通过端口转发实现宿主机与虚拟机端口通讯,如远程桌面。
-
桥接网卡
特点:
虚拟机就像连接到物理网络的独立设备,拥有自己的IP地址,可以与网络上的其他设备互相通信。适用于虚拟机需要与局域网中的其他设备直接通信的场景。类局域网中的另一台电脑。
解释:
把虚拟机当作连入办公室网络的一个独立电脑,它像办公室里的其他同学的电脑一样,直接连接到网络,可以与其他电脑互相访问。有点“无中生有”的感觉。
为什么叫桥接:
“桥接”形象地描述了它的功能:像桥梁一样连接不同的网络,使它们成为一个整体,允许彼此之间的数据流通。桥接模式下,虚拟机获得一个与物理网络中的其他设备(通常为宿主机)相同范围的IP地址,这使得虚拟机和物理设备之间的通信就像通过一座桥一样顺畅。
-
仅主机 (Host-Only) 网络:
特点:
虚拟机与宿主机可以互相通信,但虚拟机无法访问外部网络,外部设备也无法访问虚拟机。适用于需要虚拟机与宿主机通信但不需要访问互联网的场景,如测试和开发环境,类云VPC网络。
解释:
把虚拟机当作住在一个私人宅院里的住户,这个宅院只有宅院内的住户和主人(宿主机)才能互相访问,宅院与外界没有直接的连接。
为什么叫仅Host-Only:
“仅主机”就是说这种网络模式只允许宿主机和虚拟机之间的通信,不涉及外部网络连接。它创建了一个封闭的网络环境,确保虚拟机与外部网络隔离,仅能与宿主机和其他配置在相同Host-Only网络中的虚拟机通信。
-
内部网络
特点:
允许虚拟机之间相互通信,但完全隔离于宿主机和外部网络。虚拟机使用相同的内部网络名称加入同一个内部网络,可以互相访问,但不能访问宿主机,也不能访问外部网络。宿主机和外部网络也无法访问这些虚拟机。
解释:
虚拟机就像在一个孤岛上的居民,只有岛上的人能互相联系,无法与外界通信,外界也不知道这个岛。
为什么叫内部网络:
内部网络意指这种网络模式完全在虚拟环境内部运行,虚拟机之间可以相互通信,但与宿主机和外部网络完全隔离。这种命名反映了其设计目的:提供一个隔离的网络环境,让虚拟机之间能够安全、独立地进行网络通信,而不会对外部网络造成任何影响。
-
-
以上四种是我经常用到的网络类型可以看出
-
**网络地址转换(NAT) ** 适合创建虚拟机,在虚拟机中搞事情
-
网络地址转换(NAT) + 仅主机 (Host-Only) 网络 = 云主机(公网+私网)
-
桥接网卡 适合提供给其他小伙伴测试和部署
-
内部网络 适合模拟集群节点
结合对虚拟机配置多张网卡,为每张网卡配置不同类型的网络连接。就可以模拟出各种测试、部署环境。
-
-
三、提高工作效率的实用技巧
3.1 自动化虚拟机管理
-
使用 VirtualBox 命令行工具:
使用命令行工具可以实现脚本自动化,一个好的工具没有命令行工具或者API对运维工作者来说是一个灾难。
-
VBoxManage 工具命令参考
更详细的参考官方文档:https://www.virtualbox.org/manual/ch08.html
-
列出所有注册的虚拟机,(创建虚拟机命名时建议英文无空格)
VBoxManage list vms
-
启动虚拟机:使用
VBoxManage startvm <虚拟机名称>
命令可以启动一个虚拟机。VBoxManage startvm "MyVM"
-
关闭虚拟机:使用
VBoxManage controlvm <虚拟机名称> poweroff
命令可以强制关闭一个虚拟机。VBoxManage controlvm "MyVM" poweroff
-
创建虚拟机:使用
VBoxManage createvm --name <虚拟机名称> --register
命令可以创建一个新的虚拟机。VBoxManage createvm --name "MyVM" --register
-
删除虚拟机:使用
VBoxManage unregistervm <虚拟机名称> --delete
:注销并删除一个虚拟机。VBoxManage unregistervm "MyVM" --delete
-
-
-
编写自动化脚本:
-
如何通过脚本自动创建虚拟机示例
-
创建脚本
createvm.bat
内容如下:@echo off cd /d C:\Program Files\Oracle\VirtualBox REM 设置虚拟机参数 set VM_NAME=centos7.9-autoc set VM_PATH=D:\coconut\Virtualbox set ISO_PATH=C:\Users\Public\Downloads\AnolisOS-8.4-minimal-x86_64-dvd.iso set VDI_PATH=%VM_PATH%\%VM_NAME%\%VM_NAME%.vdi set MEMORY_SIZE=4096 set DISK_SIZE=40000 set CPU_COUNT=2 set HOST_ONLY_ADAPTER="VirtualBox Host-Only Ethernet Adapter #2" REM 创建虚拟机 VBoxManage createvm --name %VM_NAME% --ostype "RedHat_64" --register --basefolder %VM_PATH% REM 设置虚拟机内存、显存和CPU VBoxManage modifyvm %VM_NAME% --memory %MEMORY_SIZE% --vram 16 --cpus %CPU_COUNT% REM 配置网络适配器 VBoxManage modifyvm %VM_NAME% --nic1 nat VBoxManage modifyvm %VM_NAME% --nic2 hostonly --hostonlyadapter2 %HOST_ONLY_ADAPTER% REM 创建虚拟硬盘 VBoxManage createhd --filename %VDI_PATH% --size %DISK_SIZE% REM 创建并连接存储控制器 VBoxManage storagectl %VM_NAME% --name "SATA Controller" --add sata --controller IntelAHCI VBoxManage storageattach %VM_NAME% --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium %VDI_PATH% VBoxManage storagectl %VM_NAME% --name "IDE Controller" --add ide VBoxManage storageattach %VM_NAME% --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium %ISO_PATH% REM 设置启动顺序 VBoxManage modifyvm %VM_NAME% --boot1 dvd --boot2 disk --boot3 none --boot4 none REM 启动虚拟机进行安装 VBoxManage startvm %VM_NAME% @echo on
-
执行脚本效果如下:参考官方的命令工具文档,发挥你的想象即可。
-
-
3.2 优化虚拟机性能
- 性能优化技巧:
- 分配合适的资源:内存、CPU、硬盘空间
- 启用虚拟化扩展:VT-x、AMD-V
3.3 虚拟机备份和恢复
将虚拟机完整地导出为 OVA 格式,并结合命令行管理工具和 Bash 或 Bat 脚本,可以方便地提供给其他同学,快速交付测试或学习环境。例如,你可以预先部署好本地的 RAC、Master-Slave、Kubernetes (K8s) 等环境,然后将它们导出并分享给其他同学使用以进行学习。
此外,云主机可以通过 OSS(对象存储服务)导出主机镜像,并使用该镜像在本地虚拟机上还原。这种方法广泛应用于上云、下云,以及因故障将云数据转移到本地进行数据验证和测试等场景。
- 备份虚拟机文件:
- 备份虚拟硬盘和配置文件
- 恢复虚拟机:
- 从备份文件中恢复虚拟机
四、解决常见问题
4.1 虚拟机无法启动
- 常见问题排查:
- 虚拟机设置错误、硬件虚拟化支持问题
4.2 网络连接问题
- 解决网络问题:
- NAT、桥接网络配置错误
4.3 性能问题
- 虚拟机运行缓慢:
- 资源分配不足、性能调优
五、结语
- 总结:
通过本文的学习,读者应能够掌握 VirtualBox 的基础操作,并理解如何利用其高级功能提升工作效率。无论是测试多操作系统环境、调试自动化脚本,还是快速部署和还原环境,VirtualBox 都能提供强大的支持。希望本教程能为你的工作带来实质性的帮助,并激发你探索和使用更多 VirtualBox 的高级功能。 - 扩展资源:
- 进一步学习的资料和社区支持
- VirtualBox 官方文档:https://www.virtualbox.org/wiki/Documentation
- VirtualBox 论坛:https://forums.virtualbox.org/index.php