未知的东西从我的磁盘读取数据

未知的东西从我的磁盘读取数据

我家里有一台小型服务器用于访问我的文件,并且硬盘不会停止旋转。目前它运行的是 Ubuntu Server 22.04。执行类似命令$ cat /sys/block/sde/stat会显示一些信息,包括读取的总扇区数。如果我等待大约 20 分钟并再次执行此命令,则读取的总扇区数会增加。

$ cat /sys/block/sde/stat
 6886729 970027822 7822380784 1292509782    15759   276608  2297706   485868        0 30475568 1293440472        0        0        0        0    23680   444820
... Wait about 20 minutes
$ cat /sys/block/sde/stat
 6886734 970027822 7822380787 1292510398    15759   276608  2297706   485868        0 30476188 1293441088        0        0        0        0    23680   444820

但理论上不应该有任何进程访问此硬盘。
这一切都是在 2 天前从 Ubuntu Server 20.04 升级到 Ubuntu Server 22.04 后开始的。

我已经尝试使用<inside the correct directory>$ sudo fatrace -c,但这没有显示任何内容。我也尝试使用$ inotifywait -m -r /...,仍然没有显示任何内容。

我怎样才能深入挖掘,以便我的硬盘最终能够再次旋转?

答案1

使用iotop

您可以使用 监控磁盘 IO iotop

安装方式:

sudo apt install iotop

然后运行:

iotop

这应该准确地告诉您哪些进程使用磁盘和交换。

使用htop

您还可以直接用它监控 IO htop(尽管这是一种“隐藏”功能)。

安装方式:

sudo apt install iotop

然后运行:

htop

现在Tab按 切换到 IO 屏幕(而不是主屏幕)。这将提供类似于 的信息iotop

使用udisksctl

如果您怀疑该活动与有关udisks,您可以尝试运行:

udisksctl monitor

这将告诉您守护进程是否有活动udisks

答案2

我解决了。

sudo dstat -tdD /dev/xxx --top-io能够看到哪些服务对我的驱动器做了一些操作。 在我的情况下,这些服务是:

  • 智能
  • 中断平衡
  • udisks2

所以我不得不这么做

sudo systemctl stop udisks2.service # System still works, seems not to be so important
sudo systemctl disable udisks2.service
sudo systemctl stop smartd.service # SMART is nice, but not if the daemon prevents the drive from going into standby
sudo systemctl disable smartd.service
sudo systemctl stop irqbalance.service # If you got a server with hunders of drives this is meaningful for performance. In my case just overkill and prevents my drives from sleeping
sudo systemctl disable irqbalance.service

谢谢阿图尔·梅因利德提供帮助。


编辑:至少我认为它已经解决了。我意识到udisks2.service几个小时后会重新启动。服务已停止并禁用,但它仍会重新启动。这是什么鬼?


编辑2:可以掩盖这项服务。

sudo systemctl mask udisks2.service
sudo systemctl stop udisks2.service

现在这项服务不会重新启动,硬盘处于休眠状态。我测试了一个星期,一切正常。

相关内容