Linux磁盘管理命令大全:df、du、lsblk、fdisk用法详解

 更新时间:2026年11月11日 08:53:27   作者:jyOverQ  
这一篇主要介绍 Linux 中常见的磁盘管理命令,包括 df、du、lsblk、fdisk、mkfs、mount、umount 等,并结合服务器磁盘空间不足的场景,演示如何定位和处理问题,希望对大家有所帮助

在 Linux 服务器运维中,磁盘空间管理是非常重要的一部分。

例如,Spring Boot 项目运行一段时间后,日志文件越来越大,导致服务器磁盘空间不足;或者上传文件时提示 No space left on device,这时就需要掌握 Linux 磁盘排查和管理命令。

这一篇主要介绍 Linux 中常见的磁盘管理命令,包括 df、du、lsblk、fdisk、mkfs、mount、umount 等,并结合服务器磁盘空间不足的场景,演示如何定位和处理问题。

1. Linux 磁盘与文件系统基础

在学习具体命令之前,我们先了解几个基本概念。

  • 磁盘(Disk): 用于存储数据的物理设备,例如 HDD、SSD。
  • 分区(Partition): 将一块磁盘划分成多个逻辑区域,每个分区可以独立使用。
  • 文件系统(Filesystem): 负责组织和管理磁盘上的文件和目录,例如 ext4、XFS。
  • 挂载(Mount): 将一个文件系统接入 Linux 目录树,使用户可以通过指定目录访问其中的数据。

例如,一块磁盘可能经历下面的过程:

物理磁盘
   |
   v
磁盘分区
   |
   v
创建文件系统
   |
   v
挂载到目录
   |
   v
通过目录读写文件

这里需要注意:Linux 不像 Windows 那样通常使用 C 盘、D 盘来组织文件。Linux 通过统一的目录树管理文件系统,不同磁盘或分区可以挂载到目录树中的不同位置。

2. df:查看磁盘空间使用情况

df(Disk Free)用于查看文件系统的磁盘空间使用情况。

# 查看所有文件系统的磁盘使用情况
df

# 以人类可读的方式显示容量
df -h

# 查看文件系统类型
df -T

# 查看指定目录所在文件系统的使用情况
df -h /opt

例如执行:

df -h

可能得到:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   30G   20G  60% /
/dev/sdb1       100G   70G   30G  70% /data

常见字段:

字段含义
Filesystem文件系统或设备
Size总容量
Used已使用容量
Avail可用容量
Use%使用率
Mounted on挂载点

其中,-h 表示以人类容易阅读的单位显示,例如 KB、MB、GB。

如何判断磁盘是否快满了?

例如:

/dev/sda1   50G   48G   2G   96% /

说明根目录所在的文件系统已经使用了 96% 的空间,需要进一步排查哪些文件或目录占用了大量磁盘。

这里需要注意:df 查看的是文件系统整体空间使用情况,并不能直接告诉我们具体哪个目录占用了多少空间。

这时就需要使用 du。

3. du:查看文件和目录占用空间

du(Disk Usage)用于查看文件或目录实际占用的磁盘空间。

# 查看当前目录下各文件和目录的空间占用
du -h

# 查看指定目录的总占用空间
du -sh /opt/myapp

# 查看指定目录下一级子目录的空间占用
du -h --max-depth=1 /opt

# 查看某个文件占用的空间
du -h app.log

常用参数:

参数含义
-h以人类可读的单位显示
-s只显示汇总结果
-a同时显示文件和目录
--max-depth=1只显示指定目录下一层的统计结果

例如,想知道 /var/log 下面哪个目录占用空间最大:

du -h --max-depth=1 /var/log

如果想按照占用空间从大到小排序:

du -h --max-depth=1 /var/log | sort -hr

这样就能快速找到占用空间较大的目录。

df 和 du 有什么区别?

对比dfdu
主要作用查看文件系统空间查看文件和目录占用空间
统计对象文件系统文件和目录
适用场景判断磁盘是否快满定位哪个目录占空间
常用命令df -hdu -sh

简单来说:

df 看整体,du 找原因。

4. lsblk:查看磁盘和分区结构

lsblk(List Block Devices)用于查看系统中的块设备,例如磁盘、分区以及它们之间的层级关系。

# 查看磁盘和分区
lsblk

# 显示文件系统类型
lsblk -f

# 显示设备完整路径
lsblk -p

例如:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   49G  0 part /
└─sda2   8:2    0    1G  0 part [SWAP]
sdb      8:16   0  100G  0 disk
└─sdb1   8:17   0  100G  0 part /data

常见字段:

字段含义
NAME设备名称
SIZE设备大小
TYPE设备类型,例如 disk、part
FSTYPE文件系统类型
MOUNTPOINTS挂载点

通过 lsblk,我们可以清楚地看到:

  • sda 是一块磁盘。
  • sda1、sda2 是它的分区。
  • sdb 是另一块磁盘。
  • sdb1 被挂载到了 /data。

这对于服务器磁盘管理非常有用。

5. fdisk:磁盘分区管理

fdisk 是 Linux 中常见的磁盘分区管理工具,可以用于查看和创建磁盘分区。

查看磁盘分区:

sudo fdisk -l

例如:

Disk /dev/sdb: 100 GiB
Device     Start       End   Sectors  Size Type
/dev/sdb1   2048 209715199 209713152  100G Linux filesystem

如果需要创建新分区,可以使用:

sudo fdisk /dev/sdb

进入交互界面后,常用操作:

输入作用
m查看帮助
n创建新分区
p查看分区表
d删除分区
w保存修改并退出
q不保存修改直接退出

注意:磁盘分区操作具有破坏性,尤其是删除或修改已有分区时,可能导致数据丢失。操作前一定要确认设备名称并备份重要数据。

6. mkfs:创建文件系统

创建分区后,还需要在分区上创建文件系统,才能正常存储文件。

mkfs(Make Filesystem)用于创建文件系统。

常见文件系统:

文件系统特点
ext4Linux 中常见的通用日志文件系统
XFS常用于服务器,适合处理较大文件和高容量文件系统
Btrfs支持快照、校验和等高级特性

例如,在一个新分区 /dev/sdb1 上创建 ext4 文件系统:

sudo mkfs.ext4 /dev/sdb1

如果要创建 XFS 文件系统:

sudo mkfs.xfs /dev/sdb1

注意:mkfs 会在目标设备上创建新的文件系统,可能破坏原有数据。不要对已经存有重要数据的分区随意执行。

7. mount:挂载文件系统

前面我们提到,Linux 需要将文件系统挂载到目录树中,才能通过目录访问其中的数据。

mount 用于挂载文件系统。

例如,将 /dev/sdb1 挂载到 /data:

# 创建挂载目录
sudo mkdir -p /data

# 挂载分区
sudo mount /dev/sdb1 /data

# 查看挂载情况
df -h

挂载完成后,我们就可以通过 /data 访问该分区中的文件。

查看当前挂载信息:

mount

也可以使用:

findmnt

查看指定目录对应的文件系统:

findmnt /data

如何卸载文件系统?

如果不再需要使用某个挂载点,可以通过 umount 卸载:

sudo umount /data

注意:卸载时,不能有进程正在使用该文件系统中的文件或目录,否则可能出现 target is busy。

可以通过下面的命令查找占用情况:

sudo lsof +f -- /data

确认相关程序已经停止使用后,再执行卸载。

8. 如何实现开机自动挂载?

前面使用 mount 挂载文件系统,只对当前运行状态有效。

如果服务器重启,手动挂载的文件系统通常不会自动恢复挂载。

如果希望每次开机时自动挂载,可以配置 /etc/fstab。

先查看分区的 UUID:

sudo blkid /dev/sdb1

可能得到:

/dev/sdb1: UUID="xxxx-xxxx" TYPE="ext4"

然后编辑:

sudo vim /etc/fstab

添加一行:

UUID=xxxx-xxxx /data ext4 defaults 0 2

字段说明:

字段含义
UUID文件系统唯一标识
/data挂载点
ext4文件系统类型
defaults使用默认挂载选项
0是否使用 dump 备份
2fsck 检查顺序,根文件系统通常使用 1,其他需要检查的文件系统通常使用 2

配置完成后,建议先进行检查:

sudo mount -a

该命令会尝试挂载 /etc/fstab 中尚未挂载的文件系统。如果配置错误,可能导致启动时挂载失败,因此修改前应备份配置,并确保 UUID、文件系统类型和挂载点正确。

9. 实战:服务器磁盘空间不足如何排查?

假设我们的 Spring Boot 项目部署在 /opt/myapp,运行一段时间后服务器提示:

No space left on device

这说明系统在写入文件时发现没有可用空间,但不一定意味着整个磁盘容量已经用完,也可能是 inode 耗尽。

可以按照下面步骤排查。

第一步:查看整体磁盘使用情况

df -h

找到使用率较高的文件系统。

第二步:定位占用空间较大的目录

假设根目录使用率已经达到 95%,可以执行:

sudo du -h --max-depth=1 / | sort -hr

找到占用空间较大的目录。

第三步:继续定位具体目录

如果发现 /var 占用空间较大:

sudo du -h --max-depth=1 /var | sort -hr

如果发现日志目录占用较大:

sudo du -h --max-depth=1 /var/log | sort -hr

第四步:检查大文件

sudo find /var/log -type f -size +100M

查找大于 100MB 的文件。

如果确认某个日志文件可以清理,应优先通过日志轮转、归档或应用自身日志管理机制处理,而不是随意删除正在使用的文件。

第五步:检查 inode 是否耗尽

df -i

如果 inode 使用率达到 100%,即使磁盘还有剩余容量,也可能无法创建新文件。

这通常与大量小文件有关,需要进一步定位文件数量异常的目录。

10. 常用命令速查表

命令作用
df -h查看文件系统磁盘使用情况
df -i查看 inode 使用情况
du -sh查看目录总占用空间
lsblk查看磁盘和分区结构
fdisk -l查看磁盘分区信息
mkfs创建文件系统
mount挂载文件系统
umount卸载文件系统
blkid查看设备的 UUID 和文件系统类型
findmnt查看文件系统挂载关系

总结

其中,df 用于查看整体磁盘空间,du 用于定位目录占用,lsblk 和 fdisk 用于查看磁盘与分区,mkfs 用于创建文件系统,而 mount 和 umount 则用于挂载和卸载文件系统。

对于后端开发来说,磁盘管理非常重要。尤其是服务器日志不断增长、上传文件占用大量空间、应用无法写入文件等场景,都需要借助这些命令进行排查。

以上就是Linux磁盘管理命令大全:df、du、lsblk、fdisk用法详解的详细内容,更多关于Linux磁盘管理命令的资料请关注脚本之家其它相关文章!

相关文章

  • Linux C字符串替换函数实例详解

    Linux C字符串替换函数实例详解

    这篇文章主要介绍了Linux C字符串替换函数实例详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • Linux服务器VPS的Windows DD包详细的制作教程

    Linux服务器VPS的Windows DD包详细的制作教程

    这里就说下Windows dd包的制作过程,虽然网上很多这样的dd包,但对于一些来历不明的,也会有点不放心,所以我们有时间的话可以自己定制一个
    2022-08-08
  • linux 网络编程 socket选项的实现

    linux 网络编程 socket选项的实现

    这篇文章主要介绍了linux 网络编程 socket选项的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Ubuntu下安装Chrome的方法分享

    Ubuntu下安装Chrome的方法分享

    本文给大家分享的是Ubuntu下安装Chrome的方法,安装的过程中发现还是挺麻烦的,就记录下来推荐给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • linux中的软连接和硬连接详解

    linux中的软连接和硬连接详解

    大家好,本篇文章主要讲的是linux中的软连接和硬连接详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux 常用的文件基本指令

    Linux 常用的文件基本指令

    这篇文章主要介绍了Linux的常用的文件指令,文章中详细列出了常用指令,感兴趣的小伙伴可以参考一下
    2023-04-04
  • 详解基于Linux的LVM无缝磁盘水平扩容

    详解基于Linux的LVM无缝磁盘水平扩容

    这篇文章主要介绍了详解基于Linux的LVM无缝磁盘水平扩容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Linux将文件或目录打成rpm包的实现方法

    Linux将文件或目录打成rpm包的实现方法

    最近因为遇到一个服务器受系统限制,只能上传rpm包才能使用,而我们的服务都是文件,那么怎么将文件都打成rpm包呢???我也是找了好几个,终于找到了一个简单好用的打包方式,下面来给大家讲解一下部署及打包、安装,需要的朋友可以参考下
    2024-11-11
  • Linux VPS配置Web网站环境一键包(LNMP/LAMP/LNMPA)

    Linux VPS配置Web网站环境一键包(LNMP/LAMP/LNMPA)

    如果我们是资深Linux用户,可能不屑于网上免费Linux Web一键包、管理面板的安装,然后自己编译或者自由的一套环境安装配置环境。但是,对于大部分用户而言,麦子个人建议还是选择较为成熟的WEB一键包或者面板安装环境
    2017-02-02
  • 关闭selinux(防火墙)方法分享

    关闭selinux(防火墙)方法分享

    默认装完CentOS,Selinux是打开的,这个你基本都是需要关闭,查看当前selinux的状态后,就可以按以下方法关闭selnux了
    2014-03-03

最新评论