Linux中inode详解,硬链接和软链接介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中inode详解,硬链接和软链接介绍相关的知识,希望对你有一定的参考价值。
inode 详解在Linux中,我们经常会做一些关于数据的操作(备份、传输、压缩等)或是要在后台持续的运行一些程序。由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关闭了,它所运行的进程也会关闭,我们所做的工作就可能前功尽弃。但是,即使我们不主动的关闭终端,终端有的时候也会应为一些原因(网络、锁屏等)而中断,导致我们的工作进度清零。
1.inode 定义
inode是用来存储文件元信息的区域。中文译名叫做“索引节点”。
简单来说,inode 指示了一个文件的基本信息,如inode编号、修改时间、文件的位置等,就如同一本书的目录,会直接告诉你想看的章节是在第几页。不同的是,书是以页为单位的,而 linux 文件存取是以“块”为单位的。
操作系统在读取硬盘的时候,会一次性读取一个“块”(一个“块”的大小往往是4kb,包含了连续8个扇区,每个扇区存储512个字节)。而inode就告诉了文件位于哪个“块”,于是系统就会从这个“块”开始读取内容,我们就可以看到这个文件的内容。
每个文件都有对应的inode,存储着关于这个文件的基本信息。linux 系统不使用文件名,而使用 inode 号来识别文件。对于使用者,我们是通过文件名打开的文件;但是对于系统内部,是分为三步的:
- 系统找到这个文件名对应的 inode 号
- 通过 inode 号,获取 inode 信息
- 根据 inode 信息,找到文件数据所在的 block,读取内容
2.inode 内容
inode 包含了文件的以下基本信息:
- 文件的字节数
- inode 编号
- 文件拥有者的 Uid
- 文件所属group的 Gid
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:
change:inode 上一次变动的时间
modify:文件内容上一次变动的时间
access:文件上一次打开的时间 - 链接数,即有多少文件名指向这个 inode
- 文件数据 block 的位置
查看inode内容可以使用命令:stat -i 和 ls -i
3.目录原理
要理解文件的操作对 inode 的影响,先要理解目录的原理。目录对外表现是一个容器,存放着子文件和子目录,实际上在系统内部,目录本身也是一个文件,目录文件的内容即是该目录下的文件名与 inode 号的映射表(即一个个的目录项)。因此,linux 访问一个文件时,要先查询到上一级目录,根据目录内容查找到文件对应的 inode 号,然后读取对应的 block。
4.文件操作原理
cp命令
- 分配一个空闲的inode号,inode表中新增一条索引记录
- 在目录中新建一个目录项,并指向步骤一中的inode号关联
- 将数据复制到block中
rm命令
- 减少要删除文件链接数,如果链接数变为0,则释放inode号
- 数据block放到空闲列表中
- 删除目录项
(数据文件不会马上删除,当新的文件覆盖数据块,则数据删除,若没有覆盖,则还可以恢复)
mv命令
如果源文件和目标文件在一个文件系统
- 目标文件目录中新建目录项
- 源文件目录中的目录项
-
目标文件名指向inode记录
(inode记录没有影响(除时间戳),数据位置没有变化)如果目标文件和源文件属于不同文件系统,则相当于 cp + rm。
ln命令
硬链接
一般情况下,文件名和 inode 号是一一对应,但是也有可能多个文件名指向同一个 inode 号,即硬链接。硬链接可以实现用不同的文件名访问同一个文件。
软链接
软链接也可以通过不同的文件名访问同一块数据,但是与硬链接不同的是,两个文件名的 inode 是不一样的。那如何访问同一块区域呢?比如文件 A 是文件 B 的软连接,那么文件 A 的内容存放的是文件 B 的路径名(可以通过这个找到文件 B 的目录项)。因此访问 A 时,会读取文件 B 的路径,进而读取文件 B 的内容。这样,对外表现来看,文件 A 和文件 B 的内容就相同了。类似于 windows 系统下的快捷方式。
创建软链接语法:
ln -s [source file] [new file]
在生产环境中,创建软链接一般选择相对路径,这样在数据整体迁移中,软链接保持相对关系不受根目录影响。特殊需要强调的是:源文件路径是相对于新链接文件的相对路径,不是相对当前工作目录的相对路径
例如:
硬链接与软链接的区别
- 本质不同,硬链接指向同一个文件,软链接指向文件不同
- 跨分区,硬链接不支持跨分区,软链接可以跨分区
- inode编号,硬链接inode编号相同,软链接inode编号不同
- 目录,硬链接不支持目录,软链接可以对目录创建
- 创建硬链接时,链接数加1,创建软链接时,链接数不变
- 硬链接属于平等关系,软链接属于依赖关系,删除原文件效果不同
本文参考文章
作者:HappyRocking
来源:CSDN
原文:https://blog.csdn.net/HappyRocking/article/details/80671997
版权声明:本文为博主原创文章,转载请附上博文链接!
以上是关于Linux中inode详解,硬链接和软链接介绍的主要内容,如果未能解决你的问题,请参考以下文章