• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

Linux运维必学知识软连接与硬链接

Linux admin 3年前 (2016-07-11) 1344次浏览 0个评论 扫描二维码

23478

Linux 系统有两种链接:

硬链接:ln 源文件 目标文件

软连接:ln –s 源文件 目标文件

硬链接是通过索引节点(Inode)来进行链接的

硬链接

硬链接(hard link)是通过索引节点来进行链接的。Linux(EXT2,EXT3,EXT4)文件系统中,保存在磁盘分区中的文件不管是什么类型的都会给它一个编号,那么这个编号就是索引节点(Inode)。

在 Linux 文件系统中,多个文件名可以指向同一个 Inode 节点是正常允许的,这种情况的文件就被称之为硬链接文件,硬链接的作用之一就是允许一个文件拥有多个有效的访问入口,如果创建了一个硬链接文件,我把源文件给删除了,但是数据还没丢,因为硬链接文件还存在,删除的只是文件名,工作中比较重要的文件可以做硬链接。

文件系统(ext2)的原理是,只要文件的索引节点(Inode)还有一个以上的硬链接,只删除其中一个硬链接(即仅仅删除了该文件的链接指向)并不影响索引节点本身和其他的链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上或者系统通过类似 fsck 做磁盘检查的时候。被删除文件的数据块及目录的链接才会被释放,空间新数据占用并覆盖,此时,数据再也无法找回了。也就是说,在 Linux 系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与之相关的所有硬链接文件均被删除。

硬链接的小结

  1. 具有相同 Inode 节点号的多个文件是互为硬链接的文件;
  2. 删除硬连接文件或者删除源文件任意之一,文件实体并未删除;
  3. 只有删除了源文件以及所有对应的硬链接文件,文件实体才会被删除
  4. 当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,磁盘 fsck 检查的时候,删除的数据也会被系统回收。
  5. 硬链接文件就是文件的另一个入口(相当于超市的前门后门)
  6. 可以通过给文件设置硬链接来防止重要文件被误删。
  7. 通过执行命令”ln 源文件 硬链接文件“,即可完成创建硬链接。
  8. 硬链接文件接文件可以用 rm 删除
  9. 对于静态文件(没有进程调用的文件)来讲,当对应硬连接数为 0,文件就被删除。

软链接

软连接(soft ink)也被称之为符号链接,相当于 Windows 的快捷方式,Linux 里面软连接实际上就是一个特殊的文件,他的文件类型是“l”.

软连接的创建:

执行“ln –s 源文件 软链接文件”,即可创建软连接。

误区:创建软链接源文件是需要存在的,要创建的软连接文件时不可能存在的,要用 ln 命令创建。

软链接小结

  1. 软连接类似 Windows 的快捷方式;
  2. 软连接类似一个文本文件,里面存放的是原文件的路径,指向源文件实体;
  3. 删除源文件,软链接文件依然存在,但是无法访问指向的原文件路径内容了;
  4. 软连接失效的时候一般失败是白字红底闪烁提示;
  5. 指向“ln –s 源文件 链接文件”,即可完成创建软连接;
  6. 软连接和源文件是不同类型的文件,也是不同的文件,Inode 号不同;
  7. 删除软链接文件可以用 rm 命令;

文件链接的小结

1.删除软连接文件对源文件及硬链接文件无影响;
2.删除源文件,对硬链接文件没有影响,但是会导致软连接文件失效,白字红底闪烁;
3.同时删除源文件 file,硬链接文件 file_hard_link,整个文件会被真正的删除;
4.很多硬件设备中的快照功能,就是利用了硬链接的原理;
5.源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口。
6.源文件和软连接文件索引节点号不同,是不同的文件,软连接相当于源文件的快捷方式,含有源文件的位置指向。

目录链接的小结

  1. 对于目录,不可以创建硬链接,但可以创建软链接;
  2. 对于目录的软连接是生产场景运维中常用的技巧;
  3. 目录的硬链接不能跨越文件系统;
  4. 每个目录下面都有一个硬链接“.”和“..”

描述 Linux 下软连接和硬链接的区别(面试题)。

解答:

在 Linux 系统中,链接分两种:一种被成为硬链接(Hard Link),另一种被称为符号链接或软连接(soft Link).

  1. 默认不带参数情况下,ln 命令创建的是硬链接,带-s 参数的 ln 命令创建的是软连接;
  2. 硬链接文件与源文件的 Inode 节点号相同,而软连接文件的 inode 节点号与源文件不同;
  3. Ln 命令不能对目录创建硬链接,但可以创建软连接,对目录的软连接会经常被用到;
  4. 删除链接文件,对源文件及软链接文件无任何影响;
  5. 删除文件的硬链接文件,对源文件及软链接文件无任何影响;
  6. 删除链接文件的源文件,对硬链接文件无影响,会导致其他软连接失效;
  7. 同时删除源文件及其硬链接文件,整个文件才会被真正删除;
  8. 很多硬件设备中的快照功能,使用的就类似硬链接的原理;
  9. 软连接可以跨文件系统,硬链接不可以跨文件系统;

企业面试题答题思路

  1. 介绍软硬连接的概念;
  2. 对于文件的软硬连接区别;
  3. 对于目录的软硬链接区别;

3.文件删除原理

I_count=引用计数(一个程度读取为 1,两个为 2)
I_link=硬连接数
静态文件删除原理(I_link=0):硬连接数为 0,静态文件就被删除
动态文件删除原理(i_count):引用计数为 0 的时候,动态文件就被删除了。

4.案例

(1)安装 httpd web 服务

1
2
3
4
5
yum install httpd -y
/etc/init.d/httpd start
/etc/init.d/iptables stop
cd /etc/httpd/conf
CustomLog /app/logs/access_log common

编辑配置文件,让日志记录到/app/log 下面。

(2)创建一个小的文件系统,用于存放上述日志。

1
2
3
4
5
dd if=/dev/zero of=/dev/sdc bs=8K count=10
ls -l /dev/sdc
mkfs -t ext3 /dev/sdc
tune2fs -c -1 /dev/sdc
mount -o loop /dev/sdc /app/log

(3)重启 httpd 服务,确保日志记录到了上述文件系统挂载的/app/log 下面

1
/etc/init.d/httpd restart

(4)写个循环脚本访问 httpd,使得 httpd 日志充满/app/log 整个空间。

1
for n in `seq 100000`;do curl -s 10.0.0.18 >/dev/null;done

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Linux 运维必学知识软连接与硬链接
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!