我想为基于根 FS 映像的 Ubuntu 机器建立一个部署过程。我想将映像恢复到简单格式化的硬盘上(我可以在部署期间完全擦除磁盘)。
我宁愿保持配置简单,而不是分成单独的/
和/home
到目前为止,我已经尝试使用 Clonezilla 并成功创建了可以恢复的根分区映像。然而,使用该过程会导致我恢复的根分区很小,与未压缩时的基本映像一样小 - 大约 20 GB。我想将实际硬盘驱动器上的分区增长到最大容量,然后将文件系统恢复到其中,包括所有符号链接和其他花哨功能。
此外,我正在寻找一种过程,当分区恢复到驱动器上时,该过程可以可靠地安装和配置驱动器上的引导加载程序和引导分区。我应该去哪里看?似乎任何dd
基于 的进程都是按块计算的,并且您被迫让目标分区与图像大小相同。同时,我不能保证我要以这种方式部署的机器的所有磁盘都具有相同的容量......该采取什么方法?也许我需要一种更高级别的映像解决方案 - 一种备份文件系统而不是分区的解决方案?
更新:在对可能的配置做了一些刺激之后,我的问题归结为这一点。如何建立一个可以一步执行以下操作的管道:
- 从 DVD/CD 启动机器
- 将硬盘格式化为MBR/root/swap,没有任何空白空间
- 确保它是可启动的
- 从网络映像克隆根分区
到目前为止,我们已经确定了以下工作流程:
- 制作小磁盘的映像(70 GB)
- 将其整体恢复
- 手动进入 gparted 并调整分区大小,使根分区大于其映像版本
但它让我们连续启动两个磁盘,这非常烦人。
答案1
文件系统恢复- 虽然我不确定 Bootzilla 是如何工作的,但你基本上有三个选择:
在底层块设备级别上操作(即在文件系统下) - 使用克隆(例如
dd
)创建原始图像的精确副本。无论您有多大的分区,您最终都会得到原始大小的文件系统(如果分区甚至物理设备小于原始文件系统,则很可能会出现严重的问题)。这是您拥有的最快的选项(基本上仅受源设备和目标设备速度及其互连速度的限制)。另一方面,它是最不灵活的 - 如果您最终希望拥有不同大小的分区,则必须手动扩展它们(或编写脚本)。此外,通过保留整个块设备的映像,您会浪费空间(映像包含未使用的空间,尽管该空间可能会被清零,然后会压缩映像)。
如果您正在维护大量(大部分)相同的系统,那么这是正确的方法,因为它最不复杂。
操作在文件系统级别 - 使用您正在使用的文件系统附带的工具来归档其内容并将其恢复到新格式化的文件系统中。例如,在以下情况XFS,您可以使用
xfsdump
+mkfs.xfs
+xfsrestore
组合(有关详细信息,请参阅手册页)。它有点慢,但您保留的图像仅包含所需的数据(没有浪费空间)。如果相关文件系统大部分是空的,这反过来可以轻松弥补额外的开销(在恢复时更新文件系统结构)。它还使您有机会创建和部署增量快照。创建新文件系统的附加步骤允许您使用所需的任何分区大小(足够大)并根据特定需求调整每个目标文件系统(更改块大小、元数据空间等)。缺点是它是特定于文件系统的。
在文件系统级别上操作 - 通过使用标准工具,例如
tar
orcpio
(甚至rsync
orcp
)以及可选的压缩(如前面的情况)。您可以轻松更改底层文件系统,并且过程非常简单。必须特别注意特殊文件(稀疏文件、设备/命名管道)的处理,因为工具的行为差异很大。您还必须确保不会跨越文件系统边界。
引导装载程序- 不要为单独的/boot
分区而烦恼 - 相反,我强烈建议考虑单独的/home
.在很多情况下,为数据建立一个单独的分区是不必要的,甚至是一个坏主意。
根据所使用的引导加载程序,它甚至可以在完整磁盘克隆之后工作 - 相同大小的磁盘(不仅仅是分区!)之间的第一个选项,但通常应该首选“重新安装”(并且非常简单) - 您正在复制所有必要的配置文件因此,只需运行引导加载程序安装程序就足够了。
唯一需要注意的是从哪里引导加载程序读取数据并在哪里它写了吗 - 好主意可能是chroot
使用新的文件系统并从那里运行引导加载程序。确保您进行了bind-mount /dev
,/proc
并且可能/sys
从当前活动的根文件系统进入chroot(即新克隆的文件系统)。
注意:20GB 分区相当大 - 例如,一般桌面 Linux 安装通常远低于 10GB,并且已经包含相当多的软件。
如果您的用户正在安装其他软件和/或您(作为管理员)正在为他们安装它(基于每台计算机),那么它可能应该位于/usr
.用户的软件通常直接位于他们的家中(这非常有用,特别是对于网络安装的主目录),系统特定的程序应该进入/usr/local
,它可以很容易地成为另一个分区。缓存/日志也最好分开保存。除了其他事情之外,干净的分离可以保持访问权限的健全 - 并非每个用户都应该需要对其计算机具有管理员访问权限(是的,有很多例外,但首先应该始终将其视为非标准)。重新镜像机器并不一定会破坏所有东西——或者,换句话说——人们可以只重新镜像某些部件。并且MKFS DEVICE_OF(/var/chaches)
比 更快rm -Rf /var/caches
。从文件系统获取缓存数据的快照(如果需要)也更容易。
缺点是,由于 HDD 的平均大小,磁盘空间碎片(分成多个分区)现在应该不是什么问题了。