我看过一些关于这个主题的其他帖子。只有一两个与我的情况非常接近,但没有明确的解决方案。我想具体描述一下我的情况,因为我有一些其他帖子中没有的细节。
我正在运行 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.
请注意,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
/backup
分区位于不同的物理驱动器 ( /dev/sdb
) 上,并且在整个迁移过程中不会更改。
如果需要,我可以提供更多日志。但你可以看到很大的时间差距。我确实尝试过systemd-analyze blame
,但似乎并没有帮助我找到答案。
然而,我注意到一些非常有趣的事情。如果我将旧硬盘连接到系统,将我的 SSD 作为主启动和系统驱动器,因此即使不将旧硬盘包含在内/etc/fstab
或以任何方式安装它,系统将突然完全没有 20-30 秒的暂停正如预期的那样,一切都会在几秒钟内启动。
这20-30秒到底是什么?我做了一些搜索,/etc
试图找到引用 UUID 的文本文件,但找不到除该resume
文件以外的任何文件。
我的下一个实验是将所有 SSD UUID 设置为与旧 HDD 中的 UUID 相同。这只是一个实验,以确定系统中是否存在一些保留,认为旧的 UUID 仍然适用。但必须对系统的运行情况有一定的了解。
感谢您的任何帮助
我终于明白是怎么回事了。
正如我提到的,如果我的旧 HDD 连接(未安装),则系统在 SSD 上启动速度非常快。
我运行了一些额外的测试,发现如果我更改 HDD 上的旧交换分区(更改其类型和 UUID,然后将其更改回交换格式),它不再快速启动,并表现出与启动时相同的暂停。硬盘未连接。请注意,该分区不是系统的活动交换文件。
我回去并搜索了很多关于如何正确地将 Ubuntu 迁移到新驱动器的各种小文章,专门寻找如何处理分区
swap
。他们中很少有人提到处理swap
,甚至一般来说,如果你的 UUID 发生变化,除了确保/etc/fstab
更新之外需要做什么。在大量此类文章和讨论中,我终于遇到了一条消息线程,其中提到在迁移文件系统后需要重新初始化 ramfs 文件:
这会更新目录
initrd.img
中所有内核版本的文件/boot
。如果您不指定-k all
(或-k <version>
),那么它只会更新最新的内核。当我进行最初的迁移时,我没有考虑到这一点。所以我做了这个更新,现在一切都按预期进行。
您似乎已经
/dev/sdc
通过/dev/sdf
选项(这/etc/fstab
导致auto
它们在启动时安装),并且那里没有实际的设备。系统尝试从每个磁盘读取数据,但没有得到响应,然后超时。时间就这样流逝。阅读man mount fstab
,然后删除该auto
选项。