Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:virtualbox:virtualbox

VirtualBox

冻结状态

快照 + 每次使用前还原

不可变虚拟磁盘(Immutable Disk)(Generated by AI)

将虚拟磁盘设置为“不可变”模式。
每次关机时,VirtualBox 自动删除所有更改,下次开机重置为初始状态。

什么是不可变虚拟磁盘(Immutable Disk)?

不可变虚拟磁盘是一种虚拟磁盘模式,指的是:

  • 你创建好虚拟机后,把其虚拟硬盘(如 .vdi 文件)标记为“不可变”;
  • 此后每次虚拟机启动使用的是这份磁盘的原始内容;
  • 所有对磁盘的更改被记录在一个“差分文件”中
  • 一旦你关闭虚拟机,差分文件会被自动丢弃,虚拟机恢复到原始状态。

它的作用非常像一个“沙盒”系统或“临时桌面”环境 —— 永远不保存使用者更改

工作原理和机制详解

下面是其背后的关键机制:

1. 原始磁盘文件(base image)

你先准备一个虚拟硬盘(比如 Ubuntu.vdi),这个文件会作为“母盘”存在。

2. 差分磁盘(Differencing Image)

当磁盘被标记为“不可变”,VirtualBox 不再直接写入 .vdi 文件,而是在运行时创建一个临时差分盘用于记录所有写入操作(增删改等)。

3. 自动丢弃

  • 当虚拟机关闭或重启时,差分盘会被 自动删除
  • 所有临时改动全部丢弃,恢复到干净初始状态。

4. 不影响主磁盘

母磁盘永远不会被修改,因此你可以反复使用它作为多个测试、演示或教学环境的基础。

使用方法(详细步骤)

Step 1: 创建虚拟机和安装系统

  1. 使用 VirtualBox 安装一个操作系统,如 Ubuntu。
  2. 安装完成后关闭虚拟机。

Step 2: 将磁盘设置为不可变

可以通过命令行进行设置(没有 GUI 操作):

VBoxManage modifyhd "/path/to/your.vdi" --type immutable

注意事项:

  • 如果你使用的是 .vmdk.vhd,确保其支持“不可变”属性。
  • 如果你看到报错,可使用 VBoxManage list hdds 查看实际磁盘 UUID 再操作。

Step 3: 启动虚拟机进行测试

  • 每次启动你都将获得“初始状态”的系统;
  • 在虚拟机内的文件创建、设置变更、更新等操作都会在运行期间起效;
  • 一旦你关机,这些更改 全部消失

应用场景

场景 示例用途
课堂教学 给每位学生提供一个干净系统,练习操作后自动重置
演示环境 展示某个软件配置流程,重置后可立即重复演示
安全测试 执行不可信操作而不担心污染环境
快速回滚 快速测试安装脚本、配置变化等

注意事项和补充说明

差分盘的存储位置

  • 默认保存在虚拟机目录下,可通过 VBoxManage 查看和清理。

关机 vs 挂起

  • 必须彻底关机(不是“保存状态”或“挂起”),差分盘才会被删除;
  • 使用“保存机器状态”会保留差分盘,因此不会重置!

多用户使用

  • 可以将不可变磁盘作为“共享磁盘”挂载到多个虚拟机;
  • 每个虚拟机会拥有自己的差分盘,互不影响。

示例操作命令集

# 查看所有虚拟磁盘及其类型
VBoxManage list hdds
 
# 将虚拟磁盘设为不可变
VBoxManage modifyhd "/home/user/VirtualBox VMs/Test/TestDisk.vdi" --type immutable
 
# 恢复磁盘为普通(可写)
VBoxManage modifyhd "/home/user/VirtualBox VMs/Test/TestDisk.vdi" --type normal

总结

特性 描述
模式 Immutable(不可变)
更改存储 临时差分磁盘
更改持久性 会话结束即消失
是否自动还原 是(每次开机都是初始状态)
配置方式 仅命令行 VBoxManage
实用场景 教学、测试、演示、安全环境

虚拟磁盘加密(AI)

是的,虚拟机磁盘是可以加密的,但不同的虚拟化平台支持情况不同。针对你关心的 VirtualBox(VMBox),它确实支持磁盘加密功能,不过有一些限制和前提条件需要注意。

VirtualBox 支持虚拟磁盘加密吗?

支持:从 VirtualBox 5.0 开始提供 功能

VirtualBox 允许你为虚拟磁盘(如 .vdi)启用 全盘加密(AES 加密),以保护虚拟机的数据内容不被未授权访问。

VirtualBox 加密的工作方式

加密类型

  • AES(Advanced Encryption Standard)
  • 支持 128-bit256-bit 加密长度
  • 密钥由用户设置的密码生成

加密对象

  • 仅对 虚拟硬盘(VDI, VMDK, VHD) 文件加密
  • 虚拟机配置文件(.vbox)、快照、日志等未加密

密码存储

  • 密码不会存储在硬盘上,VirtualBox 仅在运行时使用
  • 用户每次启动虚拟机需输入密码,或通过命令行/配置预加载

如何启用磁盘加密(命令行)

VirtualBox 没有在图形界面中提供完整的加密管理,所以要使用命令行工具 VBoxManage 来操作。

设置磁盘加密示例:

VBoxManage encryptmedium "/path/to/your-disk.vdi" --cipher AES-XTS256-PLAIN64 --newpassword
  • AES-XTS256-PLAIN64:加密算法(也可用 AES-XTS128-PLAIN64)
  • --newpassword:命令运行时提示输入加密密码

你也可以用非交互式方式(不推荐):

VBoxManage encryptmedium "/path/to/disk.vdi" --cipher AES-XTS128-PLAIN64 --newpassword "YourPasswordHere"

解密磁盘(取消加密)

VBoxManage encryptmedium "/path/to/disk.vdi" --discardpassword

或者将加密磁盘克隆为非加密版本:

VBoxManage clonemedium encrypted-disk.vdi decrypted-disk.vdi --existing

限制与注意事项

限制项 描述
GUI 操作 VirtualBox GUI 不支持设置或管理加密,仅支持密码输入
快照兼容性 必须删除所有快照后才能启用或取消加密
加密磁盘不可变性 不能对加密磁盘设置为“不可变”或“共享”
性能影响 加密磁盘会带来少量 I/O 性能开销
安全性 加密强度可靠,但保护范围仅限磁盘内容,不能防止截屏、内存攻击等

加密磁盘的典型应用场景

  • 敏感数据开发环境(如金融、医疗)
  • 笔记本携带虚拟机镜像,防止丢失泄露
  • 多用户系统中保护虚拟机内容
  • 差分磁盘 / 不可变磁盘结合实现安全 + 清洁重置环境

加密状态查看

你可以使用以下命令查看磁盘的加密状态:

VBoxManage showmediuminfo "/path/to/disk.vdi"

输出中会有:

Encryption:           AES-XTS256-PLAIN64
Encryption key:       Present (not stored)
/var/www/DokuWikiStick/dokuwiki/data/pages/软件/virtualbox/virtualbox.txt · Last modified: 2025/05/19 07:50 by zhonghui