Chinaunix
标题:
du 、ls 查看到文件大小 与 df 、lsof 的结果不一致的问题
[打印本页]
作者:
wlong2000joint
时间:
2010-09-14 18:20
标题:
du 、ls 查看到文件大小 与 df 、lsof 的结果不一致的问题
本帖最后由 wlong2000joint 于 2010-09-15 10:14 编辑
du 、ls 查看到文件大小 与 df 、lsof 的结果不一致的问题
现象:
[root@localhost ~]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 129G
22G
101G 18% /
[root@localhost ~]# du -sh /
13G
/
[root@localhost ~]# ll -h /var/lib/mysql/localhost.err
-rw-rw---- 1 mysql mysql
3.8K
Sep 14 09:30 /var/lib/mysql-5.1.48/localhost.err
[root@localhost ~]# lsof -n|grep localhost.err
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 28390 mysql 1u REG 8,3
9895273063
30146639 /var/lib/mysql/localhost.err
mysqld 28390 mysql 2u REG 8,3
9895273063
30146639 /var/lib/mysql/localhost.err
统计结果的差别主要是因为这个文件:localhost.err ,是mysql的日志文件,因为应用的SQL语句中包含limit 1,而binlog_format为STATEMENT,所以mysql一直会有报错信息写入日志文件中(这个问题参考
http://bbs3.chinaunix.net/viewthread.php?tid=1471047
)。
我觉得这个重复的报错信息会把日志文件写得很大,就用sed -i 定期修改(删除某些内容)mysql日志文件:
/bin/sed -i "/Statement may not be safe to log in statement format./d" /var/lib/mysql/localhost.err
后来就发现了这样的情况(du 、ls 查看到文件大小 与 df 、lsof 的结果不一致的问题),如果只是du 和 ls 统计文件大小有误也就无所谓了,问题是cat localhost.err 也只看到很少几行文字,实际上mysql还在继续写错误日志到localhost.err(从lsof的结果可以看出),但是cat localhost.err 却看不到,这就是文件系统不一致了?如何解决呢? 难道不能用sed -i 修改msyql日志文件吗?
作者:
jian12278
时间:
2010-09-14 20:44
围观ing
没关注过这种情况
作者:
nagaregawa
时间:
2010-09-15 09:23
ls 命令:给出的结果是对于单个文件而言的,结果基于 end-of-file 和 beginning-of-file 之间的差别,无论是否有块分配给这个文件。
du 命令:显示的是实际上分配给单个文件的块。
df 命令:显示的是整个文件系统中分配的块,包括 inode 以及其他的 metadata。
作者:
wlong2000joint
时间:
2010-09-15 10:16
谢谢回复! 但是遇到这种情况如何处理呢?
作者:
jerryjzm
时间:
2010-09-15 10:46
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 28390 mysql 1u REG 8,3 9895273063 30146639 /var/lib/mysql/localhost.err
这个9G+13,刚好是22G
不知道lz的mysqld 能否重启,这个情况经常是实际空间释放了,但df确 不能反映出来,而仅仅是因为使用那个文件系统的进程,一直在运行。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2