df与du显示空间占用量不同的问题

今天在检查数据库占用空间的时候,突然发现一个奇怪的现象。df与du的输出值差别很大。

df -h

Filesystem             size   used  avail capacity  Mounted on

......

/dev/vx/dsk/oracle_data_dg/OFS_DATA_2
                       963G   504G   430G    54%    /oracle/data2

/dev/vx/dsk/oracle_data_dg/OFS_DATA_1
                       963G   527G   409G    57%    /oracle/data1

.......

df显示/oracle/data1和/oracle/data2分别占用了500多G的空间。而du的输出如下:

du -sk *
84133352        arch
27686   crsdata
342248803       data1
380479470       data2
253124246       flash
4718674 redo1
4718674 redo2
425879  userdata

du显示data1和data2分别占用约300G空间。

再从数据库里检查一下:

SQL> select sum(TOTAL_M),sum(USED_M),sum(FREE_M) from
  2  (SELECT tablespace_name,sum_m as total_m, (sum_m - free_m) as used_m,free_m,
  3  to_char(100*(sum_m-free_m)/sum_m, '999.99') || '%' AS pct_used,
  4  to_char(100*free_m/sum_m, '999.99') || '%' AS pct_free
  5  FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
  6       ( SELECT tablespace_name AS fs_ts_name,sum(bytes/1024/1024) AS free_m
  7                FROM dba_free_space GROUP BY tablespace_name )
  8  WHERE tablespace_name = fs_ts_name(+)
  9  order by free_m);


SUM(TOTAL_M) SUM(USED_M) SUM(FREE_M)
------------ ----------- -----------
   672953.75  416450.313  256503.438

数据库中得到的结果与du差不多。那么df多占用的400G空间是哪来的呢?

突然想到我们使用NBU备份数据库 snapshot,但一直不成功。会不会是NBU创建snapshot占用的空间呢?

于是检查一下storage chechpoint:

fsckptadm list /oracle/data2
/oracle/data2
NBU+2008.06.01.00h00m44s+27053:
        ctime                =  Sun Jun 01 00:00:46 2008
        mtime                =  Sun Jun 01 23:58:37 2008
        flags                =  largefiles, removable
NBU+2008.05.25.14h16m29s+11962:
        ctime                =  Sun May 25 14:16:34 2008
        mtime                =  Sun Jun 01 23:58:37 2008
        flags                =  largefiles, removable
NBU+2008.05.18.00h01m49s+17093:
        ctime                =  Sun May 18 00:01:52 2008
        mtime                =  Sun Jun 01 23:58:37 2008
        flags                =  largefiles, removable
NBU+2008.05.07.16h19m51s+2701:
        ctime                =  Wed May 07 16:19:53 2008
        mtime                =  Sun Jun 01 23:58:37 2008
        flags                =  largefiles, removable

....

可以看到有很多storage checkpoint. 删除这些checkpoint.

 fsckptadm -vs remove NBU+2008.05.07.16h19m51s+2701 /oracle/data2

......

删除后df显示结果与du差不多:

 df -h
Filesystem             size   used  avail capacity  Mounted on

......
/dev/vx/dsk/oracle_data_dg/OFS_DATA_2
                       963G   364G   561G    40%    /oracle/data2
/dev/vx/dsk/oracle_data_dg/OFS_DATA_1
                       963G   341G   583G    37%    /oracle/data1

......

分析一下原因,应该是在NBU备份时已经产生了storage checkpoint,但由于备份没有成功就退出了,NBU就没有自动删除这些storage checkpoint。结果时间一长,这些checkpoint占用的空间就越来越大,导致du与df的值相差很大。

看来如果NBU备份snapshot不成功的话,还要注意一下主机上的checkpoint,根据实际情况决定是否删除。

注:最常见的df和du输出结果不同的原因是:文件删除后空间没有释放。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/228190/viewspace-331029/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/228190/viewspace-331029/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值