Linux下的磁盘空间管理

df -h /文件夹名

du -sh /文件夹名

后者统计的是我们能点开到的文件占用的空间,前者是总空间减去剩余空间。

可能出现的情况是二者不统一,原因见下:

http://wushank.blog.51cto.com/3489095/1533409

一、df和du的统计机制:

    1、du会把指定目录下所有文件、目录、目录下的文件都统计。是建立在文件系统能看到的的确确是有这样一些文件的基础上的。也就是说我们能在文件系统里面看到的文件才会被du统计。

    2、df(df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。):

        

       这要从程序写文件的方式来谈起,一个进程要向一个文件里面写东西,那么会得到一个pointer,

然后向指针指向的文件(磁盘区域)写入。假如由于某些原因(也可能人为)被指向的文件被删除了,但是( write call)并不知道文件是否还在,就还会继续向里面写,不管文件是否存在,磁盘块还是被写操作使用。

于是因为文件没有了,所以du统计不到写入的这些磁盘块,但是因为写的进程还在,磁盘空间没有被释放,所以df却能统计到,所以df统计的结果比du大很多。

如何解决呢?

1.停止系统上的程序。

2.如果还是不行,unmount一下文件系统看看

3.重启系统


二、ls和du统计机制:

      一个文件占用的磁盘空间和一个文件的大小是两码事情。

      占用空间取决于文件系统的块(block)的大小,linux一般默认是4k(4096),因此,一个大小为1个字节的文件,最小也要占用4k,如果你创建文件系统的时候制定块大小是16K,那么即便一个文件只有1个字节,占用空间也是16K。
      如果一个分区上主要放大文件,那么block可以大一些,有利于减少磁盘碎片,如果主要放小文件,那么block设置小一下,否则太浪费磁盘空间。
      通常情况下,ls 显示的文件大小比du显示的磁盘占用空间小

      原因:   比如文件系统的block是4K,一个13K的文件占用的空间是 13k/4k = 3.25个block,一个block只能被一个文件占用,因此实际占用空间就是4个block,就是16K。


      如果一个文件有比较大的黑洞,那么会出现文件大小比磁盘空间占用大的情况

      原因:   首先要理解什么是黑洞,怎么才能产生黑洞?

         在向一个文件中写数据的时候,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一定是允许的。位于文件中但没有写过的字节都被读为0.   文件中的空洞并不要求在磁盘上占用存储区。具体处理方式与文件系统的实现有关,当定位超出文件尾端之后写时,对于新写的数据需要分配磁盘块,但是对于原文件尾端和新开始写位置之间的部分则不需要分配磁盘块。

    稀疏文件--文件中有“洞”(hole)的文件

用Shell也可以创建稀疏文件:

$ dd if=/dev/zero of=sparse_file.img bs=1M seek=1024 count=0
0+0 records in
0+0 records out

查看方法:

 ls -s  : 反应磁盘分配情况,非实际文件大小,以block为单位    == du
 ls -lh : 反应实际文件大小    == du --apparent-size

常用的解决办法就是:

lsof |grep deleted

sudo kill -9 进程编号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在微软工作一年,我学会了什么

大家好,我是运营小马。正如我们所知道的那样,10.23日 ,崔庆才因为写文写得很痛苦,将公众号转给我运营。10.24 我兴致勃勃又小心翼翼的宣布了我要运营10.25 崔庆才回来了,他说他有喷薄而出抑制不住的写作欲望&#xff0…

Eclipse调试方法

http://blog.jobbole.com/93421/ 一、Eclipse调试介绍 二、Eclipse中和Debug相关的视图 2.1 Debug View2.2 Variables View2.3 Breakpoints View2.4 Expressions View2.5 Display View 三、Debug 3.1 设置断点 3.2 调试程序 3.2.1 调试本地 Java 语言程序 3.3.2 远程调试 一、…

聊聊 Docker Swarm 部署 gRPC 服务的坑

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,也是目前流行的微服务架构中比较突出的跨语言 RPC 框架。一直以来,我们的微服务都是基于 gRPC 来开发,使用的语言有 .NET、JAVA、Node.js,整体还比较…

动手造轮子:实现一个简单的依赖注入(零)

动手造轮子:实现一个简单的依赖注入(零)Intro依赖注入为我们写程序带来了诸多好处,在微软的 .net core 出来的同时也发布了微软开发的依赖注入框架 Microsoft.Extensions.DependencyInjection,大改传统 asp.net 的开发模式,asp.ne…

Caffe Blob Dtype理解

http://blog.luoyetx.com/2015/10/reading-caffe-2/ 关于Blob: Blob 在 Caffe 中扮演了重要的角色,用于存储数据和网络参数,同时也在 CPU 和 GPU 之间做了数据同步。Blob 原本在 Caffe 中被表示为一个 4 维数组 (num x channel x height x width)&#…

【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(2)

上一章《回忆一下我们的登录逻辑,主要有以下4点:当"用户名"或"密码"为空时, 是不允许登录的("登录"按钮处于禁用状态).用户名或密码不正确时, 显示"用户名或密码不正确"的消息框.用户名输入"waku", 并且密码输入"123&q…

MATLAB读取文件夹及其所有子文件夹内的图像

1。 指定路径下 单个文件夹data中所有图像 file_path .\data\;% 图像文件夹路径img_path_list dir(strcat(file_path,*.jpg));%获取该文件夹中所有jpg格式的图像img_num length(img_path_list);%获取图像总数量if img_num > 0 %有满足条件的图像for j 1:img_num %逐一读…

gRPC 流式调用

gRPC 使用 Protocol buffers 作为接口定义语言(IDL)来描述服务接口和输入输出消息的结构,目前支持 4 种定义服务方法类型:类型说明简单 RPC客户端传入一个请求对象,服务端返回一个结果对象客户端流式 RPC客户端传入多个…

模型压缩案例-SSDYou only look once

http://write.blog.csdn.NET/postedit 在上一篇文章中,介绍了以regionproposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时。存在的主要问题为:速度不够快,主要原因是proposal比较多,特…

.NET如何将字符串分隔为字符

前言如果这是一道面试题,答案也许非常简单:.ToCharArray(),这基本正确……我们以“AB吉??????”作为输入参数,首先如果按照“正常”处理的思路,用 .ToCharArray(),然后转换为 JSON(以便方…

Rebuttal

http://blog.csdn.net/lqhbupt/article/details/25207463 1. Rebuttal是给编辑看的 2. 每个审稿人给出一个分数,加得总分 3. 定位。一般而言,对于area chair,那个给分比较低的会自然吸引他的眼球,相对占得的权重也就大&#xf…

Orleans 知多少 | 3. Hello Orleans

1. 引言是的,Orleans v3.0.0 已经发布了,并已经完全支持 .NET Core 3.0。所以,Orleans 系列是时候继续了,抱歉,让大家久等了。万丈高楼平地起,这一节我们就先来了解下Orleans的基本使用。2. 模板项目讲解在…

.NET Core 3.0之深入源码理解ObjectPool(二)

写在前面前文主要介绍了ObjectPool的一些理论基础,本文主要从源码角度理解Microsoft.Extensions.ObjectPool是如何实现的。下图为其三大核心组件图:核心组件ObjectPoolObjectPool是一个泛型抽象类,里面只有两个抽象方法,Get和Retu…

VC维学习

http://www.flickering.cn/machine_learning/2015/04/vc维的来龙去脉/ 说说历史Hoeffding不等式Connection to Learning学习可行的两个核心条件Effective Number of HypothesesGrowth FunctionBreak Point与ShatterVC BoundVC dimension深度学习与VC维小结参考文献 VC维在机器学…

.NET Core 3.0 一个 jwt 的轻量角色/用户、单个API控制的授权认证库

作者:痴者工良(朋友合作原创)来源:https://www.cnblogs.com/whuanle/p/11743406.html目录说明一、定义角色、API、用户二、添加自定义事件三、注入授权服务和中间件三、如何设置API的授权四、添加登录颁发 Token五、部分说明六、验…

.NET Core 3.0 构建和部署

Default Executables 默认可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件。 和其他本机可执行文件一样,可以使用这些可执行文件执行相同操作,例如: 可以双击可执行…

实现ZF-Net

根据的代码是https://github.com/hvy/chainer-visualization 注意:遇到问题一定要仔细看问题的描述,从最基本的描述入手,而不要按照网上的方法断章取义式的解决问题。 遇到的问题是: 1. 无法载入cupy库 解决办法: …

为什么我会了SOA,你们还要逼我学微服务?

菜菜哥,我最近需要做一个项目,老大让我用微服务的方式来做那挺好呀,微服务现在的确很流行我以前在别的公司都是以SOA的方式,SOA也是面向服务的方式呀的确,微服务和SOA有相同之处面向服务的架构(SOA&#xf…

xorg.conf变更导致开机无法显示

不小心修改了ubuntu的/etc/X11中的xorg.conf文件导致开机无法显示, 于是尝试采用vim从开机界面修改回来: 安装vim: apt-get 编辑方法:先cd到路径下,ls -a列出目录下所有文件, 然后vi xorg.conf开始修改文件&#…