交換檔案會減慢 Linux 的啟動速度嗎?

交換檔案會減慢 Linux 的啟動速度嗎?

一段時間以來,我遇到了 Linux Ubuntu 18.04 啟動速度非常慢的問題(有時需要 5-10 分鐘)。奇怪的是,這似乎是從我編輯交換文件或/和我使用 Gparted 開始的。命令topswapon -s命令顯示交換檔案正在工作(我保留了 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 是目錄或常規檔案”

正確的建立/調整大小為 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.conf

改變這一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash libata.force=noncq"

對此:

GRUB_CMDLINE_LINUX_DEFAULT="libata.force=noncq"

然後:

sudo update-grub

reboot

現在,在重新啟動期間,螢幕上將顯示大量文字。當它停止或暫停時,螢幕上的最後一項將為我們提供有關問題所在的線索。拍一張清晰的照片並將其上傳到您的問題中,然後告訴我。

您的 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

相關內容