交换文件会减慢 Linux 的启动速度吗?

交换文件会减慢 Linux 的启动速度吗?

一段时间以来,我遇到了 Linux Ubuntu 18.04 启动非常慢的问题(有时需要 5-10 分钟)。奇怪的是,自从我编辑 Swapfile 或/和使用 Gparted 以来,这种情况似乎就开始了。命令topswapon -s命令显示 Swapfile 正在运行(我保留了 4 GB)。

但是以下命令显示出一些奇怪的事情:

sudo findmnt --verify --verbose

除以下内容外,其他所有线路均正常警告出现:

[W] non-bind mount source /swapfile is a directory or regular file

这一行到底是什么意思?是不是意味着无法挂载交换文件?(但实际上它最终还是正常工作了)。所以我想知道我的 fstab 文件中是否存在问题。

cat /etc/fstab

交换线提供以下内容:

/swapfile none swap sw 0 0

我听说在启动过程中查找和安装交换文件的问题会减慢整个过程。交换文件从主磁盘运行,所以我想知道上面的行是否应该改为如下内容:

UUID=xx9999x9-9x99-9xx9-9999-xx9x9xx99xx9/swapfile none swap sw 0 0

其中 UUID 是硬盘。我没有使用任何分区。

Systemd-analyze blame 给出以下输出:

systemd-analyze blame | head

     17.041s dev-sda1.device
     11.192s dev-loop9.device
     11.056s dev-loop16.device
     10.964s dev-loop14.device
     10.704s dev-loop6.device
     10.703s dev-loop1.device
     10.703s dev-loop7.device
     10.703s dev-loop2.device
     10.702s dev-loop4.device
     10.687s dev-loop13.device

使用后sudo apt-get purge snapd如下:

systemd-analyze blame | head
    7.902s dev-sda1.device
    7.152s NetworkManager-wait-online.service
    5.121s ufw.service
    4.792s systemd-udevd.service
    4.539s docker.service
    4.298s accounts-daemon.service
    4.152s systemd-journal-flush.service
    3.970s apparmor.service
    3.808s avahi-daemon.service
    3.751s bluetooth.service

该命令sudo blkid给出一行(我匿名化了 ID)。以前有很多行 /dev/loopX:TYPE="squashfs"

    /dev/sda1: UUID="xx9999x9-9x99-9xx9-9999-xx9x9xx99xx9" TYPE="ext4"   PARTUUID="9999xx999-01"

参数截图Disks

智能数据

系统日志的输出:

grep -i FPDMA /var/log/syslog*

[   48.245514] ata6.00: failed command: READ FPDMA QUEUED
[   48.247916] ata6.00: failed command: READ FPDMA QUEUED
[   48.250316] ata6.00: failed command: READ FPDMA QUEUED
[   48.252774] ata6.00: failed command: READ FPDMA QUEUED

以下是 Gparted 的屏幕截图:

分区

另一个观察:当我启动计算机时,屏幕会保持黑屏 5-10 分钟。然后经过长时间的等待,它会出现一个带有笔记本电脑标记的标题屏幕。从那里开始一切似乎都运行顺利。我只是想说这个,因为它可能表明在启动过程中哪里出了问题。我想知道引导加载程序 (Grub) 是否可能损坏,因为我之前在这个系统上运行了双启动,最近删除了 Windows 7。

文件系统表

sudo cat /etc/fstab

    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda1 during installation
    UUID=ae2158a5-6f28-4da8-8082-cc6d6bb20ed2 /               ext4       errors=remount-ro 0       1
    /swapfile none            swap    sw              0       0


sudo blkid
    /dev/sda1: UUID="ae2158a5-6f28-4da8-8082-cc6d6bb20ed2" TYPE="ext4"  PARTUUID="630bb523-01"

BIOS 版本

sudo dmidecode -s bios-version
1.03.05

主板信息:

TUXEDO Book DC1504
Model: W650SJ
Clevo CO

sudo dmidecode -t 2
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Notebook                        
Product Name: W65_67SJ                        
Version: Not Applicable                  
Serial Number: Not Applicable                  
Asset Tag: Tag 12345
Features:
    Board is a hosting board
    Board is replaceable
Location In Chassis: Not Applicable
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0

我正在运行 Ubuntu 18.04.5 LTS。

蛴螬

该命令dpkg -l grub* | grep ii给出以下输出:

ii  grub-common           2.02-2ubuntu8.18 amd64        GRand Unified Bootloader (common files)

ii  grub-gfxpayload-lists 0.7              amd64        GRUB gfxpayload blacklist

ii  grub-pc               2.02-2ubuntu8.18 amd64        GRand Unified Bootloader, version 2 (PC/BIOS version)

ii  grub-pc-bin           2.02-2ubuntu8.18 amd64        GRand Unified Bootloader, version 2 (PC/BIOS binaries)

ii  grub2-common          2.02-2ubuntu8.18 amd64        GRand Unified Bootloader (common files for version 2)

感谢您的帮助!

答案1

您在“编辑” /swapfile 时可能犯了一个错误。

  • “似乎自从我编辑 Swapfile 以来就已经开始”

  • “/swapfile 是目录或常规文件”

正确的创建/调整为 4G /swapfile 的大小的过程...

笔记:命令使用不当dd可能导致数据丢失。建议复制/粘贴。

sudo swapoff -a           # turn off swap
sudo rm -i /swapfile      # remove old /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm nnG RAM and 4G swap

确认 /etc/fstab 中的此行...并确认没有其他“交换”行...

/swapfile    none    swap    sw      0   0

reboot                    # reboot and verify operation

更新#1:

您的磁盘存在一些 NCQ 错误。

本机命令队列 (NCQ) 是串行 ATA 协议的扩展,允许硬盘驱动器内部优化接收的读写命令的执行顺序。

编辑sudo -H gedit /etc/default/grub并更改以下行以包含此额外参数。然后执行sudo update-grub将更改写入磁盘。重新启动。监视器挂起,并观察/var/log/syslogdmesg是否继续出现错误消息。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash libata.force=noncq"

如果这不能帮助解决问题,我们将回来并对磁盘进行坏块处理。

更新 #2:

由于您仍然遇到问题,我们将采取此措施来解决启动时间缓慢的问题。

编辑 /etc/default/grub。

更改此行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash libata.force=noncq"

更改为:

GRUB_CMDLINE_LINUX_DEFAULT="libata.force=noncq"

然后:

sudo update-grub

reboot

现在,重启期间屏幕上会显示大量文本。当它停止或暂停时,屏幕上的最后一项会给我们提供问题所在。拍一张清晰的照片,并将其上传到您的问题中,然后 ping 我。

您的 SMART 数据未显示任何坏块问题。它确实显示了大量读取错误,NCQ 补丁可能已经解决了这些问题。

更新 #3:

笔记:您应该做好备份,以防出现问题。

我们将更新您的 ramdisk,并重新安装 GRUB。


ls -al /boot/initrd*# 注意这些文件的大小

sudo update-initramfs -c -k $(uname -r)# 重新创建 ramdisk 文件

ls -al /boot/initrd*# 注意文件大小是否发生变化

reboot# 看看现在启动速度是否更快


dpkg -l grub* | grep ii#显示当前安装的 grub 文件包

sudo apt install --reinstall package_name_here# 对于上面列出的每个 GRUB 包

sudo update-grub# 更新 GRUB

reboot# 看看现在启动速度是否更快

更新 #4:

要检查更新的 BIOS,您必须在https://www.tuxedocomputers.com/index.php?module=account

要联系 Tuxedo 支持,请拨打电话:+4982189982992,或发送电子邮件至https://www.tuxedocomputers.com/en/Contact.tuxedo

相关内容