软链接和硬链接

1 在彻底搞懂硬链接和软链接之前,建议先搞懂两个知识点

1.1 首先弄清楚什么是索引结点(inode)?

一般来说,面试不会问 inode 。但是 inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬盘储存的基础。
理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

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

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息

1.2 再弄清楚操作系统从磁盘中加载数据到内存中的过程?

这一过程也是操作系统从文件的逻辑地址(逻辑上连续存放,表现为索引节点的磁盘地址表中的数据是连续存放的)转换到物理地址(物理上离散存放)的过程。
首先os会使用应用程序给定的路径(包含所要查找的文件名),一次一次的将对应级别的目录调到内存中来,直到找到文件对应的目录项(FCB),这时有两种情况:

  • 如果应用了索引结点,则一个FCB中只存放了文件名和一个指向文件索引结点的指针, 然后再根据这个指针,将这个64B的
    索引结点调入内存,然后定位至索引节点中的磁盘地址表,依据顺序取得文件数据存放的磁盘地址并且将相应的存放文件的磁盘数据调入内存中

2 为什么要为文件创建链接(包括硬链接和软链接)?

创建链接是为了便于文件在不同目录下以不需要拷贝的方式(也可以说是文件镜像)的共享使用。

3 硬链接

创建硬链接只需要创建一个目录项,目录项中的索引结点指针指向源文件对应的索引结点,所以创建硬链接的时候不会占用磁盘太多的空间,也就是说为一个文件创建多个硬链接,他们的FCB共享一个索引结点(因为索引节点是共享的,FCB中的指针不能指向处于另一个磁盘或文件系统中的索引结点,这就决定了操作系统不能跨盘创建硬链接)。

硬链接因为是两个以上的目录项指向同一个索引结点,所以当只删除其中一个硬链接时(或即使删除后至少有一个硬链接指向该索引结点),这个索引结点仍然有效。

4 软链接(符号链接)

linux中创建软链接类似于windows操作系统中创建快捷方式,软链接的情况下,os会创建一个目录项,此外还会创建一个与文件相关的索引结点,索引结点占用的磁盘空间比较大(linux系统默认为64B,存储了文件的元信息,包括文件名,文件的创建者,文件的创建时间,开放的权限,文件大小以及最重要的文件磁盘地址表,磁盘地址表中包含了多个存放文件数据的块地址,这些地址是离散的),也就是说为一个文件创建多个软链接,源文件会对应多个索引结点。

5 软链接和硬链接的区别

  1. 软链接允许跨文件系统进行创建(因为软链接同时存储了文件索引结点,文件索引结点包含完整的磁盘位置),而硬链接不能
  2. os允许为目录建立软链接而不能建立硬链接
  3. os允许为不存在的文件名建立软链接,但不能建立硬链接
  4. 软链接占用的磁盘空间比硬链接大
  5. 软链接以路径的形式存在,硬链接以文件副本的形式存在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值