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

1,930次阅读
没有评论

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

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服务

<span class="line">1</span>
<span class="line">2</span>
<span class="line">3</span>
<span class="line">4</span>
<span class="line">5</span>
<span class="line">yum install httpd -y</span>
<span class="line">/etc/init.d/httpd start</span>
<span class="line">/etc/init.d/iptables stop</span>
<span class="line"><span class="built_in">cd</span> /etc/httpd/conf</span>
<span class="line">CustomLog /app/logs/access_<span class="built_in">log</span> common</span>

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

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

<span class="line">1</span>
<span class="line">2</span>
<span class="line">3</span>
<span class="line">4</span>
<span class="line">5</span>
<span class="line">dd <span class="keyword">if</span>=/dev/zero of=/dev/sdc bs=8K count=10</span>
<span class="line">ls <span class="_">-l</span> /dev/sdc</span>
<span class="line">mkfs -t ext3 /dev/sdc</span>
<span class="line">tune2fs -c -1 /dev/sdc</span>
<span class="line">mount -o loop /dev/sdc /app/<span class="built_in">log</span></span>

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

<span class="line">1</span>
<span class="line">/etc/init.d/httpd restart</span>

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

<span class="line">1</span>
<span class="line"><span class="keyword">for</span> n <span class="keyword">in</span> `seq 100000`;<span class="keyword">do</span> curl <span class="_">-s</span> 10.0.0.18 &gt;/dev/null;<span class="keyword">done</span></span>
admin
版权声明:本站原创文章,由admin2016-07-11发表,共计2513字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)