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

转载于:https://www.cnblogs.com/longchang/p/10768111.html

 

在linux系统上有时发现使用df 查看磁盘已使用空间和使用du统计的不相等,例如:

[running]root@slave11:/$ 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             244G  215G   17G  93% /data

tmpfs                  32G   52K   32G   1% /dev/shm

/dev/sdb1             9.9G  151M  9.2G   2% /data1

 

[running]root@slave11:/data$ du -sh

182G    .

 

从这里面可以看出通过du看到使用了182G,但是通过df 看,/data目录已使用215G,这是什么原因呢?

 

先讲du和df原理

 

du的工作原理

du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。

 

df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。

 

 

原因有两个:

1、硬盘本来有保留空间,可以通过tune2fs -r 40000 /dev/sda4进行设置

 

2、已经被删掉的文件还有程序在占用,所以文件没被真正释放

 

针对第二种原因,可以通过如下步骤验证查看及释放空间

 

1、lsof |grep deleted > deleted_file查看有哪些未被释放的文件

 

2、排序看最大的未被释放的文件大小,命令:sort -nr -k 7 deleted_file>sort_deleted_file

 

3、more sort_deleted_file 查看前面那些文件,将占用空间大的程序kill掉

kill 进程号

实例:

➜  pydata df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/cluster_vg-cluster_lv   12G   11G  1.9G  85% /home/pydata

➜  pydata lsof |grep deleted
rpc.mount 17821            root    6r      REG              253,0           0  100949767 /var/lib/nfs/etab.tmp (deleted)
smbd      20496            root  cwd       DIR              253,3        3864    1684953 /home/pydata/pandx (deleted)
smbd      20496            root   10u      REG              253,3 10737418240    1684988 /home/pydata/pandx/vdb.1_1.dir/vdb_f0001.file (deleted)

 

➜  pydata kill -9 20496

➜  pydata kill -9 17821

➜  pydata df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/cluster_vg-cluster_lv   12G  137M   12G   2% /home/pydata

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要扩展Linux根目录的磁盘空间,首先需要查看当前的磁盘情况和分区情况。可以使用命令"lsblk"来查看所有磁盘的信息,其中还有一块未被使用的磁盘vdb。 然后,需要进行以下操作: 1. 使用命令"df -h"来查看根目录的磁盘空间大小。此时可能会发现根目录的容量不足。 2. 对新的磁盘vdb进行格式化和分区操作,参考具体的操作系统和文件系统的命令来完成。格式化和分区的目的是为了让系统识别并使用这块磁盘。 3. 将新的磁盘vdb挂载到根目录下,也就是/根目录下。具体操作可以使用"mount"命令来实现。 4. 最后,再次使用"df -h"命令来确认根目录的磁盘空间已经扩展成功,并且新的磁盘vdb已经被正确挂载到根目录下。 总结起来,要扩展Linux根目录的磁盘空间,需要进行磁盘格式化、分区和挂载操作。请根据具体的系统和文件系统来进行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux系统挂载并扩容根目录磁盘空间的操作方法,超详细版](https://blog.csdn.net/weixin_42582352/article/details/121510049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux系统扩容根目录磁盘空间的操作方法](https://blog.csdn.net/LXYuuuuu/article/details/82877338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值