概述

Linux文件系统管理 常见命令df、du、fsck、dumpe2fs。

 文件系统查看命令:df

通过 df 命令可以査看已经挂载的文件系统的信息包括设备文件名、文件系统总大小、已经使用的大小、剩余大小、使用率和挂载点等。df 命令格式如下:

[root@localhost ~]# df [选项] [挂载点或分区设备文件名]

选项:

选项 选项说明
-a 显示所有文件系统信息,包括特殊文件系统,如 /proc、/sysfs
-h 使用习惯单位显示容量,如 KB、MB 或 GB 等
-T 显示文件系统类型
-m 以 MB 为单位显示容量
-k 以 KB 为单位显示容量。默认以 KB 为单位

1. 显示系统内的文件系统信息

[root@localhost ~]# df
文件系统 块 已用 可用 已用% 挂载点/dev/sda1 194235 135531 44368 76% /boot 、
#内存虚拟出来的磁盘空间
tmpfs 934328 100 934228 1% /dev/shm

说明一下命令的输出结果。

第一列 第二列 第三列 第四列 第五列 第六列
设备文件名 文件系统总大小,默认以 KB 为单位 已用空间大小 未用空间大小 空间使用百分比 文件系统的挂载点

2. 带选项查询系统内的文件系统信息

#-a显示特殊文件系统,这些文件系统几乎都是保存在内存中的,如/proc。因为是挂载在内存中的,所以占用量是0
#-h单位不再只用KB,而是换算成习惯单位
#-T多出了文件系统类型一列

复制代码

[root@localhost ~]# df -ahT
文件系统 类型 容量 已用 可用 已用% 挂载点
sysfs sysfs 0 0 0 - /sys
proc proc 0 0 0 - /proc
tmpfs tmpfs 913M 100K 913M 1% /dev/shm
cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd
configfs configfs 0 0 0 - /sys/kernel/config/dev/sda1 ext4 190M 133M 44M 76% /boot/dev/sr0 iso9660 4.1G 4.1G 0 100% /run/media/lizhouwei/CentOS 7 x86_64
........省略部分输出.........

复制代码

 统计目录或文件所占磁盘空间大小:du

du 是统计目录或文件所占磁盘空间大小的命令。需要注意的是,使用"ls -l"命令是可以看到文件的大小的。但是在使用"ls -l"命令査看目录大小时,目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小。

但是我们在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。

du 命令的格式如下:

[root@localhost ~]# du [选项] [目录或文件名]

选项:

选项 选项说明
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等
-s 统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量

1. 统计当前目录的总磁盘占用量大小

同时会统计当前目录下所有子目录的磁盘占用量大小,不统计子文件磁盘占用量的大小。默认单位为KB

复制代码

[root@localhost ~]# du4    ./.config/abrt8    ./.config8    ./.cache/abrt12    ./.cache76    .

复制代码

2.统计当前目录总大小

统计当前目录的总大小,同时会统计当前目录下所有子文件和子目录磁盘占用量的大小。默认单位为 KB

复制代码

[root@localhost ~]# du -a4    ./anaconda-ks.cfg4    ./.viminfo4    ./.bash_history4    ./.bashrc4    ./.config/abrt8    ./.config4    ./.bash_profile8    ./.cache/abrt12    ./.cache4    ./.bash_logout76    .

…省略部分输出…

复制代码

 3. 只统计磁盘占用量总的大小,同时使用习惯单位显示

[root@localhost ~]# du -sh

[root@localhost ~]# du -sh
76K    .

du命令和df命令的区别

使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。

而 du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。

 检测和修复文件系统命令:fsck

计算机系统难免会因为人为的误操作或系统的原因而出现死机或突然断电的情况,这种情况下非常容易造成文件系统的崩溃,严重时甚至会造成硬件损坏。这也是我们一直在强调的服务器一定要先关闭服务再进行重启的原因所在。

如果真出现了文件系统损坏的情况, fsck 命令就是用来进行文件系统检侧与修复的。

fsck 命令格式如下:

[root@localhost ~]# fsck [选项] 分区设备文件名

选项:

选项 选项说明
-t 文件系统:指定分区的文件系统
-A 按照配置文件 /etc/fstab 检查所有分区
-a 不用显示用户提示,自动修复文件系统
-C 显示检查分区的进度条
-f 强制检测。一般 fsck 命令如果没有发现分区有问题,则是不会检测的。如果强制检测,那么不管是否发现问题,都会检测
-y 自动修复。和 -a 作用一致,不过有些文件系统只支持 -y

1. 修复某个分区

如果想要自动修复修复某个分区,则只需执行如下命令:

[root@localhost ~]#fsck -y /dev/sdb1

 显示磁盘状态命令:dumpe2fs

命令:

复制代码

<none>/-fe5d-411b-a67a-0xEF5315120020480010240587045086211024102464256819281922048256165 20:06:30 201818 08:30:31 201818 08:30:31 20186-15 20:06:30 20180 (<none>19700111288-b95f-48f1-a723-40960x0000017d10: (Blocks 1-81920x1300, unused inodes 1710  #校验和0x1300,1710外未使用的inode1, Group descriptors at 2-34-259  #保留的GDT块位于1-259
260 (+259), Inode bitmap at 276 (+275292-547 (+2913773 free blocks, 1710 free inodes, 9 directories, 17104420-8192 可用块数:4420-8192
339-2048

复制代码