Linux
的传统的文件系统为Ext2(Linux second extended file system,ext2fs)
,在传统的磁盘和文件系统中,
一个分区就只能被格式化为一个文件系统,所以可以说成一个filesystem就是一个分区,但是由于新技术的利用。这些
技术可以将一个分区格式化为多个文件系统。所以,通常我们称呼一个可被挂载的数据为一个文件系统而不是一个分区。
在Linux
系统中,一个文件除了文件的实际数据内容之外,还包含着非常多的属性,比如文件的权限和属性等,文件系统通常会将这两部分数据分别存到不同的区块,权限和属性放置到inode
中,实际数据则放置在data block
中。此外还有一个超级区块super block
记录了整个文件系统的信息,包括inode
和block
的总量、使用量、剩余量等。这3个概念的解释如下:
superblock
: 记录文件系统的整体信息,包括inode/block
的总量、使用量、剩余量,以及文件系统的格式与相关信息inode
: 记录文件的属性,一个文件占用一个inode
,同时记录此文件的数据所在的block号码。block
: 实际记录文件的内容,若文件太大时,会占用多个block(当你输入ll
命令时,第一行显示的total xx
则表示该目录占用的block块的个数 * block size
)文件系统在格式化的时候就已经将inode
和block
规划好了,其中block
是用来存放数据的地方,在ext2文件系统中所支持的block
大小有1k,2k以及4k。由于block
大小的差异,会对系统的文件有一些限制:
block
是1kb
,则单一文件最大的大小支持为16GB
,2kb
支持的最大为256GK
。4kb
支持的最大为2TB
1kb
的block
支持2TB
的最大容量,2kb
的block
支持8TB
的最大容量,4kb
支持16TB
最大容量block
的大小和数量在安装系统前的格式化磁盘就已经决定,无法更改,除非重新格式化block
最多存放一个文件的数据。block
,则一个文件会占用多个block
数量block
,则该block
的剩余容量则不能够再使用(磁盘空间会浪费)可以通过一下命令查看操作系统的block size
(只适用于ext2、ext3、ext4
的文件系统)
# 列出挂载点
df -h
# 根据上一个命令中的挂载点查看block size
tune2fs -l /dev/sda3 |grep -i 'block size'
inode
记录的数据有如下几部分:
inode
的数量和大小也是在格式化的时候已经固定,除此之外,inode
还有以下特点:
inode
大小固定为128B
(新的ext4
和xfs
可设置到256B
)inode
inode
数量有关inode
,并分析inode
所记录的权限与使用者是否符合,若符合才能开始读block的内容super block
相关知识super block
记录着整个文件系统的相关信息,记录了block
与inode
的总量和大小。同时保存了一份inode
和block的对照表,用来记录inode是否已经被使用,已经block
是否为空(可以存数据),通过这些信息可以知道文件应该存在那个地方。
[root@xxx info]# ls -lid /
2 dr-xr-xr-x. 21 root root 4096 Mar 13 11:47 /
ext2
文件系统的局限性在于写入数据错误的时候,系统启动恢复的时候需要检查磁盘花费大量时间,所以就有了ext3、
这类日志式文件系统。这些文件系统优化了数据一致性的保障功能,通过日志的方式,可以很快速的检查是否有文件错误。
ext4
ContOs 7
开始,默认的文件系统由Ext4
改成了XFS
。XFS
几乎兼容Ext4
所有的功能,但是为什么要使用XFS
呢?这是因为
Ext
系列的文件系统在格式化大容量硬盘的时候需要划分inode
以及block
等需要花费大量时间。而XFS
文件系统基本上就是为了适应大容量磁盘的文件系统。XFS
也是采用inode
和block
的文件内容分布方式,但是inode
和block
并不是在格式化磁盘的时候指定的,他是根据创建文件的时候动态计算的。所以速度相对比较快,至于XFS
比较深入一点的知识这里就不介绍了。
命令:df
参数:
a
列出所有文件系统k
以KB
输出大小m
以MB
输出大小h
以人类易读的格式输出H
以M = 1000K
取代M = 1024K
的方式显示T
连同分区的文件系统名称列出i
以inode
的数量来显示文件大小# 查看 /usr 目录的文件系统
[root@xxxx info]# df -T /usr
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/xvda1 ext4 103079200 19937072 77882972 21% /
# 查看容量使用情况
[root@xxx info]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 99G 20G 75G 21% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 1.6M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/0
命令: du
默认情况下,这个命令会列出系统总共的文件个数。这个命令有如下参数:
a
列出某个目录的文件以及所占用的空间大小h
以人类易读的格式输出s
列出总量S
不包括子目录的容量k
以KB
输出大小m
以MB
输出大小