Linux系统下软硬链接底层工作原理的理解

软硬链接底层工作原理

文件系统的分为元数据区和数据区 

元数据区用来保存文件的相关属性信息,如: inode编号,时间戳,所属关系(ownership),链接数,数据区指针,而文件数据则存储在数据区中,文件访问时首先查看文件元数据信息中的inode编号进而根据数据区指针找到数据区文件的实际存放位置 

而对于目录来讲,数据区保存的则是文件夹下文件名与inode编号之间的映射关系,通过查找文件名对应的inode号进而可以找到该inode编号对应文件的数据 

如图所示:

2

对于目录A下的两个文件file1,file2,file1对应的inode编号为1000,file2对应的inode编号为1203,目录A的节点编号为1010
查看文件inode编号 # ls -il filename
查看文件夹inode编号 # ls -di dirname

若要访问目录A下的文件file1, 操作系统首先要根据文件夹的元数据信息查看用户是否有访问权限,若具有访问权限则根据目录A的data指针查找到数据区中file1对应的inode编号,再通过该inode编号的data指针查找到指针所指向的文件数据

硬链接:
对于硬链接而言,是在数据区中增加一条不同文件名对应相同inode编号的一条对应关系(file1 <–> 1000, file3 <—> 1000),所以删除一条对应关系数据并不会影响文件的访问,由于在linux操作系统中不同的分区的文件可能具有相同的inode编号,系统通过相同编号就会找到不同的文件数据,所以硬链接的创建是不允许跨分区的,删除硬链接就是删除数据区保存的文件名与inode编号的对应关系,所以只要存在一条任何对应关系就可以访问文件,硬链接的inode编号与文件名和原文件的inode编号与文件名在数据区存储时处于同等地位,所以在存在硬链接的情况下,删除原文件也并不会影响文件的访问。由于数据区中同一个inode编号与对应多个文件名存在映射关系,那么存在的映射关系的数量就是文件夹的链接数,由于数据区只能存储文件名与inode编号的对应关系,所以不能为目录创建硬链接


软连接:
对于软连接而言,软链接数据区指针指向是原文件的元数据,所以删除原文件会导致链接不可用,而如果删除软链接只是删除一条指向原文件的元数据指针,删除之后并不会影响元数据的访问,也就是因为软连接是创建的指针,所以软连接的创建是允许跨分区的,同时,由于软连接的创建并不会在数据区创建文件名与inode的链接关系,所以,软连接并不会增加文件的链接数

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93943

(3)
涤生涤生
上一篇 2018-03-31 14:28
下一篇 2018-03-31 14:59

相关推荐

  • CENTOS开机流程

    开机流程 centos 5和6版本开机流程kernel==>rootfs(根文件系统)首先内核启动,然后加载根文件系统,然后启动init(第一个文件系统)它负责所有的程序的启动、管理、调用、删除等(这一切是运行在用户空间的)。 “`kernel:进程管理内存管理网络管理驱动程序文件系统安全功能 rootfs:glibc“` 库:…

    Linux笔记 2018-05-13
  • 两台主机之间搭建路由通信

    搭建路由通信

    2018-04-29
  • 权限管理

    权限管理 普通权限 通过划分为三种人来管理,所有者u,所属组g,其他人o,所有人a 文件 删除文件用文件所在文件夹的写权限来决定 读写权限root不受控制,执行受控制 对于目录没有执行权限,无法进入目录,无法查看目录内文件属性,无法查看文件内容 执行权限是基础权限没有执行读写权限无用 程序要运行,所在目录要有执行权限 普通用户无法更改文件的所有者,要更改文件…

    Linux笔记 2018-03-31
  • MySQL数据库服务

    MySQL数据库的安装

    2018-06-12
  • 进程管理工具及计划任务

    进程管理工具 kill命令: 向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头 (可省略),不区分大小写 显示当前系统可用信号: kill –l,trap -l 常用信号:man 7 signal 1) SIGHUP: 无须关闭进程而让其重读配置文件 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 3) SIGQ…

    Linux笔记 2018-05-06
  • HTTP协议介绍

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

    2018-06-19