为什么在克隆硬盘后启动周期的早期会有 20-30 秒的暂停?

lur*_*ker 28 boot hard-drive cloning

我看过一些关于这个主题的其他帖子。只有一两个与我的情况非常接近,但没有明确的解决方案。我想具体描述一下我的情况,因为我有一些其他帖子中没有的细节。

我正在运行 Ubuntu 22.04.3 LTS。我有一个常规 SATA HDD 作为我的“系统”驱动器,它有 3 个分区:

  • /boot- 这是我指定的启动分区
  • /- 这是我的系统驱动器,还有其他所有东西
  • swap

我刚刚将 SATA 硬盘克隆到 SATA 硬盘,保持所有分区相同。但 UUID 现在不同了(我更改了它们,因为我希望能够在某个时刻安装两个驱动器)。我/etc/fstab使用新的 UUID 进行了更新,并通过一些研究将/etc/initramfs-tools/conf.d/resume文件更改为不引用旧的交换 UUID。

更换新 SSD 后,它可以正常启动,但在启动过程的早期有 20-30 秒的安静暂停(没有磁盘活动)。以下是它发生的地方的摘录:

[    2.498174] scsi 6:0:0:0: Direct-Access     TEAC     USB   HS-CF Card 4.08 PQ: 0 ANSI: 0
[    2.501897] scsi 6:0:0:1: Direct-Access     TEAC     USB   HS-xD/SM   4.08 PQ: 0 ANSI: 0
[    2.505707] scsi 6:0:0:2: Direct-Access     TEAC     USB   HS-MS Card 4.08 PQ: 0 ANSI: 0
[    2.509122] scsi 6:0:0:3: Direct-Access     TEAC     USB   HS-SD Card 4.08 PQ: 0 ANSI: 0
[    2.509357] sd 6:0:0:0: Attached scsi generic sg3 type 0
[    2.509936] sd 6:0:0:1: Attached scsi generic sg4 type 0
[    2.511152] sd 6:0:0:2: Attached scsi generic sg5 type 0
[    2.512435] sd 6:0:0:3: Attached scsi generic sg6 type 0
[    2.514823] sd 6:0:0:0: [sdc] Media removed, stopped polling
[    2.519575] sd 6:0:0:1: [sdd] Media removed, stopped polling
[    2.528168] sd 6:0:0:0: [sdc] Attached SCSI removable disk
[    2.533063] sd 6:0:0:2: [sde] Media removed, stopped polling
[    2.541980] sd 6:0:0:1: [sdd] Attached SCSI removable disk
[    2.550871] sd 6:0:0:2: [sde] Attached SCSI removable disk
[    2.559421] sd 6:0:0:3: [sdf] Media removed, stopped polling
[    2.572356] sd 6:0:0:3: [sdf] Attached SCSI removable disk
[   33.540466] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[   33.703038] systemd[1]: Inserted module 'autofs4'
[   33.718092] systemd[1]: systemd 249.11-0ubuntu3.11 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   33.731050] systemd[1]: Detected architecture x86-64.
[   33.736943] systemd[1]: Hostname set to <musicman>.
[   33.951287] systemd[1]: Queued start job for default target Graphical Interface.
[   33.953273] systemd[1]: Created slice Slice /system/modprobe.
Run Code Online (Sandbox Code Playgroud)

请注意,sdc通过sdf此处显示。我有一个旧的 SD 读卡器,有 4 个插槽连接到我的系统。即使我使用旧硬盘,这种情况也已经存在很长时间了。我的 中没有自动安装它们fstab,如下所示:

# <file system>                           <mount point>   <type>  <options>         <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=52de13f0-4bc6-4b65-95b3-ea3144b51cef /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=8c68f915-02a3-417f-8eae-c4f3b135805a /boot           ext2    defaults          0       2
# swap was on /dev/sda5 during installation
UUID=e3355472-3ec2-412c-80fa-42e9af3d900e none            swap    sw                0       0
UUID=d80fae04-3ecd-4e68-87ee-0ea47c89adae /backup         ext4    defaults          1       2
Run Code Online (Sandbox Code Playgroud)

/backup分区位于不同的物理驱动器 ( /dev/sdb) 上,并且在整个迁移过程中不会更改。

如果需要,我可以提供更多日志。但你可以看到很大的时间差距。我确实尝试过systemd-analyze blame,但似乎并没有帮助我找到答案。

然而,我注意到一些非常有趣的事情。如果我将旧硬盘连接到系统,将我的固态硬盘保留为主启动和系统驱动器,因此甚至不将旧硬盘包含在/etc/fstab或以任何方式安装它,系统将突然完全没有 20-30 秒的暂停正如预期的那样,一切都会在几秒钟内启动。

这20-30秒到底是什么?我做了一些搜索,/etc试图找到引用 UUID 的文本文件,但找不到除该resume文件以外的任何文件。

我的下一个实验是将所有 SSD UUID 设置为与旧 HDD 中的 UUID 相同。这只是一个实验,以确定系统中是否存在一些保留,认为旧的 UUID 仍然适用。但必须对系统的运行情况有一定的了解。

感谢您的任何帮助

lur*_*ker 42

我终于明白是怎么回事了。

正如我提到的,如果我的旧 HDD 连接(未安装),则系统在 SSD 上启动速度非常快。

我运行了一些额外的测试,发现如果我更改 HDD 上的旧交换分区(更改其类型和 UUID,然后将其更改回交换格式),它不再快速启动,并表现出与启动时相同的暂停。硬盘未连接。请注意,该分区不是系统的活动交换文件。

我回去并搜索了很多关于如何正确地将 Ubuntu 迁移到新驱动器的各种小文章,专门寻找如何处理分区swap。他们中很少有人提到处理swap,甚至一般来说,如果你的 UUID 发生变化,除了确保/etc/fstab更新之外需要做什么。

在大量此类文章和讨论中,我终于遇到了一条消息线程,其中提到在迁移文件系统后需要重新初始化 ramfs 文件:

update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)

这会更新目录initrd.img中所有内核版本的文件/boot。如果您不指定-k all(或-k <version>),那么它只会更新最新的内核。

当我进行最初的迁移时,我没有考虑到这一点。所以我做了这个更新,现在一切都按预期进行。

  • 完成任务并以可以帮助他人的方式清楚地记录任务方面都做得很好,干得好。 (3认同)