当前位置: 首页 > news >正文

面试官灵魂拷问:Linux软链接与硬链接到底有什么区别?(附底层Inode级深度图解)

上篇文章:万字长文爆肝:彻底弄懂Linux文件系统(Ext2),从Inode、Block到Dentry核心机制全解析

目录

引言

1.前置知识:文件在 Linux 底层是如何存储的?

2.软链接(Symbolic Link / Symlink):独立的替身

2.1软链接的概念

2.2底层剖析

2.3软连接存在的意义

3.硬链接(Hard Link):多个名字,同一个灵魂

3.1硬链接概念

3.2底层剖析

3.3硬链接的作用

3.4硬链接的局限性

4.核心对比表


引言

在 Linux 日常运维和后端开发面试中,有一个经典的高频考点:“请简述一下 Linux 中软链接和硬链接的区别?

很多初学者只能背出“软链接相当于快捷方式,硬链接不能跨文件系统”这样干瘪的结论。但如果面试官追问一句:“那它们在底层磁盘系统上到底是怎么存储的?” 往往就会卡壳。

今天,我们将抛开死记硬背的条条框框,直接下探到 Linux 文件系统的Inode(索引节点)层面,用最底层的逻辑一次性把软硬链接彻底讲透!

1.前置知识:文件在 Linux 底层是如何存储的?

在深入链接之前,我们必须复习一个铁律:在 Linux 文件系统(如 Ext4)中,文件内容与文件属性是分离存储的。

  • 文件内容:存储在数据块(Data Block)中。

  • 文件属性:存储在索引节点(Inode)中。Inode 中记录了文件大小、权限、创建时间以及指向数据块的指针。

  • 文件名:文件名既不存在 Data Block 中,也不存在 Inode 中!文件名存放在该文件所在的“父目录”的数据块中。目录的数据块本质上是一张映射表,记录着:文件名 <-> Inode 号

明白了这一点,我们就拿到了破解软硬链接机制的钥匙。

2.软链接(Symbolic Link / Symlink):独立的替身

2.1软链接的概念

软链接(又称符号链接)完全不同于硬链接。软链接是一个实实在在的、全新的独立文件。

我们可以使用ln -s创建软链接:

ln表示link,其中,link-soft文件就是readdir.c文件的软连接

2.2底层剖析

观察ls -li的输出:

查看更详细的信息,我们发现软连接是有独立的inode的。也就是说,软连接是一个独立的文件

只要是文件,就由属性 + 内容构成。内容中保存的是目标文件的所在路径+目标文件名。

软链接文件的权限非常开放(通常是lrwxrwxrwx),开头的 l 代表 Link 文件类型。

而软连接类似于windows中的快捷方式,目的是为了加速查找。

2.3软连接存在的意义

在这个独立分配的Inode所对应的数据块(Data Block)中,存储的不是普通的文本内容,而是目标文件的绝对或相对路径字符串。

当操作系统访问时,发现它的类型是 l(软链接),就会读取其数据块中记录的路径字符串,然后自动重定向去寻找真正的目标文件。

由于软链接只是一串路径字符串记录,所以它完美支持跨越不同的文件系统进行链接,甚至可以对目前还不存在的文件(死链接)、或者目录创建软链接。


假设现在有一个大项目,二进制程序保存在bin目录中,所有配置文件在conf中,日志信息在log中,插件在plug中,使用的工具在tool中。此时,在bin目录中创建一个文件并运行它,

我们通过绝对路径才能运行它,假设bin目录中还有很多路径,那么此时同样的操作就会十分麻烦,所以软连接就起到了很方便的作用,举例:

在Linux中,软连接不止可以找可执行程序,动静态库也可以找。比如:

删除软连接通过unlink即可:

3.硬链接(Hard Link):多个名字,同一个灵魂

3.1硬链接概念

所谓硬链接,本质上就是在目录的数据块中,增加了一条新的映射记录,让一个新的文件名指向一个已经存在的 Inode 号。

我们可以使用ln命令创建硬链接:

3.2底层剖析

建立硬链接后,它与源文件inode号一样,说明硬链接不是一个独立的文件

硬链接是一组新的文件名和目标文件inode的映射关系。

而硬链接前面的2,指的是硬链接数,表示有几个文件名指向我,2表示有两个文件名与同一个inode连接。

那么此刻,我们删除readdir.c文件,会发生什么?

由上图可见,即使删除,源文件中的内容依旧存在。那也就说明,一个文件真正的被删除,是指没有文件名指向对应文件的inode了,即inode的引用计数为0。

3.3硬链接的作用

举例:在上一级目录中重新建立一个硬链接

再进入目录,删除源文件。此时,在上一级目录中,源文件依旧存在:

也就是说,硬链接可以用来做数据备份!

此时,我们再创建一个新目录,我们发现他的硬链接数是2,原因是其隐藏文件中有存储当前目录,其inode号与新创建目录相同

那么,根目录下有多少个子目录呢?

除去根目录自己的连接数,子目录个数为:19 - 2 = 17个。

3.4硬链接的局限性

在Linux中,规定不能对目录进行硬链接。

证明见下图:

由于 Inode 编号是基于当前文件系统(分区)分配的,不同分区的 Inode 体系互相独立。因此,硬链接绝对不能跨越不同的分区(文件系统)创建

但是,两个目录之间的 . 和 .. 不就是两个目录之间的硬链接吗?如下图:

实际上,Linux系统就是只允许自己建立硬链接,不允许用户自己建立。

为什么呢?

如果系统允许自己建立硬链接,我们对dir创建link-hard硬链接

那么在系统深度遍历或广度遍历目录结构时,会将link-hard默认为目录,此时再返回更目录,之后每次遍历相同的结果并返回,就会形成一个环形路径,那么系统层面上就不能进行其他操作了,如find等。

4.核心对比表

面试时,如果能结合底层原理画出或口述出以下对比,必定能让面试官眼前一亮:

维度

硬链接 (Hard Link)

软链接 (Soft / Symbolic Link)

底层本质

目录中新增的一条文件名与源 Inode 的映射记录

拥有独立 Inode 和数据块的全新文件

Inode 编号

与源文件完全相同

拥有全新独立的 Inode 编号

文件内容存储

共享同一份目标数据块

数据块中保存的是目标文件的路径字符串

跨分区/文件系统

绝对禁止(Inode 编号在不同分区无意义)

完美支持(只认路径字符串)

能否链接目录

系统默认禁止(防止目录死循环)

支持(日常最常见的用法之一)

源文件删除影响

原文件名被删除,硬链接继续存活,数据不丢失

目标文件删除后,软链接失效,变为“死链接”(红底闪烁)

对硬链接数的影响

使目标 Inode 引用计数 + 1

不影响目标 Inode 的引用计数

总结:硬链接是“同体多名”,紧密绑定底层存储;软链接是“独立替身”,依托路径灵活跳转。掌握了底层的 Inode 机制,Linux 文件系统的各类操作对你而言将不再有秘密。

本章完。

http://www.jsqmd.com/news/668789/

相关文章:

  • RKMEDIA VO图层配置与双屏显示实战
  • C语言分支循环作业错题与心得
  • 如何学好C语言:从入门到精通,掌握编程基石
  • 我重新梳理了一遍 RAG,终于明白它不只是接个向量库
  • 为什么92%的AGI项目在记忆对齐阶段失败?——2026奇点大会实测数据揭示5大认知断层与3步修复协议(含开源Memory-LLM v0.9预览版)
  • zmq源码分析之io_thread_t
  • 贵阳伍子柒网络|贵阳本地企业专属GEO服务商,技术适配、效果可查、服务贴心
  • Wan2.2-I2V-A14B与Dify集成:打造无需编码的AI视频工作流
  • 5G流量卡科普与避坑指南:如何选择正规号卡
  • 【AI大语言模型基础(0)】
  • 常用API:
  • 别再学框架了!2026奇点大会证实:未来3年高薪岗位只筛选这7种AGI协同行为模式
  • 2025-2026年全球访客机品牌推荐:五大口碑产品评测对比顶尖工厂访客身份核验繁琐 - 品牌推荐
  • mysql如何优化索引以减少扫描_mysql高效索引设计原则
  • 终极免费视频下载工具:ytDownloader完整使用指南
  • 2025-2026年香港求职机构推荐:五大口碑服务评测对比顶尖求职者面试技巧不足 - 品牌推荐
  • 从寄存器手册到代码:手把手教你逆向分析ES8311官方驱动配置逻辑
  • 刚刚,4月编程排行榜出炉,AI都能写代码了,C语言凭啥还排第二?
  • H3C交换机上给不同VLAN配DHCP,一次搞定网关、地址池和DNS(附完整命令)
  • 【AGI蛋白质折叠预测革命】:2024年AlphaFold 3与RoseTTAFold AI实测对比,精准度突破99.2%的5大临床应用落地路径
  • 2025-2026年访客机品牌推荐:五大口碑产品评测对比顶尖工厂安全管理访客滞留案例 - 品牌推荐
  • FPGA设计里选乘法器IP还是写RTL?从面积、时序和易用性帮你决策
  • 2025-2026年香港求职机构推荐:五大口碑服务评测对比顶尖职场新人面试紧张缺乏经验 - 品牌推荐
  • 纯小白地面站烧录Pixhawk2.4.8并校准
  • 赛元SC95F8617触摸库实战:从电机干扰到人体检测,我的按摩椅项目避坑实录
  • BZOJ 水题50乱做
  • Sunshine游戏串流编码器配置全面解析与深度优化指南
  • Java第二周
  • 金程考研联系方式查询:如何通过官方渠道获取考研辅导服务与评估机构适配性 - 品牌推荐
  • 告别VMware!用Arsenal Image Mounter在Windows里直接‘打开’取证镜像,像本地硬盘一样操作