一、inode概念
inode(index node):译为“索引节点”,是理解Linux文件系统和硬盘存储的基础。
理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做“扇区”。每个扇区能储存512字节(相当于0.5KB)操作系统在读取硬盘的时候,并非逐个读取扇区,这种方式效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4kb,即连续八个sector组成一个block。
文件数据都存放在block中,那么与block存放相关联的,必须有一个地方储存文件的元信息,如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫inode。
二、inode表结构
三、inode内容
每一个inode(索引节点)是一个表项,包含有关文件的元数据信息,包括:
△ 文件类型:
“-” :普通文件
“d”:目录
“c”:字符设备文件
“b”:块设备文件
“p”:管道文件
“s”:套接字文件
“l” :链接文件
△ 权限:
>读(r)
>写(w)
>执行(x)
△ 文件所属:
>UID
>GID
△ 硬链接数(指向这个文件名路径名称个数)
△ 文件大小、inode数
△ 时间戳:
>ctime:文件的inode上一次变动的时间
>mtime:文件内容上一次变动的时间
>atime:文件上一次打开的时间
△ 文件数据block的位置:指向磁盘上文件的数据块指针
△ 有关文件的其他数据
附:几个相关命令的理解
-
cp:分配一个空闲的inode号,在inode表中生成新条目;在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件
-
mv:
如果mv命令的目标和源在相同的文件系统,作为mv 命令>用新的文件名创建对应新的目录项 >删除旧目录条目对应的旧的文件名 >不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm
-
rm:链接数递减,从而释放的inode号可以被重用;把数据块放在空闲列表中;删除目录项;数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
- 链接
△ 硬链接:
>创建硬链接会增加额外的记录项以引用文件
>对应于同一文件系统上一个物理文件
>每个目录引用相同的inode号
>创建时链接数递增
>删除文件时:
>rm命令递减计数的链接
>文件要存在,至少有一个链接数
>当链接数为零时,该文件被删除
>不能跨越驱动器或分区
>语法:
ln filename [linkname ]
△ 软链接(符号链接):
一个符号链接指向另一个文件
ls - l的 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减
少目标文件inode的引用计数;
语法:
ln -s filename [linkname]