English日本語

文档 · 1.0

虚拟机管理

这一章讲虚拟机的日常管理:列表页、新建、控制台、开关机、修改设置、快照与克隆、开机自动启动、磁盘扩容和删除,最后列出 1.0 还不做的事。第一次建虚拟机请先看创建第一台虚拟机;这里把每个环节讲细一些。

1. 虚拟机列表

打开 虚拟机,默认进入 列表 页,上面有三个子页:

  • 列表:所有虚拟机,每台一行,显示名称、状态、操作系统、CPU、内存、IP、磁盘和控制台按钮。
  • 屏幕(F1–F12):只在主机接了显示器、本地屏幕功能打开时出现。主机自己的显示器和键盘用 Ctrl-Alt-F1 … F12 在主机和各虚拟机之间切换;这里每个按键显示它现在的画面,把虚拟机的名字拖到按键上就能改它用哪个键。
  • 自动启动:见 §7。

列表上能做的事:

  • 搜索:搜索框可以按名称、UUID、系统、IP、MAC 和备注查找。
  • 按状态筛选:全部、运行中、已停止、需要处理(出错、配置损坏,或者带着提示的虚拟机)。每个按钮旁边是台数。
  • 排序:点列标题排序,再点一次倒过来。
  • 展开一行:点一行的空白处,展开后看到 UUID、每块磁盘、光驱、网卡(接在哪个网络、MAC 和主机看到的 IP)、直通设备,以及 克隆 按钮。
  • 点名称进入这台虚拟机的详情页。

列表和筛选、排序的选择记在这个浏览器里,下次打开还在。kcell(应用容器)单独列在下面的 kcell 组里;不是 keel 建的、但在主机上跑着的 bhyve 虚拟机也会列出来,标着 不归 keel 管(只读)。

2. 新建虚拟机

点列表右上角的 新建虚拟机,走一个向导。最上面一排步骤会随模板变化,一般是:系统、资源、网络、选项、确认。随时可以点 上一步,或点 换模板 回到选模板;没建完离开这个页面,已填的内容在这个标签页里还留着。

2.1 选模板

模板按类别排:Linux、Windows、BSD、路由器 / 防火墙、NAS、其他,点开一个类别再选具体的系统(Windows、Linux 的类别下还有 桌面版、Server(服务器版)、发行版这一层)。也可以直接在上面的搜索框里搜。每个系统旁边写着 已测试 或 未测试,以及它至少要多少内存和磁盘。

模板里是这个系统需要的设置:固件(UEFI 或 BIOS)、磁盘和网卡的型号、要不要 TPM、显示怎么配等。想从头自己配,选最后的 自定义(全部自己设,或者直接写 config.json)。自定义模板 里放的是你从别的 keelOS 导入的模板文件,可以 导出、删除。

注意:Windows XP、2003、7 这类老系统选各自的模板:它们用 SeaBIOS(详情页的 固件 一栏写 BIOS(SeaBIOS))和系统自带的驱动。DOS、Windows 9x 一类更老的系统 1.0 不支持。

2.2 系统来自哪里

系统来自 有三种,模板决定提供哪几种:

  • 安装 ISO:从列表里选,或 从这台电脑上传,或者贴一个下载地址 从网址下载(由主机自己下载,可以离开页面)。ISO 放在存储池里,所有虚拟机共用,见存储。
  • 磁盘镜像(当系统盘):已经装好的系统镜像(路由器固件之类)当第一块盘。.img 直接用;.qcow2、.vmdk、.dmg 上传时 keel 自动转成 .img。压缩包要先解压。
  • 先不装(网络启动,或以后再说):虚拟机只有空盘。

选安装 ISO 却不选文件时,向导会提醒你硬盘是空的,安装要自己安排,确认后才继续。

2.3 资源:名字、CPU、内存、磁盘

  • 名字:字母、数字、.、_、-,以后在列表、日志、RDP 里都用它(例如 win11)。
  • CPU:vCPU 个数,1 到 64。
  • 内存:单位 GiB,不能低于模板要求的最低值,否则表单标红提醒。
  • 磁盘:模板建一块新盘,可以改大小;+ 磁盘 再加一块。磁盘放在 ZFS 存储池里,keel 为每台虚拟机建一个自己的数据集,磁盘、UEFI 变量、日志都在里面。

向导里没有 CPU 档位。需要的话建好以后在编辑页里设,见 §5.3。

2.4 网络

每个网卡要选接到哪个网络(虚拟交换机)。三个下拉框依次是:接哪个网络(或某个交换机)、接法、网卡型号:

  • 自动:用虚拟网卡;如果这台虚拟机在主机 reload 时是关机的、而且网络上有空闲的 SR-IOV VF,就用 VF。
  • 虚拟网卡、SR-IOV VF、整口直通:明确指定。选 VF 或整口直通时型号不用选,guest 里用的是真实网卡的驱动。
  • 型号:virtio-net(快,Linux 自带驱动,Windows 要装 virtio-win 驱动)、e1000(Windows、BSD 自带驱动)、pcnet。

主机上还没有任何网络时,这一步会提示你去 网络 页建一个;建完回来,已填的内容还在。路由器类模板的多个网口不能接到同一个网络上。网络的建法见网络。

2.5 选项

  • 模板自己的问题,例如 Windows 的 TPM 2.0(vTPM)。
  • 屏幕:VNC 打开才有图形控制台;分辨率(自动 就是和主机的显示器一样大,没接显示器是 1024 × 768);下次启动等控制台连上再开机(控制台打开以后才上电,看得到 "Press any key to boot from CD or DVD" 这类只出现几秒的提示,只管一次,Windows 模板默认勾上)。
  • 访问密码(可选):RDP 的密码,留空 = 管理员密码,用户名是虚拟机的名字。
  • 随主机启动:主机开机后自动启动这台虚拟机,见 §7。
  • 嵌套虚拟化:见嵌套虚拟化;主机不支持时是灰的,旁边写着原因。

2.6 确认

最后一步列出所有选择。建好就启动 默认勾上。想看或改交给 keel 的配置,展开 高级:config.json,这里能改表单里没有的项。点 建立,虚拟机建好,页面直接跳到它的详情页,启动在后台进行。

3. 控制台

虚拟机在运行时,列表的每一行和详情页顶部有控制台按钮:

  • 图形(VNC):虚拟机的屏幕,像坐在一台真机前面;键盘鼠标直接可用。只有打开了 VNC 的虚拟机才有。
  • 串口控制台:虚拟机的串口(文本)。Linux、路由器、BSD 把内核和登录终端接在串口上时很有用。

每个控制台有三种打开方式:在新窗口里打开(点按钮本身)、在本页打开、浮动窗口(始终在最前面,可以拖到浏览器外面,要浏览器支持)。浏览器拦下弹出窗口时,会自动改成在本页打开。列表里的按钮是图标,鼠标放上去有提示。

详情页左上还有一张虚拟机屏幕的小图,每 5 秒刷新一次,点它打开 VNC 控制台。

除了网页,也可以用 RDP 连虚拟机的屏幕:详情页的 RDP 一行写着地址、端口和用户名,点 下载 .rdp 文件 双击就能用 Windows 的远程桌面(mstsc)连上,从开机画面就能看到,guest 里不用装任何东西。keel 自己的客户端 kRDPclient 在此之上还有视频编码、USB 转发和声音。详见控制台与远程桌面。

4. 开机、关机和其他电源操作

列表每行和详情页右上有三个按钮:

按钮 做什么
启动 开机(已关机或出错的虚拟机可点)。
关机 向虚拟机发 ACPI 关机,等于按一下电源键,由 guest 自己正常关机。最多等 90 秒(可以在 自定义 里改 关机超时),时间到了还没关就强制关闭;如果它的直通设备还在产生中断、或 vCPU 还在忙(比如 NAS 在写盘),keel 会多等一会儿。点之前会再确认一次。
强制关闭(列表里叫 强关) 相当于拔电源,没写进磁盘的数据会丢。点之前会确认。

操作的结果会以提示条出现在页面上。

状态有:运行中、已关机、已挂起、出错、配置损坏。出错 的虚拟机详情页会写原因,修好设置后可以再点 启动。

挂起:主机做 reload(升级、换槽、重启 keelOS 的底层)时,运行中的虚拟机默认被挂起再恢复,暂停约 17–35 秒,里面的程序不重启。用 SR-IOV VF 的虚拟机默认改为关机再启动;每台虚拟机可以在 自定义 里改 主机 reload 时 是 挂起再恢复(默认) 还是 关机。详细见升级与重启。恢复失败的虚拟机,启动 按钮会变成 重新启动:从头开机,挂起的检查点挪到一边留着。

1.0 的网页上没有"挂起"、"恢复"、"重置"按钮。 命令行有:keel vm suspend ID、keel vm resume ID、keel vm reset ID(重置 = 立即强制停止再启动,光驱保留,等着下次重启生效的改动会应用)。见命令行 keel。

5. 修改设置

在详情页点 编辑,得到一页表单,分成 常规、CPU 和内存、存储、网络、显示、设备、固件、远程控制台。右边是 config.json,改过的行会对比原来的配置标出来;表单里没有的项,点 修改 JSON 直接改。保存 之后生效。

5.1 运行中的虚拟机

虚拟机在运行时,每一项旁边有一个标签说明什么时候生效:

  • 马上:名字、随主机启动、RDP 密码和 控制台视频、网络的切换……guest 不停。
  • 重启后:CPU、内存、CD-ROM、显示、固件、设备等。"重启"是 guest 自己重启,或关机后再开;从挂起恢复不算。
  • 部分马上:网卡和磁盘。换网络或交换机马上生效,链路不断(网段变了要在 guest 里续租 DHCP);型号、增删网卡、增删磁盘等下次重启生效。

要等重启的改动保存后,详情页出现黄色提示 有 N 项修改,下次重启生效,列出每一项,两个按钮:放弃修改 和 现在重启(先关机再开)。另一个页面里同时改了设置时,保存会被拒绝,提示重新打开编辑页。

5.2 常用的修改

  • 加 ISO / 换 ISO:存储 里 + ISO,从 ISO 库里选。装完系统后把 ISO 移除(点 ✕),下次从磁盘启动。
  • 加磁盘、加网卡:+ 磁盘、+ 网卡。新磁盘下次重启后出现。
  • BIOS 虚拟机从光盘启动:固件 里的 下次启动 ISO 优先,用一次。
  • 更新固件:详情页 固件 一行,keel 的 UEFI 固件更新后,旧虚拟机会在下次启动时换上;带 vTPM 的虚拟机保留旧固件,因为换固件会让 BitLocker 要求恢复密钥。要换时先准备好恢复密钥,在虚拟机关机时点 更新固件。
  • 声卡、USB 转发、嵌套虚拟化、PCI 设备:在 设备 里。PCI 直通见设备直通。

5.3 CPU 档位

CPU 和内存 里有一个 核心 下拉框:任意(大核优先)、性能(尽量大核)、节能(尽量小核)。它只对有大小核(P 核和 E 核)的 CPU 起作用:每个 vCPU 固定在选定种类的核上;大核不够时多出来的放小核(节能反过来)。其他 CPU 上这个设置暂时没有效果。改了要重启虚拟机才生效。

详情页的 NUMA 一行(多路主机上才有)写着这台虚拟机的 vCPU 和内存放在哪个节点;概览 → 监控 页有整台主机的 CPU 地图。

6. 快照与克隆

详情页下面的 快照 卡片:

  1. 在 名字 里填一个名字(默认是 snap-日期-时间),备注 可选,点 拍快照。
  2. 列表里每个快照显示时间、拍的时候虚拟机的状态、占用的空间,以及三个按钮: - 回滚:回到这个快照。快照之后写进磁盘的内容全部丢失,设置和 UEFI 变量也一起回去;比它新的快照会一起删除。虚拟机在运行时可以勾选 先正常关机(否则直接断电),再选 回滚后启动。 - 从这里克隆:用这个快照建一台新虚拟机。 - 删除:删快照。有克隆还在用它时不能删。

快照是 ZFS 的,几乎不占空间,拍得很快。它包含同一时刻的所有磁盘、配置和 UEFI 变量,但不含内存:运行中拍的快照等于突然断电时的状态(崩溃一致),要保证数据库之类的一致性,先在 guest 里关机或停掉服务再拍。

克隆 也可以直接点详情页顶部或列表展开行里的 克隆,从虚拟机"现在的状态"克隆(keel 先拍一个快照)。克隆时填新虚拟机的名字,选:

  • 链接克隆:立刻完成,和快照共享数据块;克隆还在时那个快照删不掉。
  • 完整复制:和源虚拟机互不相干,耗时和复制磁盘一样。

克隆出来的虚拟机有新的 UUID、MAC 地址和控制台端口,不自动启动,没有 RDP 密码,vTPM 默认重新生成(可以勾 复制 vTPM)。

快照放在虚拟机自己的数据集里,不是备份:存储池坏了快照也没了。备份和搬到别的主机见快照、备份与迁移。

7. 开机自动启动

虚拟机 → 自动启动 子页控制主机开机后哪些虚拟机自己起来、按什么顺序:

  1. 虚拟机默认不自动启动。在编辑页(或新建时)勾 随主机启动,或者在这里点 加入自动启动。
  2. 自动启动的 列表里是启动顺序。拖动一行到别处改顺序;拖到列表下面的 放这里:排到最后 排到最后。
  3. 最上面的 开机后先等 N 秒再起第一台,给存储池、网络留出时间。
  4. 每一行的 起来后等 N 秒:这一台启动后等多久再起下一台。比如先起路由器,等 30 秒,再起其他虚拟机。
  5. 不自动启动 把它从顺序里拿下来。
  6. 每一行右边显示这一台上次自动启动的结果。

没有主机写权限的账户只能看,不能改。

8. 磁盘扩容

磁盘只能加大,不能缩小。

  1. 编辑,在 存储 里把那块盘的 GiB 改大,保存。
  2. virtio-blk 和 NVMe 的盘马上扩容,不用停机;AHCI、IDE 的盘下次重启后生效。
  3. 然后在 guest 里把新空间用上:Linux 用 growpart 和 resize2fs 一类;Windows 在 磁盘管理 里先 重新扫描磁盘,再扩展卷。

9. 搬到别的存储池

主机有两个以上存储池时,详情页会出现 搬到别的存储池 按钮:虚拟机的数据集(磁盘、快照、检查点、UEFI 变量)复制到另一个池,校验后删掉旧的。选 搬到 的池,点 搬家。运行中的虚拟机也能搬,切换时停顿不到一秒;需要的空间不够的池灰着,写着原因。

10. 日志和配置

详情页顶部的 日志 打开串口、bhyve、supervisor 和事件日志,config.json 看这台虚拟机现在的完整配置(RDP 密码显示成星号)。排查问题见故障排查与日志。

11. 删除

删除是永久的:磁盘、快照、日志和设置都一起没有,恢复不了。

  1. 先把虚拟机关机(运行中的删除按钮是灰的)。
  2. 详情页最下面的 删除 卡片,点 删除这台虚拟机。
  3. 输入虚拟机的名字确认。名字对不上就不会删。

用这台虚拟机建的链接克隆或其他引用不受影响;ISO 库里的 ISO 不会被删。

12. 1.0 还不支持什么

  • 网页上没有挂起、恢复、重置按钮,命令行有(§4)。
  • 没有带内存的快照:快照只含磁盘、配置和 UEFI 变量,崩溃一致(§6)。
  • 磁盘不能缩小,也不能在网页上删除已有的磁盘(只能删新加还没保存的)。
  • CPU 档位只对有大小核的 CPU 有效(§5.3),其余的 CPU 绑定档位放到 2.0。
  • DOS、Windows 9x 这类很老的系统不支持,Windows XP 是最老的目标。
  • 嵌套虚拟化只在 Intel 主机上可用,且不能同时直通 PCI 设备,见嵌套虚拟化。
  • 同一块直通设备分给多台虚拟机时,先启动的那台拿到,其他的在它运行期间启动不了。