加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

系统硬链接和软连接、企业实际场景

(2016-11-21 16:26:21)

链接的概念:在linux系统中,链接可以分为两种:一种为硬链接(hard  link),另一种软链接(soft link),我们在前面知道ln这个命令就是创建链接文件的。在默认不带参数的情况下,执行ln命令创建的链接是硬链接。

             如果使用ln –s创建的是软连接

             硬链接   ln  源文件  目标文件

            软链接   ln  -s   源文件   目标文件(目标文件不能事先存在)

       硬链接是指索引节点(inode)来进行链接,在linux中(ext2、ext3、ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号就被称为索引节点inode,即在系统中文件的编号。

       Linux文件系统中,多个文件名同时指向同一个索引节点(inode)是正常且允许的。这种情况的文件就称为硬链接。提示:硬链接文件就相当于文件的另外一个入口。硬链接的作用之一是允许一个文件拥有多个有效路径(多个入口),这样用户就可以建立硬链接的重要文件,以防止误删源数据(很多硬件存储,如netapp存储中的快照功能就应用了这个原理),增加一个快照就多了一个硬链接。为什么一个文件建立了硬链接,就会防止误删数据呢?

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

http://s13/mw690/006cnDEHzy76AIchWGgdc&690


硬链接知识小结:

1、    具有相同inode节点号的多个文件是互为硬链接文件。

2、    删除硬链接文件或者删除源文件之一,文件实体并未被删除

3、    只有删除了源文件及所有对应得链接文件,文件实体才会被删除

4、    当所有的硬链接文件及源文件被删除之后,在存放新数据会占用这个文件的空间,或者磁盘检查的时候,删除的数据将被系同回收。

5、    硬链接文件就是文件的另一个入口(相当于超市的前门后门一样)

6、    可以通过给文件设置硬链接问价,来防止重要文件被删除

7、    通过执行命令“ln  源文件   硬链接文件”即可创建硬链接

8、    硬链接文件可以用rm命令删除

9、    对于静态文件(没有进程调用的文件来讲,当对应硬链接数为0)文件就被删除

例子:

1、    我们先创建一个目录,在这个目录下创建一个文件,并追加内容

#mkdir  /test/yankefei

#cd /test/yankefei

#touch  yanfile

#echo “I  am  yankefei linux” >>yanfile

#cat yanfile

   创建硬链接文件

                   ln  yanfile   yanfile_hard_link

      那么如果有三个链接文件,自己只知道两个,怎么找另一个呢?

因为他们有共同的inode所以第一步先查知道的文件inode是多少

  ls  -lhi   查到inode  是131424

然后从根查找 find /  -type f|xargs  ls  -lhi|grep 131424 

一个新硬盘插到电脑里如何挂载?

   #fdisk  -l 查看新盘

    格式化  #mkfs -t ext4 /dev/sdb

    挂载#mount  -t  ext4  -o defaults /dev/sdb  /app/log

    #df –h

    #df  -i

Web服务器磁盘满故障深入解析http://oldboy.blog.51cto.com/2561410/612351

 du  -sh /*  查看目录的大小

 

当磁盘block满了,将日志删了后,容量还没有下降,东西删完了空间还在涨,平滑重启服务/etc/init.d/httpd reload

查看删除了的东西 lsof  |grep  deleted

 

软链接(soft link)

软链接(soft link)也称为符号链接,就和windows的快捷方式差不多

 

            源文件          软链接文件

ln –s yankefei   yankefei_soft_link    软连接和源问价不是一个文件,当源文件没有的时候,软链接就失效了,闪红。

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

软链接知识小结

1、    软链接类似windows的快捷方式(可以通过readlink查看指向)。

2、    软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体

3、    删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径内容了

4、    失效的时候一般是白字红底闪烁提示。

5、    执行命令ln –s  源文件   软链接文件  ,即可完成创建软链接(目标不能存在)

6、    软链接和源文件是不同类型的文件,也是不同的文件。Inode

也不同

7、    删除软链接文件可以用rm命令

目录软连接和文件软链接基本差不多,软链接在工作中特别常用

http://s1/mw690/006cnDEHzy76AJfaXZKe0&690

小结:

通过上面的测试可以看出:当删除原始文件yankefei后,其硬链接文件yankefei_hard_link不受影响,对应的数据依然还存在,但是其对应的软链接文件yankefei_soft_link失效了,找不到源文件了,此时可以删除软链接文件重新创建,或者创建一个yankefei_hard_link的硬链接文件yankefei

链接文件的总结:

   全局结论:删除软连接文件对源文件及硬链接文件无任何影响。

             删除硬链接文件对源文件及软链接无任何影响

             删除源文件,对硬链接文件没有影响,但是会导致软连接失效,白字红底闪烁。

             很多硬件设备中的快照功能,就是利用硬链接的原理

       源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或者一个文件的多个入口

 

       源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件位置指向。

有关目录软连接小结

       对于目录不能创建硬链接,但可以创建软链接

       对于目录的软连接是生产场景常用的技巧(例如appche、nginx)

       目录的硬链接不能跨越文件系统

        每个目录里面都有一个硬链接.号,和对应上级目录的硬链接..

        在父目录创建一个子目录,父目录的连接数增加1(子目录里都有..来指向父目录)

面试题:请描述软链接和硬链接的区别? 

      思路:介绍软硬链接的概念

            对于文件的软硬链接区别

             对于目录的软硬链接区别

软链接生产使用案例

    在后面我们变异apache软件时,编译路径带着版本号

/application/apache2.2.21(为了区分版本用,因此路径比较长)而访问目录

时又希望简便,此时就可以建立一个简单的软连接路径文件

ln –s /application/apache2.2.21  /application/apache,来达到方便访问

目的

 

企业生产目录软链接作用

1、    编译软件时指定版本号(/application/apache2.2.23)访问时希望去

掉版本号(/application/appache),当软件升级高版本后,只需删除链接文件重建到高版版本路径的软链接即可。

2、    企业代码发布时(PHP程序),需要把所有代码传到一个新的临时目录或者新的站点目录。发布时要么一个mv,也可以重建软连接指向到这个新的临时目录或者新的站点目录。

3、    不方便目录移动,就使用ln  -s

http://s1/mw690/006cnDEHzy76AJ2wYmse0&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有