Linux文件系统inode的作用

简介: 前面学习了磁盘管理中的磁盘分区,以及逻辑卷,交换分区的创建,这篇文章将介绍一下我们在分区以及格式化时候用到的ext4文件系统,本盘文章的学习内容包括了解索引(index)和块(block)的作用。

前言


  前面学习了磁盘管理中的磁盘分区,以及逻辑卷,交换分区的创建,这篇文章将介绍一下我们在分区以及格式化时候用到的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数量。


778c110e07b04d21b09fdda056207862.png


如图,蓝色区域每一个数字代表一个块(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


4295f245f000408f81d76da65d18c163.png


sdb3这个分区是挂载到disk3文件夹上的,所以可看到sdb3这个分区总共有51200个inode,已经用了12个,还有51188个可用,那么我在disk3目录下再创建一个文件来看看sdb3分区的inode节点数。


e323fe9dc5ee4053973cd2e78d2ea4fc.png


可以看到sdb3分区的已用inode节点数变为了13,可用的变为51187少了一个,可以看到一个文件会占用一个inode节点,接下来我将占满sdb3的inode节点。



9075b3c52ed7418380b03e879c411dbd.png


如图所看到的的第一行命令创建多个文件,查看sdb3的inode节点数,看到sdb3的inode节点数已经占满了,但是sdb3的还有空间,这个时候再创建文件提示创建失败。


结论:inode决定了文件系统中文件的数量。


cdb1a0addf164967a3f51d20d078d215.png


可以看到虽然无法创建文件,但是可以在任一一个文件中写入内容,接下来我将填满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两方面。



相关文章
|
2月前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
39 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
31 2
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
26 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
35 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
34 2
|
2月前
|
安全 Shell Linux
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
13 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
32 0
|
2月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
29 0
|
2月前
|
存储 安全 Linux
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
28 0
|
2月前
|
算法 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 检查和修复文件系统错误 fsck命令使用教程
【Shell 命令集合 磁盘维护 】Linux 检查和修复文件系统错误 fsck命令使用教程
25 0