免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7682 | 回复: 4
打印 上一主题 下一主题

du 、ls 查看到文件大小 与 df 、lsof 的结果不一致的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-14 18:20 |只看该作者 |倒序浏览
本帖最后由 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日志文件吗?

论坛徽章:
0
2 [报告]
发表于 2010-09-14 20:44 |只看该作者
围观ing

   没关注过这种情况

招聘 : 技术支持/维
论坛徽章:
0
3 [报告]
发表于 2010-09-15 09:23 |只看该作者
ls 命令:给出的结果是对于单个文件而言的,结果基于 end-of-file 和 beginning-of-file 之间的差别,无论是否有块分配给这个文件。
du 命令:显示的是实际上分配给单个文件的块。
df 命令:显示的是整个文件系统中分配的块,包括 inode 以及其他的 metadata。

论坛徽章:
0
4 [报告]
发表于 2010-09-15 10:16 |只看该作者
谢谢回复! 但是遇到这种情况如何处理呢?

论坛徽章:
1
天秤座
日期:2013-10-23 13:20:42
5 [报告]
发表于 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确 不能反映出来,而仅仅是因为使用那个文件系统的进程,一直在运行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP