文件系统
Linux文件系统的特性
- super block(超级块):
记录整个文件系统的信息,包括block和inode的总量,已经使用的inode和block的数量,未使用的inode和block的数量,block和inode的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘校验时间。 - block group(块组):
除了超级块以外,剩下的分区空间还有数量巨大的块,这些块的数量太多,管理起来不方便,Linux便将剩下的磁盘又分为了块组,块组方便了系统对磁盘的管理,由于磁盘被划分为若干组,因此上层访问数据时碰撞的概率就会大大减小,从而提升文件系统的整体性能。 - date block(数据块,也称作block):
用来实际保存数据的,block的大小(1KB、2KB、4KB)和数量在格式化后就已经决定不能改变,除非重新格式化,每个block只能保存一个文件的数据,文件数据小于一个block块,那么剩下的空间不能再保存数据,若是大于一个block块,就用多个block块来保存。 - inde(i节点):
用来记录文件的权限(r、w、x),文件的所有者和属组,文件的大小,文件的状态改变时间,文件的最近一次读取时间,文件的最近一次修改时间,文件的数据的真正保存时间,文件的数据的真正保存的block编号,每个文件需要占用一个inode。
Linux常用的文件系统
文件系统 | 描述 |
---|---|
ext | Linux中最早的文件系统。 |
ext2 | ext的升级版本,Red Hat 7.2版本以前的系统默认都是ext2文件系统。 |
ext3 | 是ext2的升级版本,最大的区别就是带日志功能,以便系统突然停止时提高文件系统的可靠性。 |
ext4 | 是ext3文件系统的升级版,ext4再性能、伸缩性和可靠性等方面进行了大量改进,并且还向下兼容ext3,是CentOS6.x的默认文件系统。 |
XFS | XFS最早是针对IRIX系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性,它是一个64位的文件系统,后来进行开源并移植到了Linux操作系统中,目前CentOS7.x将XFS+LVM作为默认的文件系统,据官方称,XFS对大文件的读写性能较好。 |
swap | swap是Linux中用于交换分区的文件系统(类似于Windows中的虚拟内存)。 |
NFS | 网络文件系统的缩写,是一种用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的港式使用远程共享的资源。 |
iso9660 | 光盘的标准文件系统。 |
fat | Windows下的fat16文件系统,在Linux中识别位fat。 |
vfat | Windows下的fat32文件系统,在Linux中识别位vfat,支持最大32GB的分区和最大4GB的文件。 |
常用的硬盘管理命令
df命令
统计空间大小信息。
命令格式:
[root@ddkk.com ~]# df -ahT
常用选项:
- -a:显示特殊文件系统,这些文件系统几乎都是保存在内存中,如/proc,因为是挂载在内存中的,所以占用量为0
- -h:单位不再使用KB,而是换算成习惯单位
- -T:多出了文件系统类型一列
du命令
统计文件大小,ls -l命令显示目录大小时只能统计目录单独大小,而不能统计目录下文件大小总和,du命令可以实现这一功能。
命令格式:
[root@ddkk.com ~]# du 选项 目录或文件名
常用选项:
- -a:显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量
- -h:使用习惯单位显示磁盘占用量,如KB、MB、GB等
- -s:使用总占用量,而不列出子目录和子文件的占用量
fsck文件系统修复命令
fsck命令是系统自带的一条命令,如果在意外关机或者系统崩溃后可以修复的话,fsck命令就会在开机时自动执行修复文件系统。
[root@ddkk.com ~]# fsck -y /dev/sda1
#自动修复
显示磁盘状态
[root@ddkk.com ~]# dumpe2fs 选项 磁盘分区
#详细显示磁盘状态以及分出的块组
常用选项:
- -h:只看磁盘分区的信息不看块组
例:
[root@ddkk.com ~]# dumpe2fs -h /dev/sda2
dumpe2fs 1.45.6 (20-Mar-2020)
Filesystem volume name: <none> 卷标名
Last mounted on: / 挂载点
Filesystem UUID: 71577b29-baae-4109-8436-558b7fc032e0 UUID
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: 1171456
Block count: 4679424 块总数
Reserved block count: 233971
Free blocks: 4111905
Free inodes: 1127647
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点数
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Fri Oct 15 00:12:12 2021
Last mount time: Tue Jan 25 04:32:36 2022
Last write time: Tue Jan 25 04:32:31 2022
Mount count: 13
Maximum mount count: -1
Last checked: Fri Oct 15 00:12:12 2021
Check interval: 0 (<none>)
Lifetime writes: 7539 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256 inode大小
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
First orphan inode: 655914
Default directory hash: half_md4
Directory Hash Seed: 9242f857-4197-4192-910c-8092ee135c6a
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0x8eaa9471
Journal features: journal_incompat_revoke journal_64bit journal_checksum_v3
Journal size: 128M
Journal length: 32768
Journal sequence: 0x00002856
Journal start: 1
Journal checksum type: crc32c
Journal checksum: 0x88847f03
常看文件的详细时间
[root@ddkk.com ~]# stat 文件名
[root@ddkk.com ~]# stat anaconda-ks.cfg
文件:anaconda-ks.cfg
大小:1134 块:8 IO 块:4096 普通文件
设备:802h/2050d Inode:138164 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2022-01-22 03:59:27.844481855 -0500
最近更改:2021-10-15 00:20:30.073663646 -0400
最近改动:2021-10-15 00:20:30.073663646 -0400
创建时间:2021-10-15 00:20:29.732644006 -0400
判断文件类型
[root@ddkk.com ~]# file 文件名
#判断文件类型
[root@ddkk.com ~]# type 命令名
#判断命令类型
例:
[root@ddkk.com ~]# type cd
cd 是 shell 内建
[root@ddkk.com ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text