Snapd一直运行,导致jbd2/sda2-8无读写访问磁盘,消耗大量io和系统负载

Posted

技术标签:

【中文标题】Snapd一直运行,导致jbd2/sda2-8无读写访问磁盘,消耗大量io和系统负载【英文标题】:Snapd keeps running, causing jbd2/sda2-8 accessing the disk with no read or write, consuming lots of io and system load 【发布时间】:2020-09-25 08:14:34 【问题描述】:

当我什么都不做时,jbd2/sda2-8 的 io 使用率很高。

问题是我没有运行性能密集型程序,但系统负载仍然很高。其实正常负载在0.05以下,但从昨天开始一直高于1.5。经过一段时间的挖掘,我认为是 jbd2/sda2-8 的 io 使用导致了问题。

后来我去了电脑所在的房间,发现硬盘的LED灯一直在闪烁,可能在一秒钟内闪烁了很多次。说明io使用确实是个问题。

这里,https://www.webhostingtalk.com/showthread.php?t=1148545,它告诉我 jbd2 不是根本原因,我必须找出哪个程序真正在写入或读取磁盘。所以我发现真正的原因是snapd。

我尝试暂时停止 snapd 服务,负载立即下降。

这是在旧 PC 上运行的 Ubuntu Server 20.04。这是系统摘要:

OS: Ubuntu 20.04 focal
Kernel: x86_64 Linux 5.4.0-33-generic
Uptime: 12h 8m
Packages: 985
Shell: bash 5.0.16
Disk: 11G / 231G (5%)
CPU: Intel Core2 Duo E8600 @ 2x 3.336GHz
GPU: GeForce 9300 GE
RAM: 766MiB / 3935MiB

可以看到是双核cpu所以1.5的负载真的很高。

这是iotop的反馈

Total DISK READ:         0.00 B/s | Total DISK WRITE:       844.51 K/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:    1643.16 K/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    306 be/3 root        0.00 B/s    0.00 B/s  0.00 % 69.00 % [jbd2/sda2-8]
    972 be/4 root        0.00 B/s  324.81 K/s  0.00 %  0.15 % snapd
    919 be/4 root        0.00 B/s  259.85 K/s  0.00 %  0.12 % snapd
    926 be/4 root        0.00 B/s  259.85 K/s  0.00 %  0.12 % snapd
      1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init maybe-ubiquity
      2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
      3 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_gp]
      4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_par_gp]
      6 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H-kblockd]
      8 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [mm_percpu_wq]
      9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
     11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [idle_inject/0]
     14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [cpuhp/0]
     15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [cpuhp/1]
     16 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [idle_inject/1]
     17 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
     18 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
     20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H-kblockd]
     21 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
     22 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
     23 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_tasks_kthre]
     24 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kauditd]
     26 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
  keys:  any: refresh  q: quit  i: ionice  o: active  p: procs  a: accum                                                  
  sort:  r: asc  left: SWAPIN  right: COMMAND  home: TID  end: COMMAND                                                  

jbd2/sda2-8 使用 69.00% 的 io 但速度为零,就像之前提到的一些问题一样。但这里的区别是我什么都不做,而且我不知道是哪个程序导致了问题。最近我没有对软件进行大的改动。我所做的唯一更改是我安装然后卸载了 vsftpd。

我尝试过的

我一直在网上寻找解决方案,我找到了以下并尝试了其中的大部分:

    更新内核。由于我使用的是最新的操作系统,我认为没有必要。 更改磁盘的提交频率。我很害怕,所以没有改变它。 重新启动。重启后问题依旧。 更改 mysql 的配置。我认为mysql不是原因,因为我的数据库很小。我关闭了 mysql,负载立即降到 1.2,然后又升到 1.6。 查找那些异常大的日志并找出发生了什么。我发现 auth.log 非常大并且还在继续膨胀。我发现有人通过 ssh 猜测我的 root 密码来攻击我的服务器。真的让我很震惊。来自大量 IP 地址的大量请求!幸运的是,我拒绝了 root 的远程登录。我向我的 ISP 请求了一个新的 IP 地址并抵御了攻击。 在我的磁盘上运行智能检查。检查通过,我的磁盘状况良好。 检查磁盘使用情况。从上面可以看到空间足够了。

现在我已经通过停止 snapd 服务暂时解决了这个问题

就是这样。那么 snapd 有什么问题,我现在该怎么办呢?

【问题讨论】:

我认为这会有所帮助:serverfault.com/questions/450611/…. 我以前看过那个页面。我只使用了一个磁盘,根本没有raid,而且我的磁盘状况良好。像ningx这样的进程也有消耗io,所以对我没有帮助。 嗨 @sffred 欢迎来到 SO,您可以在此处查看此链接 linuxquestions.org/questions/linux-software-2/… 是的,我也检查了日志,现在我已经完全关闭了我的 ipv4 端口到公共网络,问题仍然存在。正如我上面提到的,我在问这个问题之前尝试过这个。 我在 Ubuntu 19 上确认了这个问题——它已经把我吓坏了!我现在在系统启动后冥想了大约 45 分钟,等待 snap 完成一些“非常重要的工作”,将千兆字节的垃圾(主要是浏览器缓存)从 ~/snap 的一个子文件夹移动到另一个。 【参考方案1】:

我卸载了 snapd,问题解决了。

【讨论】:

如何从 Ubuntu 中删除 snap 存储? askubuntu.com/questions/1035915/…【参考方案2】:

我也有同样的问题,我的系统是刚安装的ubuntu 20.04。 我通过中止正在运行的 snapd 作业修复了它。

    找出正在运行的作业 快速更改

这会给你一个工作编号 X

    中止工作

快速中止 X

    在 snap 中禁用 gtk 方案

快速禁用 ....

似乎只有某种强大的防火墙或其他东西背后的人会遇到这个问题。

【讨论】:

以上是关于Snapd一直运行,导致jbd2/sda2-8无读写访问磁盘,消耗大量io和系统负载的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 使用 snapd 安装 NodeJS 版本 14

如何模拟慢速和无读缓存磁盘驱动器

Fedora安装Snapd和Snap软件包

使用 snapd 在 archlinux 上安装 Heroku cli:找不到命令

如何解决“snapd返回状态码400:错误请求”?

在 OpenSuse 上通过 snapd 安装的 couchdb 无法正常工作