磁盘分区后,还需要进行格式化,然后操作系统才可以使用这个文件系统。
为什么需要“格式化”,因为每个操作系统设置的文件属性、权限并不相同,为了存储这些文件所需的数据,需要对分区进行格式化,以成为操作系统可使用的文件系统。
传统的磁盘与文件系统(filesystem)的关系,一个磁盘分区只能被格式化成一种文件系统。由于新技术的利用,如LVM技术,可以将一个磁盘分区格式化为多个文件系统,对于LVM来说,格式化的是LV。LV就从VG中划出来的,VG包含多个PV(一个PV对应一个磁盘分区或一整个磁盘)。
操作系统的文件除了存储文件实际内容外,还包含很多属性,如Linux操作系统的权限(rwx)与文件属性(所有者、属组、时间等)。文件系统通常会将这两部分数据分别存放在不同的区块,权限与属性放到inode中,实际数据放到data block中。还有一个超级块superblock会记录整个档案系统的整体信息,包括inode与block的总量、使用量、剩余量。
每个 inode 与 block 都有编号,这三者的简略说明如下:
superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等;
inode:记录文件的属性,一个文件占用一个inode,同时记录此档案的数据所在的block 号码;
block:实际记录文件的内容,若档案太大时,会占用多个 block 。
由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据存放的block号。找到inode,就找到数据的block,就知道实际的数据了。
inode与block资料访问示意图:

通过inode找到数据块的这种文件系统叫做“索引式文件系统”。
索引式文件系统是一种通过索引节点(inode)记录文件所有数据块地址,从而实现快速随机访问的文件组织方式。
相对于索引式文件系统,还有没有其他的文件系统,答案是有的:链式文件系统(FAT)
FAT档案系统数据访问示意图:

上图中我们假设文件的数据依次写入1->7->4->15号这四个block号码中, 但这个档案系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处。 如果文件写入的 block 太过于离散了,此时档案读取的效能将会变得很差所致。这个时候可以通过磁盘重组将同一个档案所属的blocks汇整在一起,这样数据的读取会比较容易。
inode这部分内容在之前的文章里也讲过,这里再学习一下。之前文章Linux04-Linux文件权限与目录
区块组(block group)示意图如下:

每个区块组合都有独立的 inode/block/superblock 系统。从逻辑上讲,一个文件系统确实只有一个 Superblock;但从物理存储上讲,Ext2 为了可靠性,在多个 Block Group 中保存了 Superblock 的备份(Backup Superblock)。
data block是用来存放文件内容数据的地方,在格式化时block大小 就固定了,且每个block都有编号,以方便inode记录。由于block大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大单个文件容量并不相同。
| Block 大小 | 1KB | 2KB | 4KB |
|---|---|---|---|
| 最大单一文件限制 | 16GB | 256GB | 2TB |
| 最大档案系统总容量 | 2TB | 8TB | 16TB |
每个block内最多只能放一个文件的数据
如果文件大于block的大小,则一个档案会占用多个block数量
如果文件小于block的大小,则该block的剩余容量就不能再被使用了
inode的内容记录文件的属性以及该文件实际数据放在哪几个block内,主要记录以下这些:
该文件的访问模式(read/write/excute);
该档案的所有者与组(owner/group);
该档案的容量;
该文件建立或状态改变的时间(ctime);
最近一次的读取时间(atime);
最近修改的时间(mtime);
定义档案特性的旗标(flag),如 SetUID...;
该档案真正内容的指向(pointer);
inode的特点:
每个inode大小固定为256bytes(EXT4)
每个文件占用一个inode
能够创建文件的数量与inode的数量有关
系统读取文件时,先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能开始实际读取block的内容
inode的结构图如下所示:

一个inode 能够指定多少个 block 呢? 我们以较小的 1K block 来说明,可以指定的情况如下:
12 个直接指向: 12*1K=12K由于是直接指向,所以总共可记录 12 笔记录,因此总额大小为如上所示;
间接: 256*1K=256K每笔 block 号码的记录会花去 4bytes,因此 1K 的大小能够记录 256 笔记录,因此一个间接可以记录的档案大小如上;
双间接: 256*256*1K=2562K第一层block会指定256个第二层,每个第二层可以指定256个号码,因此总额大小如上;
三间接: 256*256*256*1K=2563K第一层block会指定256个第二层,每个第二层可以指定256个第三层,每个第三层可以指定256 个号码,因此总额大小如上;
总额:将直接、间接、双间接、三间接加总,得到 12 + 256 + 256*256 + 256*256*256 (K) = 16GB
Superblock是记录整个文件系统相关信息的地方,它记录的主要信息有:
block 与 inode 的总量;
未使用与已使用的 inode / block 数量;
block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128bytes 或 256bytes);
filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等文件系统的相关信息;
一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 04.0M 0% /dev
tmpfs tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs tmpfs 550M 9.8M 540M 2% /run
/dev/mapper/cs-root xfs 17G 13G 4.2G 76% /
/dev/sdb1 xfs 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data ext4 482G 2.2G 455G 1% /data
tmpfs tmpfs 275M 52K 275M 1% /run/user/42
overlay overlay 17G 13G 4.2G 76% /var/lib/docker/overlay2/78d7b0b6180d813f3e5bf994ee34f909f954e622c1c711b02b86ed8135c0b2b6/merged
overlay overlay 17G 13G 4.2G 76% /var/lib/docker/overlay2/0ed0a69af127b12c1992216ada97ac0fe073fa194ee55c8d441974ef7f7b2275/merged
overlay overlay 17G 13G 4.2G 76% /var/lib/docker/overlay2/71d01ad2b1415bebd28381f202e6cea925e5da109ea79f07a16188b6a5913404/merged
tmpfs tmpfs 275M 36K 275M 1% /run/user/0
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 500G 0 disk
└─vg--data-lv--data 253:2 0 490G 0 lvm /data
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part /boot
└─sdb2 8:18 0 19G 0 part
├─cs-root 253:0 0 17G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
[root@localhost ~]# dumpe2fs /dev/mapper/vg--data-lv--data -h
dumpe2fs 1.46.5 (30-Dec-2021)
Filesystem volume name: <none>
Last mounted on: /data
Filesystem UUID: ef5b7b37-ad55-4a6c-a8f4-42ffa5037a6c
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 32112640
Block count: 128450560
Reserved block count: 6422528
Overhead clusters: 2296590
Free blocks: 125586781
Free inodes: 32111329
First block: 0
Block size: 4096
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 1024
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Mon Apr 1415:35:00 2025
Last mount time: Fri Jun 1216:06:37 2026
Last write time: Fri Jun 1216:06:37 2026
Mount count: 25
Maximum mount count: -1
Last checked: Mon Apr 1415:35:00 2025
Check interval: 0 (<none>)
Lifetime writes: 14 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 87cb64af-1552-4ba0-8a54-57042de62788
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0xd38634ab
Journal features: journal_incompat_revoke journal_64bit journal_checksum_v3
Total journal size: 1024M
Total journal blocks: 262144
Max transaction length: 262144
Fast commit length: 0
Journal sequence: 0x000000ed
Journal start: 0
Journal checksum type: crc32c
Journal checksum: 0x50821419
描述每个block group的开始与结束的block号码,以及说明每个区段 (superblock, bitmap, inodemap, data block) 分别介于哪一个 block 号码之间。
从block bitmap当中可以知道哪些block是空的,存放文件时通过block bitmap找到空block。
如果你删除某些档案时,那么那些档案原本占用的 block 号码就得要释放出来, 此时在 block bitmap 当中相对应到该 block 号码的标志就得要修改成为'未使用中‘。
inode bitmap 记录使用与未使用的inode号码。
每个文件(文件或目录)都会占用一个inode,可根据文件内容的大小来分配多个block给该文件使用。
当创建一个目录时,文件系统会分配一个inode与至少一块block给该目录。
inode记录该目录的相关权限与属性并记录分配高层次的那块block号码;
block则记录在这个目录下的文件名与该文件占用的inode号码数据。
[root@localhost ~]# ll -d / /boot /usr/sbin /proc /sys
dr-xr-xr-x. 21 root root 40964月 112025 /
dr-xr-xr-x. 6 root root 409611月 102025 /boot
dr-xr-xr-x 317 root root 06月 1216:06 /proc
dr-xr-xr-x 13 root root 06月 1216:06 /sys
dr-xr-xr-x. 2 root root 1638411月 102025 /usr/sbin
当你使用' ll / '时,出现的目录几乎都是 1024 的倍数,为什么呢?
因为每个block的数量都是 1K, 2K, 4K,查询block大小 命令:stat 挂载目录
[root@localhost ~]# stat /
文件:/
大小:4096 块:8 IO 块:4096 目录
设备:fd00h/64768d Inode:128 硬链接:21
权限:(0555/dr-xr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2026-06-12 16:06:35.395000757 +0800
最近更改:2025-04-11 17:32:24.939905038 +0800
最近改动:2025-04-11 17:32:24.939905038 +0800
创建时间:2024-04-01 21:31:24.891531000 +0800
/proc 使用 ll 命令查看,为什么是0?因为/proc 虚拟文件系统,不占用磁盘,存储的文件都在内存中。
| 目录 | 应放置文件内容 |
|---|---|
| /lost+found | 这个目录是使用标准的ext2/ext3/ext4文件系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下。 不过如果使用的是 xfs 文件系统的话,就不会存在这个目录了! |
| /proc | 这个目录本身是一个'虚拟文件系统(virtual filesystem)'喔! 他放置的资料都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等等。 因为这个目录下的资料都是在内存当中, 所以本身不占任何硬盘空间啊! 比较重要的档案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
| /sys | 这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录核心与系统硬件信息较相关的信息。 包括目前已加载的核心模块与核心侦测到的硬件设备信息等等。 这个目录同样不占硬盘容量喔! |
当创建一个文件时,文件系统会分配一个inode与相对于该文件大小的block数量给该文件。
如:一个block为4k,当创建一个100k的文件,那么linux会分配一个inode与25个block来存储该文件。
当管理员要写入一个文件时,会先在日志记录区块中记录某个文件准备要写入信息
开始写入文件的权限与内容;开始更新metadata的数据
完成内容与metadata的更新后,在日志记录区块当中完成该文件的记录。
当文件在写入过程中发生了问题 ,那么 系统只需要检查日志记录区块,就可以知道问题在哪了,无需针对整块文件系统检查。
上面超级块的输出中拳王日志记录的内容,inode 8号记录 journal 区块的 block 指向,而且具有 1024MB 的容量在处理日志.
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 87cb64af-1552-4ba0-8a54-57042de62788
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0xd38634ab
Journal features: journal_incompat_revoke journal_64bit journal_checksum_v3
Total journal size: 1024M
Total journal blocks: 262144
Max transaction length: 262144
Fast commit length: 0
Journal sequence: 0x000000ed
Journal start: 0
Journal checksum type: crc32c
Journal checksum: 0x50821419
所有的数据都得加载到内存后,CPU才能对该数据进行处理。
异步处理方式(asynchronously):当系统加载一个文件到内存后,如果该文件未被修改过,则在内存区段的文件数据被设定为干净(clean)的。如果内存中的文件数据被修改过,此时该内存中的资源被 设置为脏的(Dirty)。此时所有的动作都还在内存中执行,并没有写入到磁盘中。系统会不定时将内存中设定的Dirty脏数据写回磁盘,以保持磁盘与内容数据的一致性。也可以用sync命令来手动强制写入磁盘。
因为内存的速度要比磁盘快的多,所以这种机制会增强系统的性能。
系统会将常用的数据放到主内存的缓存区,以加速文件系统的读/写;
Linux的内存最后都会被用光,这是正常的情况
可以手动使用sync来强制将Dirty的文件写到磁盘中
若正常关机时,关机指令会主动呼叫sync来将内存的数据写入磁盘内
若不正常关机,由于数据尚未写到磁盘内,因此重新启动可能会花很多时间在进行磁盘检验,甚至可能导致文件系统的损毁(非磁盘损毁)
每个文件系统filesystem都有独立的inode/block/superblock等信息,这个文件系统要链接到目录才能被使用。文件系统与目录结合的动作,我们称为“挂载”。
重点:挂载点一定是目录,该目录为进入该文件系统的入口。
[root@server12 ~]# ls -idl / /boot
128 dr-xr-xr-x. 19 root root 254 Sep 282022 /
128 dr-xr-xr-x. 5 root root 4096 Apr 242021 /boot
[root@server12 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 8.8M 887M 1% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 17G 11G 6.1G 65% /
/dev/sda1 xfs 1014M 177M 838M 18% /boot
tmpfs tmpfs 180M 0 180M 0% /run/user/0
/, /boot是两个挂载点,为两个不同的文件系统,由于xfs最项层的目录的inode一般为128,所以看到的inode都是128.
[root@server12 ~]# ls -ild / /. /..
128 dr-xr-xr-x. 19 root root 254 Sep 282022 /
128 dr-xr-xr-x. 19 root root 254 Sep 282022 /.
128 dr-xr-xr-x. 19 root root 254 Sep 282022 /..
/ /. /.. 代表的相同的目录
常见的支持文件系统有 :
传统文件系统:ext2 / minix / MS-DOS / FAT (用 vfat 模块) / iso9660 (光盘)等等;
日志式文件系统: ext3 /ext4 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS / ZFS
网络文件系统: NFS / SMBFS
查看使用的linux支持的文件系统有哪些命令:
[root@server12 ~]# ls -l /lib/modules/$(uname -r)/kernel/fs
total 20
-rw-r--r--. 1 root root 7736 Sep 262020 binfmt_misc.ko.xz
drwxr-xr-x. 2 root root 30 Apr 242021 cachefiles
drwxr-xr-x. 2 root root 24 Apr 242021 ceph
drwxr-xr-x. 2 root root 24 Apr 242021 cifs
drwxr-xr-x. 2 root root 26 Apr 242021 cramfs
drwxr-xr-x. 2 root root 23 Apr 242021 dlm
drwxr-xr-x. 2 root root 24 Apr 242021 ext4
drwxr-xr-x. 2 root root 60 Apr 242021 fat
drwxr-xr-x. 2 root root 27 Apr 242021 fscache
drwxr-xr-x. 2 root root 46 Apr 242021 fuse
drwxr-xr-x. 2 root root 24 Apr 242021 gfs2
drwxr-xr-x. 2 root root 25 Apr 242021 isofs
drwxr-xr-x. 2 root root 24 Apr 242021 jbd2
drwxr-xr-x. 2 root root 25 Apr 242021 lockd
-rw-r--r--. 1 root root 4868 Sep 262020 mbcache.ko.xz
drwxr-xr-x. 5 root root 120 Apr 242021 nfs
drwxr-xr-x. 2 root root 46 Apr 242021 nfs_common
drwxr-xr-x. 2 root root 24 Apr 242021 nfsd
drwxr-xr-x. 2 root root 4096 Apr 242021 nls
drwxr-xr-x. 2 root root 27 Apr 242021 overlayfs
drwxr-xr-x. 2 root root 27 Apr 242021 pstore
drwxr-xr-x. 2 root root 28 Apr 242021 squashfs
drwxr-xr-x. 2 root root 23 Apr 242021 udf
drwxr-xr-x. 2 root root 23 Apr 242021 xfs
系统已装入到内存中支持的文件系统有:
[root@server12 ~]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev cgroup2
nodev tmpfs
nodev devtmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev hugetlbfs
nodev devpts
nodev autofs
nodev pstore
nodev mqueue
xfs
fuseblk
nodev fuse
nodev fusectl
nodev overlay
Linux VFS (Virtual Filesystem Switch)
整个 Linux 的系统都是通过一个名为 Virtual Filesystem Switch 的核心功能去读取 filesystem 的。 也就是说,整个 Linux 认识的 filesystem 其实都是 VFS 在进行管理,我们用户并不需要知道每个 partition 上头的 filesystem 是什么,VFS 会主动的帮我们做好读取的动作.

用户空间(User Space)
+--------------------------------------------------------+
| |
| 用户进程(ls、cp、cat、oracle、java等) |
| |
+--------------------------|-----------------------------+
|
| 系统调用
| (open/read/write/close)
v
内核空间(Kernel Space)
+--------------------------------------------------------+
| |
| VFS(Virtual File System) |
| |
| 提供统一文件访问接口 |
| open() read() write() mkdir() unlink() |
| |
+----------+-------------+-------------+-----------------+
| | |
| | |
v v v
+---------+ +---------+ +---------+
| Ext4 | | XFS | | NFS |
+---------+ +---------+ +---------+
| | |
+-------------+-------------+
|
v
页缓存(Page Cache)
|
v
块层(Block Layer)
|
v
I/O调度器(I/O Scheduler)
|
v
设备驱动(Device Driver)
|
v
磁盘控制器(HBA)
|
v
HDD / SSD / SAN存储
+--------------------------------------------------------+
xfs是一个日志式文件系统,在数据的分布上,主要规划为三个部分:
数据区 data section
与ext家族的block group类似,也是分为多个存储区组(allocation groups)来放置文件系统所需要的资料。
inode与block在系统需要用到时,动态配置产生。
文件系统活动登录区 log section
记录文件系统的变化。变化会在这里记录下来,直到该变化完整的写入到数据区后,该记录才会被终结。
实时动作区 realtime section
xfs的高级功能,ssd不会使用
当创建文件时,xfs会在这个区段里找数个extent区块,将文件放置在这个区块内,等到分配完毕后,再写入到data section.
xfs文件系统
[root@server12 ~]# df -hT /
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/cl-root xfs 17G 11G 6.1G 65% /
[root@server12 ~]# xfs_info /
meta-data=/dev/mapper/cl-root isize=512agcount=4, agsize=1113856 blks
=sectsz=512attr=2, projid32bit=1
=crc=1finobt=1, sparse=1, rmapbt=0
=reflink=1
data =bsize=4096blocks=4455424, imaxpct=25
=sunit=0swidth=0 blks
naming =version 2bsize=4096ascii-ci=0, ftype=1
log =internal log bsize=4096blocks=2560, version=2
=sectsz=512sunit=0 blks, lazy-count=1
realtime =none extsz=4096blocks=0, rtextents=0
| 命令结果 | 值 | 实际作用 |
|---|---|---|
| meta-data | /dev/mapper/cl-root | XFS文件系统所在设备 |
| isize=512 | 512字节 | 每个inode占用512字节,用于存储文件属性、权限、时间、Extent信息等 |
| agcount=4 | 4 | 数据区被划分成4个AG(Allocation Group),支持并发分配,提高多CPU环境性能 |
| agsize=1113856 blks | 1113856块 | 每个AG包含1113856个Block |
| sectsz=512 | 512字节 | 底层磁盘扇区大小 |
| attr=2 | Version 2 | 使用新版扩展属性(Extended Attribute)格式,支持ACL、SELinux等 |
| projid32bit=1 | 开启 | 支持32位Project Quota(项目配额) |
| crc=1 | 开启 | 元数据启用CRC校验,检测元数据损坏 |
| finobt=1 | 开启 | 维护空闲inode B+Tree,提高inode分配速度 |
| sparse=1 | 开启 | inode支持稀疏布局,减少空间浪费 |
| rmapbt=0 | 关闭 | 未启用反向映射B+Tree |
| reflink=1 | 开启 | 支持Copy-on-Write(写时复制),类似快照机制 |
| 命令结果 | 值 | 实际作用 |
|---|---|---|
| bsize=4096 | 4KB | 文件系统Block大小,也是最小分配单位 |
| blocks=4455424 | 4455424块 | 数据区总Block数 |
| imaxpct=25 | 25% | 最多25%的空间可用于inode存储 |
| sunit=0 | 0 | 未配置RAID条带单元 |
| swidth=0 blks | 0 | 未配置RAID条带宽度 |
| 命令结果 | 值 | 实际作用 |
|---|---|---|
| version 2 | v2 | 使用第二代目录结构 |
| bsize=4096 | 4KB | 目录块大小 |
| ascii-ci=0 | 关闭 | 文件名区分大小写,如果=1表示不区分 |
| ftype=1 | 开启 | 目录项记录文件类型(Docker/K8S必须),能让系统快速知道目录里的条目是文件、目录还是链接,而无需去读取文件的索引节点(inode) |
| 命令结果 | 值 | 实际作用 |
|---|---|---|
| internal log | 内部日志 | 日志区位于当前文件系统内部 |
| bsize=4096 | 4KB | 日志块大小 |
| blocks=2560 | 2560块 | 日志区总Block数 |
| version=2 | v2 | 第二代日志格式 |
| sectsz=512 | 512字节 | 日志扇区大小 |
| sunit=0 | 0 | 未配置RAID条带 |
| lazy-count=1 | 开启 | 超级块计数器延迟更新,减少IO |
| 命令结果 | 值 | 实际作用 |
|---|---|---|
| realtime=none | none | 未启用实时区 |
| extsz=4096 | 4KB | 默认Realtime Extent大小 |
| blocks=0 | 0 | 无实时块 |
| rtextents=0 | 0 | 无实时Extent |
| 字段 | 为什么重要 |
|---|---|
| agcount=4 | 决定并发能力 |
| bsize=4096 | 决定Block大小 |
| blocks=4455424 | 决定文件系统容量 |
| crc=1 | 元数据完整性保护 |
| finobt=1 | inode分配性能 |
| reflink=1 | 支持快照/COW |
| ftype=1 | Docker/K8S兼容性 |
| internal log | 日志恢复能力 |
| realtime=none | 是否启用实时区 |
| 命令 | 作用 |
|---|---|
| df | 查看所有已挂载文件系统 |
| df -h | 以人类可读方式显示(KB、MB、GB) |
| df -T | 显示文件系统类型 |
| df -i | 查看inode使用情况 |
| df -Th | 显示文件系统类型和容量 |
| df -a | 显示所有文件系统(包括虚拟文件系统) |
| df -x <类型> | 排除指定文件系统类型 |
| df -t <类型> | 仅显示指定文件系统类型 |
| df --total | 显示总计 |
| df -P | POSIX格式输出 |
| --block-size | 指定输出的块大小 |
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 04.0M 0% /dev
tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root 17G 13G 4.1G 77% /
/dev/sda1 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data 482G 2.2G 455G 1% /data
tmpfs 275M 92K 275M 1% /run/user/0
[root@localhost ~]# df -h --total
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 04.0M 0% /dev
tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root 17G 13G 4.1G 77% /
/dev/sda1 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data 482G 2.2G 455G 1% /data
tmpfs 275M 92K 275M 1% /run/user/0
total 502G 16G 462G 4% -
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 04.0M 0% /dev
tmpfs tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root xfs 17G 13G 4.1G 77% /
/dev/sda1 xfs 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data ext4 482G 2.2G 455G 1% /data
tmpfs tmpfs 275M 92K 275M 1% /run/user/0
[root@localhost ~]# df -i
文件系统 Inodes 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 3438384283434101% /dev
tmpfs 35180113518001% /dev/shm
tmpfs 8192008968183041% /run
/dev/mapper/cs-root 870519223911684660763% /
/dev/sda1 5242884205238681% /boot
/dev/mapper/vg--data-lv--data 321126401311321113291% /data
tmpfs 70360166701941% /run/user/0
[root@localhost ~]# df --block-size 1M
文件系统 1M-块 已用 可用 已用% 挂载点
devtmpfs 4040% /dev
tmpfs 1375013750% /dev/shm
tmpfs 550105412% /run
/dev/mapper/cs-root 1734014860248186% /
/dev/sda1 96030665532% /boot
/dev/mapper/vg--data-lv--data 49278922164654701% /data
tmpfs 27512751% /run/user/0
df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在 Superblock 内的信息, 所以这个指令显示结果的速度非常的快速。
/dev/shm/ 目录,其实是利用内存虚拟出来的磁盘空间,通常是总实体内存的一半。
| 参数 | 说明 |
|---|---|
-h | 以人类可读格式显示(KB、MB、GB),自动适配单位 |
--block-size=大小 | 指定块大小,如 --block-size=M 以 MB 为单位 |
-s 或 --summarize | 仅显示总计(只显示每个参数的总大小,不列出子目录) |
--max-depth=N | 限制显示目录深度为 N 层(N=1 只显示当前层),不能与-sh一起使用 |
常用组合
| 使用场景 | 推荐命令 |
|---|---|
| 查看当前目录总大小 | du -sh . |
| 查看当前目录下各子目录大小(一层) | du -h --max-depth=1 |
| 查看当前目录下所有文件/目录大小并排序 | du -sh * | sort -hr |
[root@localhost data]# du -sh *
35M betterdocs
13M betterdocs.zip
521M debian12.tar
384M mariadb.10.7.tar
557M phpmyadmin.tar
8.0K wordpress-kb
710M wordpress.php8.1-apache.tar
[root@localhost data]# du --max-depth=1 * -h
372K betterdocs/languages
332K betterdocs/vendor
1.1M betterdocs/views
27M betterdocs/assets
5.8M betterdocs/includes
35M betterdocs
13M betterdocs.zip
521M debian12.tar
384M mariadb.10.7.tar
557M phpmyadmin.tar
8.0K wordpress-kb
710M wordpress.php8.1-apache.tar
[root@localhost data]# du -sh * | sort -hr
710M wordpress.php8.1-apache.tar
557M phpmyadmin.tar
521M debian12.tar
384M mariadb.10.7.tar
35M betterdocs
13M betterdocs.zip
8.0K wordpress-kb
多个文件名对应到同一个inode号码——硬链接
hard link硬链接是在某个目录下新增一笔文件名链接到某个inode号码的关联记录。
限制:
不能跨文件系统
不能链接目录
[root@localhost data]# ln betterdocs.zip betterdocs.zip.hard
[root@localhost data]# ls -il betterdocs.zip betterdocs.zip.hard
15 -rw-r--r-- 2 root root 12615496 10月 27 2025 betterdocs.zip
15 -rw-r--r-- 2 root root 12615496 10月 27 2025 betterdocs.zip.hard
[root@localhost data]# ll
总用量 2245964
drwxr-xr-x 7 33 tape 4096 9月 17 2025 betterdocs
-rw-r--r-- 2 root root 12615496 10月 27 2025 betterdocs.zip
-rw-r--r-- 2 root root 12615496 10月 27 2025 betterdocs.zip.hard
-rw------- 1 root root 545444352 11月 10 2025 debian12.tar
-rw------- 1 root root 401884672 10月 27 2025 mariadb.10.7.tar
-rw------- 1 root root 583779328 10月 27 2025 phpmyadmin.tar
drwxr-xr-x 2 root root 4096 9月 17 2025 wordpress-kb
-rw------- 1 root root 743497728 10月 27 2025 wordpress.php8.1-apache.tar
[root@localhost data]# ln wordpress-kb wordpress-kb.hard
ln: wordpress-kb: 不允许将硬链接指向目录
Symbolic link符号链接、软链接(类似windows的快捷方式)
软链接:建立一个独立的新文件,而这个文件的数据指向它link的那个文件。当源文件删除后,软链接文件打不开。
[root@localhost data]# ln -s betterdocs.zip betterdocs.zip.soft
[root@localhost data]# ls -li betterdocs.zip betterdocs.zip.soft
15 -rw-r--r-- 2 root root 12615496 10月 27 2025 betterdocs.zip
14 lrwxrwxrwx 1 root root 14 6月 22 09:52 betterdocs.zip.soft -> betterdocs.zip
问题:怎么确认一个文件有没有硬连接?如果有,怎么查找到对应硬链接文件?
命令:ls -l 文件名
命令结果中,第二列的数字表示文件inode的链接总数。
2 表示2个文件名指向同一个inode,
1 表示没有硬链接
>1 表示有硬链接
[root@localhost data]# ls -l betterdocs.zip
-rw-r--r--2 root root 1261549610月 272025 betterdocs.zip
如果有硬链接文件,怎么查到找,可命令find命令按inode号来搜索
[root@localhost data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 04.0M 0% /dev
tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root 17G 13G 4.2G 76% /
/dev/sda1 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data 482G 2.2G 455G 1% /data
tmpfs 275M 96K 275M 1% /run/user/0
[root@localhost data]# find /data -inum 15
/data/betterdocs.zip
/data/betterdocs.zip.hard
[root@localhost data]# ls -i betterdocs.zip
15 betterdocs.zip
parted:更通用,同时支持 MBR 和 GPT,推荐新手使用。
fdisk:传统工具,主要用于 MBR,但新版本也支持查看 GPT。
gdisk:专门用于 GPT 的工具。
三种工具对比
| 工具 | 支持 MBR | 支持 GPT | 交互式 | 非交互式 | 大于2TB磁盘 | 推荐场景 |
|---|---|---|---|---|---|---|
| fdisk | √ | √(新版) | √ | × | √ | 日常分区管理 |
| gdisk | × | √ | √ | × | √ | GPT磁盘专用 |
| parted | √ | √ | √ | √ | √ | 自动化脚本、大容量磁盘 |
fdisk命令演示:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 500G 0 disk
└─vg--data-lv--data 253:2 0 490G 0 lvm /data
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part /boot
└─sdb2 8:18 0 19G 0 part
├─cs-root 253:0 0 17G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
[root@localhost ~]# fdisk -l
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfcc7d2cb
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 * 204820991992097152 1G 83 Linux
/dev/sdb2 20992004194303939843840 19G 8e Linux LVM
Disk /dev/sda:500 GiB,536870912000 字节,1048576000 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cs-root:17 GiB,18249416704 字节,35643392 个扇区
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cs-swap:2 GiB,2147483648 字节,4194304 个扇区
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/vg--data-lv--data:490 GiB,526133493760 字节,1027604480 个扇区
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost /]# fdisk /dev/sda2
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
设备已包含一个 'LVM2_member' 签名,写入命令会将其移除。请参见 fdisk(8) 的手册页和 --wipe 选项以了解更多细节。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x5108d5ca 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):m
帮助:
DOS (MBR)
a 开关 可启动 标志
b 编辑嵌套的 BSD 磁盘标签
c 开关 dos 兼容性标志
常规
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
杂项
m 打印此菜单
u 更改 显示/记录 单位
x 更多功能(仅限专业人员)
脚本
I 从 sfdisk 脚本文件加载磁盘布局
O 将磁盘布局转储为 sfdisk 脚本文件
保存并退出
w 将分区表写入磁盘并退出
q 退出而不保存更改
新建空磁盘标签
g 新建一份 GPT 分区表
G 新建一份空 GPT (IRIX) 分区表
o 新建一份的空 DOS 分区表
s 新建一份空 Sun 分区表
命令(输入 m 获取帮助):p
Disk /dev/sda2:19 GiB,20400046080 字节,39843840 个扇区
单元:扇区 / 1 * 512=512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5108d5ca
命令(输入 m 获取帮助):q
parted命令演示:
[root@localhost ~]# parted -l
错误: /dev/sda: 无法辨识的磁盘卷标
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sda:537GB
扇区大小 (逻辑/物理):512B/512B
分区表:unknown
磁盘标志:
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sdb:21.5GB
扇区大小 (逻辑/物理):512B/512B
分区表:msdos
磁盘标志:
编号 起始点 结束点 大小 类型 文件系统 标志
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 21.5GB 20.4GB primary lvm
XFS 文件系统 mkfs.xfs
EXT4 文件系统 mkfs.ext4
mkfs.ext4 /dev/sdb1实际上会在磁盘上创建:
Superblock
Block Group
Block Bitmap
Inode Bitmap
Inode Table
Data Blocks
Journal
格式化完成后,可以通过下面命令查看文件系统信息:
dumpe2fs -h /dev/sdb1[root@localhost ~]# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda LVM2_member LVM2 001 v0WCgO-TcNZ-EZmR-Wjpw-GT9A-Trwd-ZHXxnb
└─vg--data-lv--data ext4 1.0 ef5b7b37-ad55-4a6c-a8f4-42ffa5037a6c 454.6G 0% /data
sdb
├─sdb1 xfs 11974649-6ba4-4ef2-87c4-1c641a3ee480654.8M 32% /boot
└─sdb2 LVM2_member LVM2 001 CnxBj6-CAID-dfmt-MOii-u4TK-5DOk-SnqtcX
├─cs-root xfs 33926dea-7a9e-436a-bd3c-9a0c01c6f836 4.2G 75% /
└─cs-swap swap 110424895-d622-4e42-a433-2cb0b573bf96 [SWAP]
[root@localhost ~]# dumpe2fs /dev/mapper/vg--data-lv--data -h
dumpe2fs 1.46.5 (30-Dec-2021)
Filesystem volume name: <none>
Last mounted on: /data
Filesystem UUID: ef5b7b37-ad55-4a6c-a8f4-42ffa5037a6c
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 32112640
Block count: 128450560
Reserved block count: 6422528
Overhead clusters: 2296590
Free blocks: 125586781
Free inodes: 32111329
First block: 0
Block size: 4096
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 1024
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Mon Apr 1415:35:00 2025
Last mount time: Tue Jun 2309:47:01 2026
Last write time: Tue Jun 2309:47:01 2026
Mount count: 28
Maximum mount count: -1
Last checked: Mon Apr 1415:35:00 2025
Check interval: 0 (<none>)
Lifetime writes: 14 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 87cb64af-1552-4ba0-8a54-57042de62788
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0x114c38e2
Journal features: journal_incompat_revoke journal_64bit journal_checksum_v3
Total journal size: 1024M
Total journal blocks: 262144
Max transaction length: 262144
Fast commit length: 0
Journal sequence: 0x000000f5
Journal start: 0
Journal checksum type: crc32c
Journal checksum: 0x0d63baf7
例如:
mkfs.xfs /dev/sdb1会完成:
创建Superblock
记录:
文件系统UUID
块大小(Block Size)
AG数量
inode大小
日志位置
查看:
xfs_info /dev/sdb1例如:
meta-data=/dev/sdb1
isize=512
agcount=4
agsize=6553600 blks
sectsz=512
划分AG
假设:
磁盘 = 100GBXFS可能自动划分:
AG0 25GB
AG1 25GB
AG2 25GB
AG3 25GB
变成:
100GB
├─ AG0
├─ AG1
├─ AG2
└─ AG3
查看xfs文件系统信息
[root@localhost ~]# xfs_info /dev/sdb1
meta-data=/dev/sdb1 isize=512agcount=4, agsize=65536 blks
=sectsz=512attr=2, projid32bit=1
=crc=1finobt=1, sparse=1, rmapbt=0
=reflink=1bigtime=1inobtcount=1nrext64=0
data =bsize=4096blocks=262144, imaxpct=25
=sunit=0swidth=0 blks
naming =version 2bsize=4096ascii-ci=0, ftype=1
log =internal log bsize=4096blocks=16384, version=2
=sectsz=512sunit=0 blks, lazy-count=1
realtime =none extsz=4096blocks=0, rtextents=0
mount的用法
mount [选项] 设备 挂载点
mount [选项] -t 类型 设备 挂载点
| 选项 | 示例 | 说明 |
|---|---|---|
-a | mount -a | 挂载 /etc/fstab 中所有未挂载文件系统 |
-t | mount -t xfs /dev/sdb1 /data | 指定文件系统类型 |
-o | mount -o ro /dev/sdb1 /data | 指定挂载参数 |
-r | mount -r /dev/sdb1 /data | 只读挂载(等同于 -o ro) |
-w | mount -w /dev/sdb1 /data | 读写挂载(默认) |
-v | mount -v | 显示详细过程 |
-f | mount -f -a | 模拟挂载,不实际执行 |
-n | mount -n /dev/sdb1 /data | 不写入 /etc/mtab |
-l | mount -l | 显示卷标(Label) |
-U | mount -U UUID /data | 按 UUID 挂载 |
-L | mount -L DATA /data | 按 Label 挂载 |
mount 命令的职责只是临时挂载,挂载信息只存在于内核和当前系统运行状态中,不会自动保存到 /etc/fstab。
| 功能 | 工具 |
|---|---|
| 临时挂载 | mount |
| 永久挂载配置 | /etc/fstab |
| 根据fstab挂载 | mount -a |
mount /dev/sdb1 /data检查:
df -humount /data推荐使用UUID:
blkid /dev/sdb1例如输出:
/dev/sdb1: UUID="2f4d7f20-a6c9-4f52-bf6f-f9d5e6d1e4c2" TYPE="xfs"编辑:
vim /etc/fstab增加:
UUID=2f4d7f20-a6c9-4f52-bf6f-f9d5e6d1e4c2 /data xfs defaults 0 0第一列:设备
第二列:挂载目录
第三列:文件系统类型
第四列:挂载选项,如defaults(相当于 rw, suid, dev, exec, auto, nouser, async)
| 选项 | 含义 |
|---|---|
defaults | 使用默认选项(相当于 rw, suid, dev, exec, auto, nouser, async) |
rw / ro | 读写 / 只读挂载 |
noexec | 禁止在该分区上执行二进制程序 |
nosuid | 禁止 suid 和 sgid 位生效 |
nodev | 不解析字符或块设备文件 |
auto / noauto | 是否支持 mount -a 自动挂载 |
user / nouser | 是否允许普通用户挂载 |
第五列:转储标志(Dump),决定该文件系统是否需要被 dump 命令备份。0表示不备份。
第六列:文件系统检查顺序,决定系统重启时 fsck(文件系统检查)的执行顺序。0表示不检修,1表示最先检查,2表示次先检查。
不要急着重启!
执行:
mount -a如果没有报错:
echo $?返回:
0说明配置正确。
再检查:
findmnt /data 或者 df -h[root@localhost /]# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/cs-root
│ xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=19074
│ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/bpf bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700
│ ├─/sys/kernel/debug debugfs debugfs rw,nosuid,nodev,noexec,relatime
│ │ └─/sys/kernel/debug/tracing tracefs tracefs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/tracing tracefs tracefs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/fuse/connections fusectl fusectl rw,nosuid,nodev,noexec,relatime
│ └─/sys/kernel/config configfs configfs rw,nosuid,nodev,noexec,relatime
├─/dev devtmpfs devtmpfs rw,nosuid,size=4096k,nr_inodes=343838,mode=755,inode64
│ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,inode64
│ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
│ ├─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime
│ └─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,pagesize=2M
├─/run tmpfs tmpfs rw,nosuid,nodev,size=562884k,nr_inodes=819200,mode=755,inode64
│ ├─/run/vmblock-fuse vmware-vmblock fuse.vmware-vmblock rw,relatime,user_id=0,group_id=0,default_permissions,allow_other
│ ├─/run/credentials/systemd-tmpfiles-setup-dev.service
│ │ none ramfs ro,nosuid,nodev,noexec,relatime,mode=700
│ ├─/run/credentials/systemd-sysctl.service
│ │ none ramfs ro,nosuid,nodev,noexec,relatime,mode=700
│ ├─/run/credentials/systemd-tmpfiles-setup.service
│ │ none ramfs ro,nosuid,nodev,noexec,relatime,mode=700
│ └─/run/user/0 tmpfs tmpfs rw,nosuid,nodev,relatime,size=281440k,nr_inodes=70360,mode=700,inode64
│ ├─/run/user/0/gvfs gvfsd-fuse fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=0,group_id=0
│ └─/run/user/0/doc portal fuse.portal rw,nosuid,nodev,relatime,user_id=0,group_id=0
├─/boot /dev/sda1 xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota
└─/data /dev/mapper/vg--data-lv--data
ext4 rw,relatime
[root@localhost /]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 04.0M 0% /dev
tmpfs tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root xfs 17G 13G 4.2G 76% /
/dev/sda1 xfs 960M 306M 655M 32% /boot
/dev/mapper/vg--data-lv--data ext4 482G 2.2G 455G 1% /data
tmpfs tmpfs 275M 96K 275M 1% /run/user/0
[root@localhost /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Apr 1 13:31:30 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cs-root / xfs defaults 00
UUID=11974649-6ba4-4ef2-87c4-1c641a3ee480 /boot xfs defaults 00
/dev/mapper/cs-swap none swap defaults 00
/dev/mapper/vg--data-lv--data /data ext4 defaults 00
[root@localhost /]# mount -a
[root@localhost /]# echo $?
0
[root@localhost /]# umount /dev/mapper/vg--data-lv--data
[root@localhost /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 04.0M 0% /dev
tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root 17G 13G 4.2G 76% /
/dev/sda1 960M 306M 655M 32% /boot
tmpfs 275M 96K 275M 1% /run/user/0
[root@localhost /]# mount -a
[root@localhost /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 04.0M 0% /dev
tmpfs 1.4G 01.4G 0% /dev/shm
tmpfs 550M 9.6M 541M 2% /run
/dev/mapper/cs-root 17G 13G 4.2G 76% /
/dev/sda1 960M 306M 655M 32% /boot
tmpfs 275M 96K 275M 1% /run/user/0
/dev/mapper/vg--data-lv--data 482G 2.2G 455G 1% /data
blkid用于查找或显示块设备属性的命令行工具,主要用来查存储设备的UUID(通用唯一标识符)、文件系统类型、及LABEL(卷标)等信息。
[root@localhost ~]# blkid
/dev/sda: UUID="v0WCgO-TcNZ-EZmR-Wjpw-GT9A-Trwd-ZHXxnb"TYPE="LVM2_member"
/dev/mapper/cs-swap: UUID="10424895-d622-4e42-a433-2cb0b573bf96"TYPE="swap"
/dev/sdb2: UUID="CnxBj6-CAID-dfmt-MOii-u4TK-5DOk-SnqtcX"TYPE="LVM2_member"PARTUUID="fcc7d2cb-02"
/dev/sdb1: UUID="11974649-6ba4-4ef2-87c4-1c641a3ee480"TYPE="xfs"PARTUUID="fcc7d2cb-01"
/dev/mapper/vg--data-lv--data: UUID="ef5b7b37-ad55-4a6c-a8f4-42ffa5037a6c"TYPE="ext4"
/dev/mapper/cs-root: UUID="33926dea-7a9e-436a-bd3c-9a0c01c6f836"TYPE="xfs"
基本语法:sort [选项] 文件
| 选项 | 长选项 | 说明 |
|---|---|---|
-r | --reverse | 降序排序 |
-n | --numeric-sort | 按数字排序 |
-k | --key | 指定排序列 |
-t | --field-separator | 指定分隔符 |
-u | --unique | 去重并排序 |
-f | --ignore-case | 忽略大小写 |
-M | --month-sort | 按月份排序 |
-h | --human-numeric-sort | 按容量排序(K/M/G) |
-V | --version-sort | 按版本号排序 |
-o | --output | 输出到文件 |
-c | --check | 检查是否已排序 |
-b | --ignore-leading-blanks | 忽略前导空格 |
当前目录下的文件按从大到小 排序
[root@localhost data]# du -sh *| sort -hr
710M wordpress.php8.1-apache.tar
557M phpmyadmin.tar
521M debian12.tar
384M mariadb.10.7.tar
35M betterdocs
13M betterdocs.zip
8.0K wordpress-kb
[root@localhost data]# du -sh *| sort -h
8.0K wordpress-kb
13M betterdocs.zip
35M betterdocs
384M mariadb.10.7.tar
521M debian12.tar
557M phpmyadmin.tar
710M wordpress.php8.1-apache.tar
[root@localhost data]# ll #不加sort时,乱序
总用量 2245964
drwxr-xr-x 733 tape 40969月 172025 betterdocs
-rw-r--r--2 root root 1261549610月 272025 betterdocs.zip
-rw-r--r--2 root root 1261549610月 272025 betterdocs.zip.hard
-rw-------1 root root 54544435211月 102025 debian12.tar
-rw-------1 root root 40188467210月 272025 mariadb.10.7.tar
-rw-------1 root root 58377932810月 272025 phpmyadmin.tar
drwxr-xr-x 2 root root 40969月 172025 wordpress-kb
-rw-------1 root root 74349772810月 272025 wordpress.php8.1-apache.tar
[root@localhost data]# ll | sort -h #使用sort后,目录在前面文件在后面
总用量 2245964
drwxr-xr-x 2 root root 40969月 172025 wordpress-kb
drwxr-xr-x 733 tape 40969月 172025 betterdocs
-rw-------1 root root 40188467210月 272025 mariadb.10.7.tar
-rw-------1 root root 54544435211月 102025 debian12.tar
-rw-------1 root root 58377932810月 272025 phpmyadmin.tar
-rw-------1 root root 74349772810月 272025 wordpress.php8.1-apache.tar
-rw-r--r--2 root root 1261549610月 272025 betterdocs.zip
-rw-r--r--2 root root 1261549610月 272025 betterdocs.zip.hard
[root@localhost data]# ls
betterdocs betterdocs.zip betterdocs.zip.hard debian12.tar mariadb.10.7.tar phpmyadmin.tar wordpress-kb wordpress.php8.1-apache.tar
[root@localhost data]# ls | sort
betterdocs
betterdocs.zip
betterdocs.zip.hard
debian12.tar
mariadb.10.7.tar
phpmyadmin.tar
wordpress-kb
wordpress.php8.1-apache.tar