问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux中的硬链接和软连接

发布网友 发布时间:2022-04-22 12:47

我来回答

2个回答

懂视网 时间:2022-04-11 04:30

https://www.toutiao.com/i6713116869781357069/

 

概述

Linux中,一切皆文件,而每个文件都有一个inode,在将inode关联到文件后系统将通过inode号来识别文件,而不是文件名。并且访问文件时将先找到inode,通过inode中记录的block位置找到该文件。


1 、硬链接

虽然每个文件都有一个inode,但是存在一种可能:多个文件的inode相同,也就即inode号、元数据、block位置都相同,这是一种什么样的情况呢?能够想象这些inode相同的文件使用的都是同一条inode记录,所以代表的都是同一个文件,这些文件所在目录的data block中的inode指针目的地都是一样的,只不过各指针对应的文件名互不相同而已。这种inode相同的文件在Linux中被称为"硬链接"。

硬链接文件的inode都相同,每个文件都有一个"硬链接数"的属性,使用ls -l的第二列就是被硬链接数,它表示的就是该文件有几个硬链接。

技术图片

 

例如下图描述的是dir1目录中的文件name1及其硬链接dir2/name2,右边分别是它们的inode和datablock。这里也看出了硬链接文件之间唯一不同的就是其所在目录中的记录不同。注意下图中有一列Link Count就是标记硬链接数的属性。

技术图片

 

每创建一个文件的硬链接,实质上是多一个指向该inode记录的inode指针,并且硬链接数加1。

删除文件的实质是删除该文件所在目录data block中的对应的inode指针,所以也是减少硬链接次数,由于block指针是存储在inode中的,所以不是真的删除数据,如果仍有其他指针指向该inode,那么该文件的block指针仍然是可用的。当硬链接次数为1时再删除文件就是真的删除文件了,此时inode记录中block指针也将被删除。

不能跨分区创建硬链接,因为不同文件系统的inode号可能会相同,如果允许创建硬链接,复制到另一个分区时inode可能会和此分区已使用的inode号冲突。

硬链接的创建方法: ln file_target link_name 。


2 、软链接

软链接就是字符链接,链接文件默认指的就是字符链接文件(注意不是字符设备),使用"l"表示其类型。

硬链接不能跨文件系统创建,否则inode号可能会冲突。于是实现了软链接以便跨文件系统建立链接。既然是跨文件系统,那么软链接必须得有自己的inode号。

软链接在功能上等价与Windows系统中的快捷方式,它指向原文件,原文件损坏或消失,软链接文件就损坏。可以认为软链接inode记录中的指针内容是目标路径的字符串。

创建方式: ln –s source_file softlink_name ,记住是source_file<--link_name的指向关系(反箭头)。

查看软链接的值: readlink softlink_name

在设置软链接的时候,source_file虽然不要求是绝对路径,但建议给绝对路径。


3、inode大小和划分

inode大小为128字节的倍数,最小为128字节。它有默认值大小,它的默认值由/etc/mke2fs.conf文件中指定。不同的文件系统默认值可能不同。

# cat /etc/mke2fs.conf
技术图片

 

同样观察到这个文件中还记录了blocksize的默认值和inode分配比率inode_ratio。inode_ratio=16384表示每16384个字节即16KB就分配一个inode号,由于默认blocksize=4KB,所以每4个block就分配一个inode号。当然分配的这些inode号只是预分配,并不真的代表会全部使用,毕竟每个文件才会分配一个inode号。但是分配的inode自身会占用block,而且其自身大小256字节还不算小,所以inode号的浪费代表着空间的浪费。

既然知道了inode分配比率,就能计算出每个块组分配多少个inode号,也就能计算出inode table占用多少个block。

如果文件系统中大量存储电影等大文件,inode号就浪费很多,inode占用的空间也浪费很多。但是没办法,文件系统又不知道你这个文件系统是用来存什么样的数据,多大的数据,多少数据。


4、ext文件系统预留的inode号

Ext预留了一些inode做特殊特性使用,如下:某些可能并非总是准确,具体的inode号对应什么文件可以使用"find / -inum NUM"查看。

  • Ext4的特殊inode
  • Inode号 用途
  • 0 不存在0号inode
  • 1 虚拟文件系统,如/proc和/sys
  • 2 根目录
  • 3 ACL索引
  • 4 ACL数据
  • 5 Boot loader
  • 6 未删除的目录
  • 7 预留的块组描述符inode
  • 8 日志inode
  • 11 第一个非预留的inode,通常是lost+found目录
  • 所以在ext4文件系统的dumpe2fs信息中,能观察到fisrt inode号可能为11也可能为12。

    并且注意到"/"的inode号为2,这个特性在文件访问时会用上。

    需要注意的是,每个文件系统都会分配自己的inode号,不同文件系统之间是可能会出现使用相同inode号文件的。例如:

    # find / -ignore_readdir_race -inum 2 -ls
    技术图片

     

    从结果中可见,除了根的Inode号为2,还有几个文件的inode号也是 2,它们都属于独立的文件系统,有些是虚拟文件系统,如/proc和/sys。

    [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等

    标签:目标   origin   系统   虚拟文件系统   title   数加   div   get   sof   

    热心网友 时间:2022-04-11 01:38

    跨越不同的文件系统的含义其实是指跨越不同的分区,比如有两个分区,分别挂载在根目录/和用户目录/home,那被连接的文件就可以在根目录下的(比如说)/opt目录,而软连接(符号连接)文件则可以在/home的分区;如果是硬连接就不能在/home,只能(比如说)在/usr/local/bin之类的目录下(具体情况取决于对硬盘分区时的挂载点)。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    2024年北京婚博会怎么参加?门票在哪里买? 北京婚博会简介 电脑装系统要好久重装系统一般要多少时间 电脑装系统要多久win7重装系统一般要多少时间 重装电脑w7系统需多长时间电脑重装系统要多久时间 win7大约安装时间和对硬件的基本要求 广东省汕头市濠江区交通违章当事人去哪里处理 帮我给我侄女取个带‘瑶’字的名字,今年五四青年节出生。谢谢啦 五四青年节出生的女孩取名吾家有女初长成 五四青年节出生的女孩取名 金圣元青花鬼谷子下山图香烟多少钱一条? 红米note5是大猩猩屏吗 快递丢件不处理哪里投诉 退货快递丢失谁负责 信丰快递好吗 信丰物流的质量怎么样? 404 Not Found 信丰物流为什么没有跟踪信息 信丰物流的单号:139369828765 请问信丰物流客服电话是多少? 信丰物流怎么打寄件单 信丰快递单号查询137036047654 信丰物流怎么样 如何在淘宝网上购物 觉得有些人家 家庭收入也不高呀 但是他们特别舍得花钱的 吃啊穿啊都还挺讲究的 名牌什么的 怎么回... 137396910921 信丰快递,帮我查一下到哪了,谢谢 如何在淘宝网上购物(全部过程) 404 Not Found 淘宝网上如何购物? 信丰快递物流单掉失了没有号码怎么查询 信丰无单号怎样查快递 元青花鬼谷子下山图罐的纹饰特征 元青花鬼谷子下山是明代仿的赝品,有价值吗。 元青花『鬼谷子下山』为什么能拍卖到两亿三千万?? Windows下硬链接软链接和快捷方式的区别 元青花『鬼谷子下山』为什么能拍卖到两亿三千万 Linux硬链接和软连接的区别与总结 元青花鬼谷子下山价格 元青花鬼谷下山大罐详情?元青花鬼谷下山价格? 元青花为何不被认可 揭2.3亿“鬼谷子下山”瓷罐拍卖内幕 从文件系统本质看硬链接和软连接的区别 元青花鬼谷子下山图罐的文物评价 元青花鬼谷子下山图罐的外型特征 元青花大罐,鬼谷子下山值多少钱 元青花鬼谷子下山,蒙娜丽莎图,拿烟斗的小男孩,兰亭序,哪个更值钱? 元青花鬼谷子下山大罐鉴赏 金圣元青花鬼谷子下山多少钱一条? 金圣元青花鬼谷子下山图香烟多少钱一条? 元青花鬼谷子下山大罐是怎么发现的 鬼谷子下山有几件? 元青花鬼谷子下山图罐的介绍