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月前
|
存储 Linux 数据处理
探索Linux操作系统的内核与文件系统
本文深入探讨了Linux操作系统的核心组件,包括其独特的内核结构和灵活的文件系统。文章首先概述了Linux内核的主要功能和架构,接着详细分析了文件系统的工作原理以及它如何支持数据存储和检索。通过比较不同的文件系统类型,本文旨在为读者提供一个关于如何根据特定需求选择合适文件系统的参考框架。
|
1月前
|
存储 缓存 算法
【linux】认识“文件”的本质,理解“文件系统”的设计逻辑,体会linux优雅的设计理念
【linux】认识“文件”的本质,理解“文件系统”的设计逻辑,体会linux优雅的设计理念
|
7天前
|
存储 Linux 文件存储
Linux 存储管理 (二)创建文件系统
【8月更文挑战第13天】使用`fdisk`创建分区后,通过`mkfs`命令创建文件系统,支持多种类型如ext4、XFS等。创建前确认分区无重要数据,示例命令为`mkfs.ext4 /dev/sdc1`。之后使用`mount`命令将分区挂载至指定目录,如`mount /dev/sdc1 /w`。为实现开机自动挂载,可在`/etc/fstab`文件中添加相应条目。这些步骤有助于高效管理和利用存储空间。
19 2
|
16天前
|
存储 数据管理 物联网
探索Linux文件系统的奥秘
【8月更文挑战第3天】在数字时代的海洋中,Linux 文件系统犹如一座灯塔,指引着数据存储和访问的航向。本文将带你深入Linux的文件系统结构,从基础概念到操作实践,通过代码示例揭示文件系统背后的逻辑与美学。准备好跟随我们的脚步,开启一场关于数据组织和管理的知识之旅。
|
1月前
|
存储 运维 安全
Linux命令stat:深入了解文件与文件系统状态
`stat`命令在Linux中用于显示文件和文件系统的详细状态,包括权限、大小、时间戳等。它通过读取inode获取信息,特点是显示全面、易用且支持多种参数,如`-c`自定义格式,`-f`查看文件系统状态,`-L`处理符号链接。例如,`stat example.txt`显示文件详情,`stat -c "%n 的大小是 %s 字节" example.txt`输出文件大小。理解`stat`有助于系统管理和故障排查。
|
1月前
|
存储 Linux Windows
【Linux】文件系统软硬链接的那些事儿
本文介绍了Linux文件系统的磁盘结构、逻辑结构以及文件和inode的关系,重点讲解了软链接和硬链接的区别,强调了它们在文件管理中的作用。
43 7
|
1月前
|
存储 缓存 固态存储
Linux操作系统之文件系统详解
Linux操作系统之文件系统详解
|
2月前
|
存储 Unix 数据管理
深入探讨Linux文件系统:从传统到现代
深入探讨Linux文件系统:从传统到现代
26 0
|
3月前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
3月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。