Linux inode 之我见

Linux硬盘组织方式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),目录块(diredtory block).其中超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等;超级块后面的数据结构是索引结点,它包含了针对某一个具体文件的几乎全部信息,如文件的存取权限、所有者、大小、建立时间以及对应的目录块和数据块等;数据块是真正存储文件内容的位置.但是索引结点中不包括文件的名字,文件名是放在目录块里的.目录块里包含有文件的名字以及此文件的索引结点编号

硬盘盘片为圆形,每个硬盘盘片都有一个可以读写的磁头(Head),将这个磁头固定,使硬盘盘片旋转一周,所走轨迹就是磁道(Track)。硬盘内所有盘片的相同磁道号的集合成为磁柱(Cylinder)。每一磁道被划分成许多区域,每个区域叫一个扇区(Sector)硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

硬盘的0磁道的第一个扇区称为MBR,它的大小是512字节,而这个区域可以分为两个部分。第一部分为pre-boot区(预启动区),占446字节;第二部分是Partition table区(分区表),占66个字节,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码。不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。block的大小在格式化分区的时候就确定了。

硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。每个inode节点的大小,一般是128字节或256字节。

inode包含文件的元信息,具体来说有以下内容:

  * 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限
  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  * 链接数,即有多少文件名指向这个inode
  * 文件数据block的位置

eg:

6816307 -rw-r--r-- 1 workherd root 1073741824 Sep 10 11:22 test1126

File: `test1126‘
Size: 1073741824 Blocks: 2097160 IO Block: 4096 regular file
Device: 802h/2050d Inode: 6816307 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 502/ lixiaod) Gid: ( 0/ root)
Access: 2017-09-10 11:22:08.607120512 +0800
Modify: 2017-09-10 11:22:19.665120370 +0800
Change: 2017-09-10 11:28:02.053153370 +0800

Linux通过文件元信息中的Blocks和Size参数就能定位文件在磁盘的位置了

时间: 2024-08-03 09:44:44

Linux inode 之我见的相关文章

Linux inode满导致创建文件报磁盘空间不足

客户报不能挂载存储,系统异常.登陆系统,尝试手动mount分区,报失败.进入挂载点,尝试写入一个文件,报磁盘空间不足,首先怀疑是系统磁盘空间满: $ df Filesystem           1K-blocks      Used Available Use% Mounted on /dev/xvda 33030016 10407780 22622236 32% / tmpfs 368748 0 368748 0% /lib/init/rw varrun 368748 56 368692

Linux inode && Fast Directory Travel Method(undone)

目录 1. Linux inode简介 2. Fast Directory Travel Method 1. Linux inode简介 0x1: 磁盘分割原理 字节 -> 扇区(sector)(每个扇区存储512字节) -> 块(block)(最常见的是4KB,即8个连续的sector组成一个block) 1. 磁盘的最小存储单位是"扇区" 2. 文件存储的最小单位是"块" 0x2: Linux EX2 filesystem 当一个partition(

理解linux inode

理解linux inode ? ? 1. inode的由来和作用 2. inode表中包含什么内容 3. 文件系统如何通过inode读取文件 4. 一个特殊的存在类型:硬链接 5. 目录文件的结构 ? ?1.inode的由来和作用??硬盘创建文件系统时,会把物理磁盘的扇区(512字节)创建为由多个扇区组成的"块"(目前常用的为4KB,即8个扇区).当操作系统从磁盘读取数据时,磁头从"块"上读取数据.为了快速查找数据,必须在磁盘上专门划分出一个专门的区域存储数据的&q

linux inode, 符号链接,物理链接

inode是linux中的保存文件属性的结构,文件的实际内容存放在block中.文件的block的地址信息存储在inode中. 可以使用命令ll -di file_path查看文件/目录的inode.(操作系统查找文件时,也是根据文件的目录一级一级查找inode得到的.当前目录的子目录信息所在的block信息也在当前目录的inode中) 文件的inode中存放文件的block信息,block信息是文件的实际block地址还是另一个inode的block信息决定了该文件是对文件的一个物理链接还是符

Linux inode的理解

描述:     一:inode是什么? 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(即0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文件数据都储存在"

linux inode 删除文件

find . -inum 918557 -exec rm -i {} \; 查看linux中文件的inode信息 2011-03-14 21:26:25 分类: Linux 大致四个方法: 直接执行stat命令,以文件名称为参数. 在debugfs中执行stat命令,以文件名称为参数. 在debugfs中执行mi命令,以inode编号为参数,注意执行debugfs时,要附加-w选项. 定位inode所在位置,然后以dd命令导出. 后面两种方法会得到完整的inode信息,而前面两种不完整. 查找目

linux inode已满解决方法

今天login server的一个网站,发现login后没有生成session.根据以往经验,一般是空间已满导致session文件生成失败. df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/dev01-root 75G 58G 14G 82% / udev 2.0G 4.0K 2.0G 1% /dev tmpfs 396M 292K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock no

linux ----Inode的结构图

http://www.ruanyifeng.com/blog/2011/12/inode.html 先看看Inode的结构图 再来了解一下文件系统如何存取文件的 1.根据文件名,通过Directory里的对应关系,找到文件对应的Inode number2.再根据Inode number读取到文件的Inode table3.再根据Inode table中的Pointer读取到相应的Blocks 这里有一个重要的内容,就是Directory,他不是我们通常说的目录,而是一个列表,记录了一个文件/目录

Linux inode耗尽故障处理

Linux系统中一切皆是文件,系统内部不使用文件名,而使用inode号码来识别文件,一个文件必须占有一个inode,由于每个文件都必须有一个inode, 因此有可能发生inode已经用光,但是硬盘还没有满的情况,这样会导致无法在硬盘上创建新文件.首先准备实验环境,新建一个硬盘,用fdisk工具创建一个内存约5M的分区/dev/sdb1,再格式化,并将其挂载到/data目录下,使用带"-i"选项的df命令确认该分区中节点的使用情况. 接着编写一个测试程序,运行该程序可以耗尽/dev/sd