linux df -h卡成狗

今天遇到一个很奇怪的问题,在一台linux执行df -h查看磁盘使用情况,发现卡成狗,于是着手去解决:

1、通过strace df -h追踪是卡在什么位置

[[email protected]_web ~]# strace df -h
execve("/bin/df", ["df", "-h"], [/* 22 vars */]) = 0
brk(0)                                  = 0x2307000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715f4000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=37353, ...}) = 0
mmap(NULL, 37353, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd1715ea000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\1\344=\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1926520, ...}) = 0
mmap(0x3de4000000, 3750152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3de4000000
mprotect(0x3de418a000, 2097152, PROT_NONE) = 0
mmap(0x3de438a000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x3de438a000
mmap(0x3de438f000, 18696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3de438f000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715e9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715e8000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715e7000
arch_prctl(ARCH_SET_FS, 0x7fd1715e8700) = 0
mprotect(0x3de438a000, 16384, PROT_READ) = 0
mprotect(0x3de3a1f000, 4096, PROT_READ) = 0
munmap(0x7fd1715ea000, 37353)           = 0
brk(0)                                  = 0x2307000
brk(0x2328000)                          = 0x2328000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158576, ...}) = 0
mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd16b756000
close(3)                                = 0
open("/etc/mtab", O_RDONLY)             = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=366, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715f3000
read(3, "/dev/vda1 / ext4 rw,barrier=0 0 "..., 4096) = 366
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7fd1715f3000, 4096)            = 0
statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=10320720, f_bfree=8614131, f_bavail=8089869, f_files=2621440, f_ffree=2405901, f_fsid={-102338008, -1862172196}, f_namelen=255, f_frsize=4096}) = 0
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2512, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715f3000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2512
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7fd1715f3000, 4096)            = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=435, ...}) = 0
mmap(NULL, 435, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd1715f3000
close(3)                                = 0
statfs("/sys", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs("/dev/pts", {f_type="DEVPTS_SUPER_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs("/dev/shm", {f_type=0x1021994, f_bsize=4096, f_blocks=2041596, f_bfree=2041596, f_bavail=2041596, f_files=2041596, f_ffree=2041595, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs("/proc/sys/fs/binfmt_misc", {f_type=0x42494e4d, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs("/data", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=129015406, f_bfree=46849538, f_bavail=40295938, f_files=32768000, f_ffree=32749794, f_fsid={346710647, -22441262}, f_namelen=255, f_frsize=4096}) = 0

### 卡在此处
statfs("/opt", {f_type=0xff534d42, f_bsize=0, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=4096, f_frsize=0}) = 0
### 卡在此处

statfs("/data1", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=129015406, f_bfree=128955560, f_bavail=122401960, f_files=32768000, f_ffree=32767852, f_fsid={1328044912, -550095550}, f_namelen=255, f_frsize=4096}) = 0
statfs("/data2", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=129015406, f_bfree=128964770, f_bavail=122411170, f_files=32768000, f_ffree=32767982, f_fsid={-1295730252, -1655731663}, f_namelen=255, f_frsize=4096}) = 0
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26060, ...}) = 0
mmap(NULL, 26060, PROT_READ, MAP_SHARED, 3, 0) = 0x7fd1715ec000
close(3)                                = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd1715eb000
write(1, "Filesystem      Size  Used Avail"..., 49Filesystem      Size  Used Avail Use% Mounted on
) = 49
write(1, "/dev/vda1        40G  6.6G   31G"..., 40/dev/vda1        40G  6.6G   31G  18% /
) = 40
write(1, "tmpfs           7.8G     0  7.8G"..., 47tmpfs           7.8G     0  7.8G   0% /dev/shm
) = 47
write(1, "/dev/vdb        493G  314G  154G"..., 44/dev/vdb        493G  314G  154G  68% /data
) = 44
write(1, "/dev/vdc        493G  234M  467G"..., 45/dev/vdc        493G  234M  467G   1% /data1
) = 45
write(1, "/dev/vdd        493G  198M  467G"..., 45/dev/vdd        493G  198M  467G   1% /data2
) = 45
close(1)                                = 0
munmap(0x7fd1715eb000, 4096)            = 0
close(2)                                = 0
exit_group(0)                           = ?

观察的时候发现追踪到/opt的时候卡住了

但是df -h的结果来看,确实没有/opt的挂载信息,于是进入/opt,发现也是奇卡无比

于是使用 mount |column -t 查看所有的挂载信息

[[email protected]_web /]# mount | column -t
/dev/vda1                  on  /                         type  ext4         (rw,barrier=0)
proc                       on  /proc                     type  proc         (rw)
sysfs                      on  /sys                      type  sysfs        (rw)
devpts                     on  /dev/pts                  type  devpts       (rw,gid=5,mode=620)
tmpfs                      on  /dev/shm                  type  tmpfs        (rw)
none                       on  /proc/sys/fs/binfmt_misc  type  binfmt_misc  (rw)
/dev/vdb                   on  /data                     type  ext4         (rw)
//192.168.2.6/replication  on  /opt                      type  cifs         (rw,username=dba,password=0987654)
/dev/vdc                   on  /data1                    type  ext4         (rw)
/dev/vdd                   on  /data2                    type  ext4         (rw)

发现/opt挂载了远程nfs系统,卸载/opt

umount /opt

再次执行df -h 发现秒开!!

问题原因:

此处的NFS系统已经不使用了(挂了),但是它的挂载信息还在,导致文件系统一直在查找,所以就一直卡在那里

时间: 2024-10-08 00:51:52

linux df -h卡成狗的相关文章

linux df -h显示空间信息不正确

在linux系统上有时发现使用df 查看磁盘已使用空间和使用du统计的不相等,例如: [running][email protected]:/$ df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda1             9.9G  4.0G  5.4G  43% / /dev/sda3              20G  1.4G   18G   8% /usr/local /dev/sda4      

Linux df -h 与 fdisk -l 命令区别

fdisk工具是分区工具:df是用来查看文件系统(分区)的使用情况的! 当用来查看分区信息时,较为相似:   fdisk侧重于显示分区表的信息:   df侧重于显示当前系统中所有文件系统的信息: 常用用法:fdisk -l  查看当前的磁盘分区信息(主要是分区表信息)fdisk /dev/sda   对磁盘/dev/sda进行分区操作 df -h  查看当前文件系统信息,包括容量大小.使用情况.挂载点等

linux 故障:df -h统计磁盘空间占用太多,但又du -h找不到大的文件

用lsof / | grep -i delete 从根目录定位打开的被删除的文件 如果定位到某文件占用空间很大 主要是因为我们在删除这个日志文件的时候是用rm -rf *.log这样的命令删除的,删除日志之后又没有重启相应的进程,导致inode节点不被释放,空间一直被占用.如果我们用echo “ ” > /logpath/201109.log这样的命令来清空日志 相关工具: df -h du -h du -sh du -h --max-depth=1 lsof / | grep -i delet

Linux command: df -h /var/log

df -h /var/log 命令: df 功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 参数:-h 以人类较容易阅读的格式显示. 举例: [[email protected] bin]# df -h /var/logFilesystem Size Used Avail Use% Mounted on/dev/sda2 18G 3.4G 14G 21% /[[email protected] bin]#

使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满

关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享一下: 一.发现问题 在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题. 二.分析问题: 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件. [[email protected]

[linux]df 磁盘100%Used告警,du显示目录状态良好的故障排查

1.回顾: 某在线主机深夜连续接到告警系统的disk Used 超限告警. 登陆主机查看却遇到了困惑:在检查磁盘使用量 df –h 出来的磁盘使用量确实和告警信息一样,已经被100%占用,但是查看目录大小 du 时,却显示实际目录大小并非这样,而是有很大空闲空间. 如图:磁盘用量 df –h 结果为100%Used, 目录实际总大小 du –h –max-depth=1,显示总目录大小为60k,几乎可以忽略的使用比例. [知识准备] [linux] lsof 命令了解: lsof(list op

(笔记)Linux下的准确延时,#include <linux/delay.h>调用出错

在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢? 在内核代码中,我们经常会看到这样的头文件使用#include <linux/delay.h>,心想着直接调用这个就可以了吧!可是在编译时发现,压根通不过, 提示错误如下:error: No such file or directory. 是不是觉得很奇怪,明明文件是存在的,怎么就不能调用了,而且内核很多文件调用得很欢.这是为什么呢? 因为内核程序跟应用程序是有区别的,有些特殊的内核头文件编译器不允许被应用程序调用.故编译应用程序使用内

linux下把log4cxx封装成so动态库文件(一)

这是一个经常遇到的问题,在软件开发过程中,需要将某些功能封装成一个独立的模块,这样维护升级也很方便.现在我们就要把开源日志库log4cxx封装成so动态加载库文件. 在上一篇文章<log4cxx日志库RedHat下安装>中,我们已经将log4cxx安装在home/mac/log4cxx/log4cxx下了,那么接下来的操作我们就继续在这个路径下进行. 还是先tree一下/home/mac/log4cxx这个目录吧 log4cxx ---apr ---apr-util ---log4cxx 那再

linux df 命令

转自: http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html inux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间.如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示.默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 P