执行发布升级之前我应该​​采取哪些步骤来避免问题?

执行发布升级之前我应该​​采取哪些步骤来避免问题?

在收到通知后1404_HWE_EOL,我正在考虑将一个重要的生产系统升级到 16.04.1。我说“重要的生产系统”是因为这是我每天在工作中使用的工作站。我想避免错误或其他问题,因为我没有过多的时间来调试和解决问题(IT 部门不提供 Linux 系统方面的帮助)。我备份了所有数据,但没有备份当前操作系统分区(我可能会将操作系统驱动器作为另一层后备)。升级之前我还应该执行哪些其他步骤?我想知道如何在使用 Ubuntu 提供的版本升级时尽量减少复杂性。

我读过升级前删除 PPA。我安装了 27 个 PPA,需要花一些时间才能删除所有这些 PPA 及其附带的程序,然后在升级后撤消这一操作。这有什么好处吗?还有其他好处吗?

答案1

重要生产系统

我不会升级这样的系统。我会在另一台机器上安装 16.04,将实时数据复制到那台机器上。测试,再测试。然后将那台机器作为生产服务器。

您可以使用当前 14.04 服务器的 18.04 版本重做此操作。

为何要冒这个险?

答案2

我会获取工作站的映像备份(在 Linux Live 系统中为“dd”),并将其转换为 VirtualBox VM。(RAW 映像到 VDI)。之后,制作快照并在 VB 中运行此映像。执行所有步骤进行升级。如果出现问题,请将快照放回原位。升级系统后,您可以将 VDI 转换回原始状态并将其“dd”到您的系统或运行运行手册。
但在覆盖旧系统之前,请务必制作最后的“dd”映像备份。
我更喜欢从 USB 拇指驱动器运行我的系统,因此系统安装通过“VDI - >RAW -> usb tumb-drive”完成,并从升级/安装的系统启动。准备好了。好吧,您“丢失”了一个 USB 端口,但您永远不会有压力,而且您总是可以轻松地进行系统备份。多年来,我一直对我的工作站和服务器进行此操作。

答案3

这是@rinzwind 答案的变体,可能适用于您已有的硬件。

如果您的内部磁盘驱动器上有足够的可用空间(或可以释放足够的空间),您可以创建 2 个新分区(使用来自实时 CD/USB 发行版的 gparted 之类的程序)并将根 (/) 复制到其中一个分区,将 /home 复制到另一个分区,并将它们标记为 root2 和 home2 之类的标签,以便于找到。

如果 root 和 home 位于同一个分区,您可以直接复制它,但如果它们是分开的,那么出于很多原因会更好。

您必须通过在/etc/fstab新的根分区上编辑更改(更新新的 /home 和根分区的 UUID)将新的根指向新的 /home。

您可以通过执行ls -l /dev/disk/by-label查找新根和主目录当前所在的设备,然后运行ls -l /dev/disk/by-uuid从设备名称获取 uuid 来获取它们。

接下来,使用 grub-customizer 之类的工具更新 grub(从您的生产系统),以将新的根添加到您的 grub 菜单。

现在,您将在这些分区上拥有实时系统的精确副本。您可以在此副本上运行升级,并且生产版本仍然完好无损。您可以启动到您想要使用的任何一个。

一旦完成了升级,你只需告诉 grub 该副本是实时的(默认条目)并且原始副本现在是备份。grub-customizer 使做这样的事情变得相当容易。

如果 /home 或 root 中的数据过多(导致数据太大而无法复制),请先将其放入其自己的分区(务必告知访问它的程序有关移动的信息)。无需复制 - 只需备份即可。

这也使得备份数据变得更加容易,因为它不再与系统内容混合在一起。

有了第二组“测试”分区,您现在可以尝试各种您不想在日常工作所依赖的系统上冒险的事情。

我目前正在我的“开发”分区中运行 Kubuntu 12.04 和 16.04,直到它按照我想要的方式配置为止。

如今磁盘驱动器的价格如此低廉,您甚至可以将现有的内置驱动器复制到新的更大的驱动器,并在必要时使用它 - 如果您的公司允许的话。

这个答案涵盖了如何执行此操作的所有主要细节。我没有尝试涵盖每个步骤的每个小细节。但由于您使用的是所有内容的副本,因此不应该有任何严重问题,其他所有内容都已在 stackexchange 的某个地方介绍过了。

答案4

虽然这并不适用于您的具体情况,但如果 Ubuntu 系统是虚拟机,您可以在升级之前拍摄快照,如果不起作用则恢复,从而解决此问题。

我曾经升级过我的一台虚拟机,虽然升级失败而且据称回滚了,但我并没有得到一个干净/可运行的系统。

@Rinzwind 的答案也适用于虚拟机:创建一个新的虚拟机,在其上安装新的 Ubuntu 版本,然后开始复制内容。

相关内容