如何监控系统正在写入/读取磁盘的位置?

如何监控系统正在写入/读取磁盘的位置?

我的系统是 ubuntu。我想找出是什么占用了我的磁盘。事实上,我并不是想看看到底是什么占用了磁盘,而是想看看磁盘的哪些部分被占用了。写入和读取了哪些文件。

我正在构建家庭服务器,我不想让里面的磁盘一直旋转。不幸的是,我没有“从 USB 启动”选项,所以我无法将整个系统移到 USB。所以我想移动其中的一部分。最常用的部分。当然是 /var/log,但还有什么呢?

有没有工具可以告诉我磁盘上哪些目录/文件在过去 5 分钟内被使用过?知道哪些目录/文件在使用它们也很好。

答案1

此命令将显示过去 5 分钟访问(读取)的所有文件:

find / -amin -5

如果您想知道哪些文件被修改(写入),请使用-mmin选项而不是-amin

答案2

iotop可以告诉你使用磁盘的进程,并且lsof可以告诉您这些进程打开了哪些文件。

但这并不是你想要的。要找出具体访问了哪些文件,你可以尝试使用系统水龙头;通过正确的配置,这将告诉你确切地你想要的。iotime.stp例子可能是一个很好的起点。

答案3

iotop可能会有所帮助,它会告诉您哪些应用程序导致磁盘 I/O,我怀疑您将不得不使用lsof查看他们正在使用哪些文件。

答案4

我要提醒的是,并不是所有的写入都会像您想象的那样频繁地发送到磁盘,有几个文件系统/内核缓冲区将发挥作用,它们都“应该”帮助优化您的体验。

系统的 IO 活动将非常依赖于在其上运行的应用程序。您能否提供有关将要运行哪些应用程序的更多信息?是否有任何 DB(MySQL 等),是否有任何喜欢生成大量日志数据的服务器进程(Apache/httpd)?

相关内容