前言

日常开发中的程序大部分都会部署在linux虚拟机上,虚拟机的磁盘使用情况是我们非常关注的一个事情,因为如果磁盘空间不足的话,轻则数据写入失败,重则程序运行异常,下面我们就来了解一下我们常用的查看linux虚拟机的磁盘使用情况的两个命令:du和df。首先我们来介绍一下这两个命令的不同点,df命令是基于系统的文件系统来计算磁盘的占用情况的,通过df命令可以查看系统中的每一个文件系统的容量、已用、挂载点等信息;而du命令是基于系统中的文件来及结算磁盘的占用情况,通过计算每一个文件的占用情况来汇总出每一个目录或每个文件的占用情况.接下来我们来了解一下这两个命令的一些常用的使用参数。

df命令详解

用法
df [配置参数]... [文件]...
常用配置参数
  • -a : 统计包含虚拟的、重复的和不可访问的文件系统
#输出系统中的所有文件系统的磁盘占用情况

df -a
  • -B : 统计磁盘占用情况的单位,主要的单位有K, M, G, T, P, E, Z, Y等
#已M为单位输出每个文件系统的磁盘占用情况

df -BM
  • -h : 以一种人类可读的形式来进行展示,主要是对统计的大小按照K、M、G等这些单位进行了处理(常用)
#试试你就知道它的好
df -h
  • -H : 以一种人类可读的形式来进行展示,但是处理的过程不是按照标准的1024来进行处理,而是通过1000来就进行处理,所以结果会有一定的误差
df -H
  • -i : 查看文件系统中的索引节点(inode)的磁盘占用情况
df -i
  • -k : 以K作为统计单位来展示磁盘占用情况,相当于 -BK

df -k 
  • -l : 只显示本机的文件系统的磁盘占用情况
df -l
  • -P : 按照POSIX标准来格式化输出
df -P
  • -t : 限制查看的磁盘的文件系统类型,只查看当前配置的文件系统类型的磁盘占用情况
#只统计 tmpfs 类型文件系统的磁盘占用情况 
df -t tmpfs  或 df --type=tmpfs
  • -T : 展示每一个挂载点的文件系统的类型
df -T
  • -x : 限制查看的磁盘的文件系统类型,查看当前配置的文件系统类型外的所有类型的磁盘占用情况
#统计 tmpfs 类型外所有类型的文件系统的磁盘占用情况 
df -x tmpfs
  • –sync : 在查询磁盘占用情况前先调用同步接口
df --sync
  • –no-sync : 在查询磁盘占用情况前不进行同步,df命令默认不会进行同步
df --no-sync
  • –output : 只输出指定的统计指标,如果省略了参数的话,则会输出全部统计指标
#只输出 文件系统类型(fstype)、 文件系统(source)、索引节点总数(itotal)

df --output=fstype, source, itotal

备注:以下为完整的统计指标定义与名称

  • source : 文件系统

  • fstype : 文件系统类型

  • itotal : 索引节点(inode)总数

  • iused : 已用索引节点(inode)总数

  • iavail : 可用索引节点(inode)总数

  • ipcnet : 已用索引节点占比

  • size : 磁盘总体积

  • used : 已用体积

  • avail : 剩余可用体积

  • pcent : 已用占比

  • file : 对应文件

  • target : 文件系统挂载点

  • –direct : 显示文件的统计信息,而不是显示挂载点的

df --direct 
  • –total : 统计一个当前系统维度的磁盘已用占比
df --total

du命令详解

用法
du [配置参数]... [文件]...
常用配置参数
  • -a : 显示目录下所有文件的磁盘资源占用,不仅仅是目录本身
# 统计 /awx 目录下所有文件及目录的磁盘占用
du -a /awx
  • -B : 统计磁盘占用情况的单位,主要的单位有K, M, G, T, P, E, Z, Y等, 同df命令中 -B
# 通过G为单位统计 /awx 目录的磁盘占用
du -BG /awx 
  • -b : 等同于 --apparent-size --block-size=1
# 展示文件或目录本身的大小,而不是展示磁盘的大小,展示的单位为字节(byte)
du -b /home/dev/
  • -c : 除了显示每个目录和文件的单独的磁盘占用,同时显示该文件或目录的总磁盘占用
du -c 
  • -D : 显示指定符号的源文件的大小
du -D /home/dev
  • -d : 指定统计目录下的最大深度
du -d 1 /home/
  • -H : 和 -h 相似,单位换算通过1000来计算,而不是1024
du -H
  • -h : 将统计单位处理为可读性更强的单位
du -h
  • -k : 以K作为统计单位, 等同于 --block-size=1K
du -k /home/
  • -L : 显示指定符号指定的源文件大小
du -L /bin/vacuumdb
  • -l : 重复计算硬件连接的文件
du -l /home/
  • -m : 以M作为统计单位,等同于 --block-size=1M
du -m /home/
  • -s : 仅显示总计
# 仅显示 /home 文件的磁盘占用总计
du -s /home/
  • -t : 只展示达到设置的存储单位整数以上的文件夹或文件,例如 -t M 则只展示1M以上的文件或文件夹
# 只展示1G以上的文件或文件夹
du -t G /home
  • -X : 统计指定的文件或目录

  • -x : 跳过不同文件系统的文件

du -x /home/
  • –exclude : 统计时跳过指定的目录或文件

  • –time : 展示指定的文件或目录的最后的修改时间

du --time /home 
  • –si : 类似于 -h, 但是通过1000来进行单位换算,而不是1024
du --si
  • –inodes : 查看特定文件目录和文件的索引节点的磁盘占用情况
# 查看 /home 目录下的所有目录和文件的 索引节点 的磁盘占用情况
du --inodes /home/
  • –apparent-size : 显示文件或目录自身大小,而不是占用磁盘的大小,由于存在内存碎片、连接块等,这两个体积只是相似,并非完全一致;
du --apparent-size /home/dev

附录

Linux中索引节点(inode)介绍

一个完整的文件是由文件数据和元信息组成并存储在磁盘的,存储数据的区域叫块(block),存储元信息的区域叫索引节点(inode)。文件数据存储的最小单位是块(block),常用的块的大小是4KB,块(block)是由扇区(sector)组成的,扇区(sector)是磁盘的最小存储单位,每个扇区(sector)可512字节数据,如4KB的块(block)就是由8个扇区(sector)组成的,将文件的最小存储单位定义为块(block)主要是为了更高的存取效率;元信息存储的区域是索引节点(inode),元信息中主要存储了文件的读写执行权限,文件的创建人,文件的大小等信息;一个文件必须占用一个索引节点(inode),至少要有一个块(block)。

查看索引节点(inode)信息
  • 查看文件的索引节点(inode)信息
# 查看apache-tomcat-9.0.30.tar的索引节点信息
stat apache-tomcat-9.0.30.tar

# 输出
  文件:"apache-tomcat-9.0.30.tar"
  大小:16168960        块:31584      IO 块:4096   普通文件
设备:fd01h/64769d      Inode:667908      硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2020-01-05 22:39:33.704221640 +0800
最近更改:2020-01-05 21:57:12.037546944 +0800
最近改动:2020-01-05 22:39:32.205156346 +0800
创建时间:-

  • 查看文件的索引节点号(i节点号)
ls -i 
  • 查看磁盘的索引节点使用情况
df -i
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐