English日本語

文档 · 1.0

系统:升级与重启

这一章讲 系统 → 升级:怎么给 keelOS 升级、两个启动槽是怎么回事、怎么切换和回退、定时在夜里切换,以及升级时运行中的虚拟机会怎样。需要 host:write 权限。

1. 两个槽

keelOS 的启动分区里有两个槽,A 和 B。每个槽放一份完整的 keelOS:

  • 正在运行的是一个槽(页面上标 运行中);
  • 升级时,新版本写进没在运行的那个槽。写入不会重启,虚拟机照常运行;
  • 然后切换到那个槽。新版本起不来时,主机自己回到原来的槽;
  • 回退就是切换到另一个槽,那里还放着旧版本。

所以升级失败的代价很小:旧版本一直在另一个槽里,直到你下一次升级把它覆盖。

2. 升级页

打开 系统 → 升级。上面是当前运行的版本(keelOS 版本号和 槽 A · 运行中),旁边是升级的四步:检查、下载、写入、重启,高亮的是现在在第几步,下面是这一步要做的事。再往下是 启动槽 两张卡,标出每个槽的版本、写入时间,以及哪个槽 下次启动。

3. 升级

第 1 步:检查

选新版本的来源:

  • 网址:默认填 keelOS 的发布地址(GitHub 上最新的版本),点 检查更新。也可以改成别的 ISO 地址;改过以后输入框旁边有个按钮改回默认地址。
  • 本地文件:从电脑选 keelOS 的 .iso,点 上传。没有外网的主机用这个。

检查只看那个地址里是什么,不下载。如果已经是最新的,页面写"keelOS … 已经是最新版本"。否则弹出一个对话框:

  • 这个版本和正在运行的相比是更新(升级)、更旧(回退)还是同一个版本;
  • 大小,和发布说明(没有发布说明时是相对于正在运行的版本改了什么);
  • 免责条款。要勾 我已阅读并同意 才能点 下载。

不勾同意,什么都不会下载或写入。

第 2 步:下载

页面显示进度条、已下载多少、速度和剩余时间,取消下载 随时可点。下载断了会接着下;一个源 120 秒没有数据,keel 换到 keelos.dev 接着下。

下载前可以勾 下载完自动写入槽 X 并立刻切换(记在这个浏览器里):勾上以后下载完不再停下来问,自动写入并切换。不想亲自守着的话用它,但要先读 §5。

第 3 步:写入

下载完(或上传完)后页面写"keelOS … 已经就绪,可以写入槽 X",点 写入槽 X。可以点 丢弃 放弃。写入的是没在运行的槽,不会重启,虚拟机照常运行。若那个槽里已经是同一个版本,页面会提示重写会把它覆盖掉。

第 4 步:重启(切换)

写好后页面写"槽 X 里是 keelOS …,比当前运行的版本新",按钮是 升级到 …。点开是切换对话框,见 §4。想看有没有更新的版本,点 检查有没有更新的版本。

4. 切换:现在或定时

点 升级到 …(或回退、试用时对应的按钮)弹出 切换到槽 X。对话框里先列出现在运行的虚拟机,以及切换时每台会怎样(见 §5),再写一句这次切换会做什么。然后二选一:

  • 现在切换:点按钮,主机开始切换。页面盖上一个"主机正在重启"的提示,写着已经等了多久,主机回来后页面自己刷新,并说明结果:已切换到槽 X,或者切换没有起来,主机回到了槽 Y。
  • 定时:在 切换时间 里选一个时间(是主机时钟上的时间),点 定时;或点 今晚 03:00 一键填好再点 定时。到点自动切换,期间页面上写"计划 … 切换到槽 X",可以点 取消。

注意:切换时间要在将来。有嵌套虚拟化的虚拟机暂时不能做 checkpoint 时,现在切换 不能点,对话框里会说明怎么处理,见嵌套虚拟化。

切换的实质是"只试一次":新版本起来并被 keel 确认可用之前,下一次从固件启动仍然回到旧槽。新版本起不来、卡死或崩溃时,主机自己回到原来的槽,页面上写 切换到槽 X 没有起来:主机回到了槽 Y,原因记在主机上,运行 keel upgrade --status 可以看到。

主机超过 5 分钟没回来时,提示会建议看主机屏幕或串口控制台(IPMI SOL)。主机有 keelRM 管理口 时,提示里还会实时显示 root 的状态和控制台的最后几行。

5. 切换时虚拟机会怎样

keel 根据新版本自己决定切换的方式,你不用选:

方式 什么时候 运行中的虚拟机
重新加载系统(reload) 新版本的 hypervisor(hyp)和现在的一样 先挂起再恢复,暂停约 17–35 秒;用 SR-IOV 虚拟网卡等不能挂起的,关机后在 reload 之后再启动
整机重启 新版本带了新的 hypervisor,或者这台主机没有 hyp(原生模式) 先关机,重启后自动开回来,需要几分钟

切换对话框里每台虚拟机各占一行,写明它会被挂起、关机还是别的,需要关机的用醒目色标出。第二种情况下对话框会明说"主机会整机重启"。

6. 回退

如果新版本有问题,另一个槽里还是旧版本:在那个槽的卡片上点 回退到 …,对话框同上,现在或定时。旧版本不认识的新设置会被忽略,但保留在文件里,再升级时还在。

没有旧版本的槽显示 空。升级再写入一次,旧版本就被覆盖,没法回退了,所以新版本跑稳之前不要急着再升。

7. 大版本:先试用、再确认

有些版本改了磁盘上的格式(比如存储池的特性、挂起虚拟机的保存格式、设置文件的写法)。这样的版本分两段:

  1. 试用:切换后主机运行新版本,但盘上的东西仍保持旧格式。页面顶上有一张卡写 正在试用 keelOS …,可以退回 …。按钮是 试用 …、退回 …。这时随时可以退回旧版本,挂起的虚拟机在旧版本上接着运行。
  2. 确认升级:试用得没问题(运行满 7 天后页面会提醒),点 确认升级…。对话框列出这一步会做什么:存储池启用新特性、之后挂起的虚拟机按新格式保存、设置文件改成新写法、打开新功能、旧槽里的版本不能再启动。勾上 我明白之后不能退回到 …,点 确认升级。不用停虚拟机,几秒钟完成。

确认之后不能退回。有的版本写不出旧版本读得懂的格式,切换前页面会明说"这次升级之后不能退回",退回时挂起的虚拟机会先关机。

8. 重启主机

升级页没有单独的重启按钮,除非有改动在等重启:新的 hypervisor、hypervisor 设置或 keelRM 的开关,要到下一次重启主机才生效。这时页面上出现 重启主机,这次是整机重启(运行中的虚拟机先关机,重启后自动开回来)。平时重启和关机在 系统 → 维护,见系统:维护、时间与主机终端。

9. hyp 和原生模式

hyp 是 keelOS 的 hypervisor 层。上次在 hyp 上的启动没有走完(卡死、崩溃、断电)时,主机下一次经固件启动会自动不带 hyp(原生模式),虚拟机仍能跑,但主机重启时虚拟机会关机。升级页底部显示 hyp 的状态:hyp:开、hyp:试一次、hyp:关。想再试:点 再试一次 hyp,确认后下一次经固件重启时试一次,起不来就再下一次不带 hyp 启动。

10. keelNAS、keelAuth 和管理端的升级

keelNAS、keelAuth 和 keel 管理端是主机上的虚拟机,各自升级:换系统盘,数据盘不动,旧版本留 7 天可以回退。在它们自己的页面上操作,见账号、令牌与权限和 NAS。

11. 1.0 的限制

  • 升级的来源是一个发布地址(可改)或一个上传的文件;页面不会自己定期去查有没有新版本,要点 检查更新。