前言
前面学习了磁盘管理中的磁盘分区,以及逻辑卷,交换分区的创建,这篇文章将介绍一下我们在分区以及格式化时候用到的ext4文件系统,本盘文章的学习内容包括了解索引(index)和块(block)的作用。
简介
● 类型:索引(index)文件系统
● 系统限制:
Ext3:文件系统最大16TB
Ext4:文件系统最大16TB
XFS:文件系统最大100TB.
● 名词:inode,block,superblock
● inode:
记录文件的属性(文件的元数据metadata)。
元数据:文件的属性,大小,权限,属主,属组,链接数,块数量,块编号。
一个文件占用一个inode,同时记录此文件数据所在的block number。
inode大小为128bytes。
● block:
存储文件的实际数据。
实际存储文件的内容,若文件较大,会占用多个block。
block大小为默认4K。
● superblock:
1、block与inode的总量。
2、未使用与已使用的inode/block数量。
如图,蓝色区域每一个数字代表一个块(block),灰色区域是索引inode相当于编号,一个索引对应了多个块,拿文件来说,每个文件都有一个inode这个文件中的数据内容就是占用的块。
inode与block
1、查看文件的inode信息
命令ll -i 文件名 //-i是查看inode的信息
[root@localhost ~]# ll -i /mnt/disk3 总用量 13 12 -rw-r--r--. 1 root root 0 10月 24 13:58 file1 11 drwx------. 2 root root 12288 10月 19 13:56 lost+found
往常ll 文件名命令查看文件信息的时候是没有前面12那个数字的,这个数字是inode编号,可以看到file1文件在disk3目录下的inode号为12。
2、查看分区中的inode节点数
命令:df -i
sdb3这个分区是挂载到disk3文件夹上的,所以可看到sdb3这个分区总共有51200个inode,已经用了12个,还有51188个可用,那么我在disk3目录下再创建一个文件来看看sdb3分区的inode节点数。
可以看到sdb3分区的已用inode节点数变为了13,可用的变为51187少了一个,可以看到一个文件会占用一个inode节点,接下来我将占满sdb3的inode节点。
如图所看到的的第一行命令创建多个文件,查看sdb3的inode节点数,看到sdb3的inode节点数已经占满了,但是sdb3的还有空间,这个时候再创建文件提示创建失败。
结论:inode决定了文件系统中文件的数量。
可以看到虽然无法创建文件,但是可以在任一一个文件中写入内容,接下来我将填满sdb3分区的空间。
//查看sdb3分区的内存 [root@localhost ~]# df -hT |grep sdb3 /dev/sdb3 ext4 190M 3.0M 173M 2% /mnt/disk3 //将sdb3空间填满 [root@localhost ~]# dd if=/dev/zero of=/mnt/disk3/file1 bs=1M count=174 记录了174+0 的读入 记录了174+0 的写出 182452224字节(182 MB)已复制,0.240873 秒,757 MB/秒 [root@localhost ~]# df -hT |grep sdb3 /dev/sdb3 ext4 190M 177M 0 100% /mnt/disk3 [root@localhost ~]# touch /mnt/disk3/file0000 touch: 无法创建"/mnt/disk3/file0000": 设备上没有空间
可以看到用dd if=/dev/zero of=/mnt/disk3/file1 bs=1M count=174命令将sdb3的空间填满,也就是把sdb3分区的块全部占用,这时候再创建文件依然是失败的。
得出结论,磁盘空间的限制根据inode和block两方面。