Linux 分析磁盘空间占用情况常规步骤
一、硬盘状况概览 (lsblk)
进入机器上,先看看硬盘是多大,硬盘分区情况,有个大概概念,命令:lsblk
(List block devices)
1 | [root@localhost /]# lsblk |
解释:
- NAME:设备名称
- MAJ:MIN:设备的主设备号和次设备号(设备唯一标识),在 Linux 中,每个设备都由一个主设备号和一个次设备号唯一标识。
- RM:removable,设备是否可卸载,可卸载 1,不可卸载 0
- SIZE:设备总大小,上面就是这块 sda 硬盘是,120 G 大小
- RO:read only,是否是只读设备,1 只读,0 不是只读设备
- TYPE:这是设备的类型。例如,
disk
表示磁盘,part
表示分区,lvm
表示逻辑卷管理(LVM)设备,part 分区可以有自己的文件系统,会被 Linux 识别为一个独立的存储区域,如果想调整大小需要格式化整个分区;lvm 可以理解为逻辑分区,可以更灵活的调整大小;ROM type 就是 CD-ROM,表示是一个光驱设备 - MOUNTPOINT:挂载点,表示设备挂载到哪个目录下了
综合分析上述输出:上面机器是只有一个 sda 硬盘和一个 sr0 光驱,sda 硬盘呢是分了 sda1 和 sda2 两个区,sda1 是系统引导区,挂载到了/boot
目录下面;sda2 分区,119 G,这个分区用作 lvm,逻辑卷管理,分了三个区,一个 centos-root 99 G,挂载到了根目录下,centos-swap 9.8 G,用来做 swap 分区了,内存不够用就会占用 swap 分区的地方,centos-home 10 G,是存储 Linux 上每个用户的个人文件和配置文件;sr0 光驱可卸载。
二、查看磁盘分区占用情况 (df)
命令 df 就是 disk free,查看硬盘空闲空间使用
使用 df -Th
命令可以展示出当前的文件系统和分区空间占用情况,看看是哪个分区满了
参数含义:
- T:展示文件系统
- -h:human-readable 以可读性较高的方式来显示信息这个里面只需要关注 centos-root 和 centos-home 这两个主要目录的占用率就行了,上面已经看到硬盘的 sda2 分区里面,分了三个逻辑分区,swap 是交换分区,给内存不够的时候用的,所以只需要关注另外两个逻辑分区,一个挂到了根目录下,一个挂到了 home 下。
1
2
3
4
5
6
7
8
9
10
11
12[ root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 100 G 43 G 57 G 43% /
devtmpfs devtmpfs 9.8 G 0 9.8 G 0% /dev
tmpfs tmpfs 9.8 G 0 9.8 G 0% /dev/shm
tmpfs tmpfs 9.8 G 9.1 M 9.8 G 1% /run
tmpfs tmpfs 9.8 G 0 9.8 G 0% /sys/fs/cgroup
/dev/sda 1 xfs 1014 M 178 M 837 M 18% /boot
/dev/mapper/centos-home xfs 10 G 42 M 10 G 1% /home
tmpfs tmpfs 2.0 G 4.0 K 2.0 G 1% /run/user/42
tmpfs tmpfs 2.0 G 32 K 2.0 G 1% /run/user/0
/dev/sr 0 iso 9660 4.3 G 4.3 G 0 100% /run/media/root/CentOS 7 x 86_64
下面对于其他的文件系统及挂载点也做一下解释: - devtmpfs:这个文件系统挂在了
/dev
下,不占用硬盘的空间,这是设备文件的存储位置。这些文件代表了系统中的各种设备,如硬盘、终端等,通过这个目录可以方便的访问到外部设备 - tmpfs:这个是临时文件系统,里面所有文件都会存储内存里面,它可以使用系统内存或者 swap 分区来存储文件,断电这个文件系统里面的内容就会消失
/dev/shm
:共享内存的位置,允许不同进程共享内存空间,便于通信和数据交换/run
:运行时变量的存储位置,包含系统启动后创建的 pid 文件和锁文件/sys/fs/cgroup
:这是 cgroup 文件系统的挂载点。Cgroup(控制组)是 Linux 内核的一个特性,用于限制、记录和隔离进程组使用的物理资源(如 CPU、内存、磁盘 I/O 等)。/run/user/42
和/run/user/0
:这些是为每个用户创建的私有tmpfs实例。数字代表了用户 ID,例如 0 通常代表 root 用户。
三、分析目录下文件占用情况 (du)
使用 du (disk usage) 命令,可以方便的查看文件占用情况,分析当前哪个文件或目录占用空间大
命令: du / -lh --max-depth=1 --exclude=proc
命令格式:du [dir] [params]
参数解释:列出根目录下各个目录的空间占用情况,并略过 proc 目录
- -l:重复计算硬链接的文件, 因为文件硬链接是占用空间的
- -h:human-readable 以可读性较高的方式来显示信息
- –max-depth: 这个选项限制了
du
命令查看子目录的深度。在这里,它被设置为1,这意味着du
只会显示根目录下一级的目录和文件的大小。 - –exclude=proc:
/proc
目录包含了关于系统和正在运行的进程的信息,这些信息是由内核动态生成的,不占用磁盘空间,所以通常在查看磁盘使用情况时会被排除。这个就展示了当前根目录下各个目录的大小占用情况,最后一行是根目录总占用空间大小,通过这里可以进一步分析是哪个目录占用空间过大,比如说可以进入到 opt 目录下进一步使用 du 命令(1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[ root@localhost /]# du / -lh --max-depth=1 --exclude=proc
146 M /boot
0 /dev
9.6 M /home
4.3 G /run
0 /sys
37 M /etc
28 M /root
2.8 G /var
8.5 M /tmp
5.4 G /usr
0 /media
0 /mnt
35 G /opt
0 /srv
47 G /du . -lh --max-depth=1
)继续查看是哪个文件夹或文件占用空间大
参考: