如何在Linux下查看磁盘报错信息 (linux 查看磁盘报错)

在使用Linux进行磁盘维护和管理时,磁盘报错信息的查看是非常关键的。磁盘报错信息能够让管理员了解到磁盘的异常情况,从而及时采取相应的措施进行修复。本文将介绍。

1. 使用artctl命令查看磁盘健康状态

artctl是一个用于监测磁盘健康状态的工具,它可以帮助我们发现磁盘的问题以及提前预测磁盘出现问题的可能性。要使用artctl查看磁盘报错信息,需要先安装artmontools工具包。在Debian/Ubuntu中,可通过以下命令进行安装:

sudo apt-get update

sudo apt-get install artmontools

安装完成后,就可以使用artctl来查看磁盘的健康状态信息。以下命令将列出所有可用的磁盘:

sudo artctl –scan

然后,可以输入以下命令来查看指定磁盘的健康状态信息:

sudo artctl -a /dev/sda

其中,/dev/sda是磁盘的设备节点名称。

查看普通信息:

sudo artctl -i /dev/sda

查看安全删除信息:

sudo artctl -d sat -i /dev/sda

2. 使用dmesg命令查看系统日志信息

除了使用artctl查看磁盘健康状态信息外,还可以通过查看系统日志来获取磁盘报错信息。Linux系统日志存储在/var/log目录下,其中,dmesg文件记录了系统启动期间的信息。以下命令将显示当前系统中最后20行的dmesg信息:

dmesg | tl -n 20

要查看更多的dmesg信息,可以使用以下命令:

dmesg

该命令将显示所有的dmesg信息。

3. 使用journalctl命令查看日志信息

除了dmesg外,Linux还提供了journalctl命令用于查看系统日志信息。以下命令将显示最近20行的日志信息:

journalctl -n 20

要查看更多的日志信息,可以使用以下命令:

journalctl

该命令将显示所有的日志信息。

4. 使用artd守护进程来监控磁盘健康状态

artd是一个守护进程,可以实时监控磁盘的健康状态。当磁盘出现问题时,artd将自动触发警报通知管理员。要启动artd守护进程,需要在/etc/artd.conf文件中配置需要监控的磁盘设备信息。以下是一个示例配置文件:

/dev/sda -a -s (S/../.././02|L/../../6/03)

/dev/sdb -a -s (S/../.././02|L/../../6/03)

上述示例配置文件中,/dev/sda和/dev/sdb是需要监控的磁盘设备,-a参数表示启用智能磁盘监控,-s参数表示设置报警类型和报警时间。该配置文件将在每天的2:00和18:03分别执行检测。要启动artd守护进程,可以使用以下命令:

sudo systemctl start artd

要允许artd守护进程在系统启动时自动启动,可使用以下命令:

sudo systemctl enable artd

在Linux下查看磁盘报错信息是非常重要的,它可以帮助管理员了解磁盘的异常情况,并及时采取相应的措施进行修复。本文介绍了使用artctl、dmesg、journalctl以及artd四种方法来查看磁盘报错信息,希望对读者有所帮助。

相关问题拓展阅读:

linux硬盘占用不正常

linux硬盘占用不正常?Copyright ©, CSDN.NET, All Rights Reserved

 登录



JasonLiu1919

关注

linux磁盘异常占用 原创

:03:13

JasonLiu1919  

码龄9年

关注

背景:

某服务器报警,/根目录下磁盘超设定阈值。

分析:

1:查看磁盘占用情况

df -h

可以看出根目录已经占用了86%:

从上述信息可以看出根目录的文件系统对应的设备是/dev/sda2。

注:disk free(df,检查文件系统磁盘使用情况)

2:根目录的挂载情况

运行du -h -x –max-depth=1

查看是哪个目录占用的这么多空间,这个命令中的-x参数会让du命令不统计不在同一个磁盘分区上目录,或换句话说,忽略其他的磁盘挂载点。结果出乎意料,根本没有没有df中显示的8G那么多。

du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。

du是以文件名、目录名为依据计算空间使用的,而df是以硬盘块使用情况来计算空间使用的。

当一个应用程序正在写一个大文件的时候,比如rm或者mv了这个文件,应用程序会占有句柄,并根据句柄所指磁盘位置直接写磁盘,而不会检查该文件是否被删除。

3:猜测:是否是因为有些进程使用已经被删除的文件?

当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录条目。

为此采用lsof(“list open files”)命令检查打开的文件,进而定位相应的进程。

lsof的命令结果:

Command、PID 和 User 列分别表示进程的名称、进程标识符 (PID) 和所有者名称。Device、SIZE/OFF、Node 和 Name 列涉及到文件本身的信息,分别表示指定磁盘的名称、文件的大小、索引节点(文件在磁盘上的标识)和该文件的确切名称。

lsof | grep ‘8,2’ | grep ‘deleted’

从执行结果发现有异常进程,其使用的文件已经被删除,但是该进程仍然持有该文件。

从下图可以看出父进程11864和子进程共用202308——26746.txt这个文件,但是该文件已经在物理磁盘中被删除。

通过cd /proc/11864进入该进程的系统位置信息:

4:查看父进程:

由此可以确定该进程启动的脚本位置信息,从而确定该进程的具体任务信息。

对该进程进行kill操作,再次查看文件系统的磁盘的使用情况:

从上述可以知,根目录的磁盘占用已经降到30%。从而确证是该进程所引起的根目录磁盘占用问题。

5:总结

一个文件创建,就新生成了一个inode节点,且inode节点的引用计数为1。当文件被一个进程打开,则在内存中缓冲建立此inode节点缓存,且其引用计数加1。一个文件可以被多次打开,创建多个文件描述符,但对应的inode节点只有一个,对应的磁盘存储只有一个,只是引用计数每打开一次加1。

当文件被rm,在操作系统内部其实是调用了unlink操作,其目录项被删除(du统计时就会忽略),如果其对应的inode节点的引用计数为0,则删除对应的inode节点和清除inode节点位图中对应的位,其对应磁盘可被再申请;但如果此文件被其他进程打开,则其对应的inode节点的引用计数不为0,则不会删除对应的inode节点和清除inode节点位图中对应的位,其对应磁盘不能被再申请,也就是在lsof下可以看到deleted句柄;当前文件被所有使用进程close后,系统删除对应的inode节点和清除inode节点位图中对应的位,其对应磁盘可被再申请。

一个被进程打开的文件被rm后,其目录项被删除了,在du命令下是不能被统计到,而其inode没有被删除,在df命令下是可以被统计到的,这就是在du和df存在较大差别的原因。

联合lsof和proc目录恢复删除的文件:

/proc 是一个目录,其中包含了反映内核和进程树的各种文件。这些文件和目录并不存在于磁盘中,因此当您对这些文件进行读取和写入时,实际上是在从操作系统本身获取相关信息。大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,所以 /proc/1234 中包含的是 PID 为 1234 的进程的信息。

在 /proc 目录的每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 实用程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以如果一个进程使用的文件被删除了,

通过在该进程的目录中进行查找,此时可以访问进程的文件描述符。

向 lsof 传递文件名时,比如在 lsof /file/I/deleted 中,它首先使用 stat() 系统调用获得有关该文件的信息,不幸的是,这个文件已经被删除。在不同的操作系统中,lsof 可能可以从核心内存中捕获该文件的名称。

# lsof | grep error_log

输出结果:

httpd root 2w REG,

/var/log/httpd/error_log (deleted)

httpd root 7w REG,

/var/log/httpd/error_log (deleted)

… more httpd processes …

在这个示例中,可以看到 PID 2452 打开文件的文件描述符为 2(标准错误)和 7。因此,可以在 /proc/2452/fd/7 中查看相应的信息,即可查找删除的文件:

cat /proc/2452/fd/7

Digest: generating secret for digest authentication

Digest: done

LDAP: Built with OpenLDAP LDAP SDK

Linux 的优点在于,它保存了文件的名称,甚至可以告诉我们它已经被删除。在遭到破坏的系统中查找相关内容时,这是非常有用的内容,因为攻击者通常会删除日志以隐藏他们的踪迹。

1.linux服务器磁盘满了,怎么删除

在日常使用过程中,可能会经常遇到Linux服务器磁盘空间满的问题。

一、遇到磁盘空间不足的报错时候,首先使用df -h查看磁盘空间使用情况,如下图所示

二、进入目录/home/zhang,查找磁盘空间中的大文件,使用命令du -sh *查找占用空间大的目录,通过逐层定位,最后会找到具体的文件。

三、第二步的命令虽然能看到了,但是文件太多不好找,使用du -h –max-depth=1命令查找空间占用大的文件。

linux 查看磁盘报错的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 查看磁盘报错,如何在Linux下查看磁盘报错信息,linux硬盘占用不正常,1.linux服务器磁盘满了,怎么删除的信息别忘了在本站进行查找喔。


数据运维技术 » 如何在Linux下查看磁盘报错信息 (linux 查看磁盘报错)