iNode 软链接和硬链接总结  

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

硬盘的瓶颈就是在于IO,如果一次只读一个扇区,io 就特别高。所以读取的时候都是一次性连续读取8个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"(block)的大小,最常见的是4KB,其次是8K。以4K为例:

1block=4K=8扇区(可以这样理解)

[[email protected] ~]# ls -li fighter

   130828 -rw-r--r--. 1 root root 0 Apr 18 16:37 fighter

文件系统读取都是基于INODE号,系统不会辨认文件名fighterer,而是会读取138028的inode号 ,也叫索引节点。

索引节点主要包括下面这些信息:

* 文件的字节数

  * 文件iNode号

  * 文件的读、写、执行权限

*文件的属组和属主

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

我们可以用stat 查看文件inode信息

[[email protected] ~]# stat fighter

  File: `fighter‘

  Size: 0         Blocks: 0          IO Block: 4096   regular empty file

Device: 802h/2050dInode: 130828      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2015-04-18 16:37:29.382997819 +0800

Modify: 2015-04-18 16:37:29.382997819 +0800

Change: 2015-04-18 16:37:29.382997819 +0800

很多时候我们在电脑创建文件,通过文件名打开文件。实际上,系统内部把这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。因为Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件

软硬链接的区别;

硬链接是基于索引节点创建的,相当于COPY一份文件,而软链是基于文件创建的,相当于WINDOWS下的快捷方式。

我们可以用实验来看看两种方式的区

[[email protected] ~]# touch test1

 [[email protected] ~]# echo aaaaa >> test1

[[email protected] ~]# ls -li

 131070 -rw-r--r--. 1 root root     0 Apr 18 17:59 test1

[[email protected] ~]# cat test1

aaaaa

创建一个硬链接

[[email protected] ~]# ln test1 test1_hard 

 [[email protected] ~]# ls -li

 total 100

131070 -rw-r--r--. 2 root root     0 Apr 18 17:59 test1

131070 -rw-r--r--. 2 root root     0 Apr 18 17:59 test1_hard

注意: inode 号没变,但是硬链接次数变为了2

[[email protected] ~]# cat test1

aaaaa

如果我们删除源文件

[[email protected] ~]# rm test1

rm: remove regular empty file `test1‘? y

[[email protected] ~]# ls -li

total 100

131070 -rw-r--r--. 1 root root     0 Apr 18 17:59 test1_hard

文件存在,只是链接数变为了1,每删一次减少1

[[email protected] ~]# cat test1

aaaaa

文件还是存在的

看一下软链接,还是这样的步骤:

touch test2

 [[email protected] ~]# echo 123456 >> test2

[[email protected] ~]# ls -li

total 100

 131070 -rw-r--r--. 1 root root     0 Apr 18 17:59 test1_hard

131071 -rw-r--r--. 1 root root     0 Apr 18 18:11 test2

 

[[email protected] ~]# cat test2

123456

 

[[email protected] ~]# ln -s test2 test2_ruan

[[email protected] ~]# ls -li

total 100

 131070 -rw-r--r--. 1 root root     0 Apr 18 17:59 test1_hard

131071 -rw-r--r--. 1 root root     0 Apr 18 18:11 test2

131072 lrwxrwxrwx. 1 root root     5 Apr 18 18:11 test2_ruan -> test2

 [[email protected] ~]# cat test2

 123456

 

[[email protected] ~]# rm  test2

rm: remove regular empty file `test2‘? y

 [[email protected] ~]# ls -li 

total 100

131070 -rw-r--r--. 1 root root     0 Apr 18 17:59 test1_hard

131072 lrwxrwxrwx. 1 root root     5 Apr 18 18:11 test2_ruan -> test2

 

[[email protected] ~]# cat test2

cat: test2: No such file or directory

软链接变成红色,而且内容没有了,这就相当于WINDOWS下删掉了程序,但是快捷方式还存在,但是打不开,因为里面已经没有内容了

还有一点重要的区别是硬链接不能链接文件夹只能链接文件,而软链接都可以。

编译过程中经常要软链接文件夹,这样做是为了方便升级。

实际中会遇到的问题

系统提示磁盘空间不足,用df -h命令查看磁盘使用情况,发现还有剩余空间,但是无法创建文件。

原因分析:

可能 分区目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

用df -i查看分区的索引节点(inode),会发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

解决方案:(3个)

  1、如果不是要保留的文件,只需要删除目录中的部分文件,释放出分区的一部分inode。

  2、用软连接将空闲分区中的目录连接到已经满了的分区,使用未满分区的inode来缓解已满分区inode不足的问题:

  # ln -s 已满目录  未满目录名

3.扩展分区,扩容。

本文只作为自己学习和后期复习之用。如有技术基础论述错误或者错别字语病等不当之处,敬请指出,不胜感激,拜谢

iNode 软链接和硬链接总结

时间: 2024-12-25 23:45:46

iNode 软链接和硬链接总结  的相关文章

FILE 结构体的定义,inode ,软链接和硬链接的理解

一.FILE结构体: C将每个文件简单地作为顺序字节流.每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中.当打开文件时,就建立了和文件的关系. 在开始执行程序的时候,将自动打开3个文件和相关的流:标准输入流.标准输出流和标准错误.流提供了文件和程序的通信通道.例如,标准输入流使得程序可以从键盘读取数据,而标准输出流使得程序可以在屏幕上输出数据.打开一个文件将返回指向FILE结构(在stdio.h中定义)的指针,它包含用于处理文件的信息,也就

inode探究及inode与软链接与硬链接关系

一.文件系统相关知识 superblock:记录此文件系统的整体属性,包括inode/block的总量,使用量,剩余量,以及文件系统的格式及相关信息 block:记录文件的内容,若文件太大,占用多个block inode:记录文件的属性,一个文件占用一个inode 文件系统一般分为多个块组(block group),每个块组有superblock,文件系统描述,块对应表,inode对应表,inodetable,dateblock组成 1. (1)block的大小在格式化后就不再改变了,除非重新格

inode 及软链接、硬链接

inode: 用来存储文件的元信息的索引节点.包括文件的创建者.创建日期.文件的大小等.Linux下一切皆文件,每个文件都有其对应的inode. inode内容: 文件的字节数 文i件拥有者的UserID 文件的GroupID 文件读.写.执行权限 文件的时间戳:ctime(inode上一次变动时间) mtime(文件内容上次变动的时间) atime(文件上次打开时间) 链接数,即有多少文件名指向这个inode 文件数据block的位置 inode大小: 每个inode节点的大小,一般是128字

理解inode 以及 软链接和硬链接概念区分

inode简单理解 本文来源自网络文章,并针对文章内容加以批注和修改.希望能帮到你! 一. 磁盘设备 说到inode,首先必须要提及下<操作系统>中磁盘存储器的管理一节.磁盘设备是一种相当复杂的机电设备(比较详细的介绍可以参考blog硬盘内部硬件结构和工作原理详解 ). 磁盘设备可以包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(如图(a)所示).每个磁盘面被组织成若干个同心环,这种环称为磁道track,各磁道之间留有必要的间隙.每条磁道又被逻辑上划分成若干个扇区sectors.在不同扇

Linux下的软链接与硬链接

首先聊聊Linux中使用哪个命令创建链接文件,然后咱们在聊聊软链接和硬链接的区别. 使用ln命令可以创建某个文件的链接文件 用法:ln [-s -v] src dest 创建一个硬连接文件:ln 原文件 硬连接文件 硬链接与源文件的inode号相同,使用stat命令可以查看文件的元数据信息. 创建一个软连接文件:ln -s 原文件 软连接文件 加-s表示创建软连接(符号链接) 注意:创建连接文件时,指定源文件时, "原文件的路径"可以是绝对路径也可以是相对路径,但是要注意,如果&quo

linux软链接与硬链接的区别

Linux 文件系统最重要的特点之一是它的文件链接.链接是对文件的引用,这样可以让文件在文件系统中多处被看到.不过,在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行.编辑和访问.对系统中的其他应用程序而言,链接就是它所对应的原始文件.当您通过链接对文件进行编辑时,您编辑的实际上是原始文件.链接不是副本,linux有两种类型的链接:硬链接和符号链接(软链接). 硬链接(hard link)只能引用同一文件系统中的文件.它引用的是文件在文件系统中的物理索引(也称为

软链接和硬链接

软链接文件和硬链接文件 链接文件分为两种,硬链接(hard link)和软链接(symbolic link). 两种链接的本质区别关键点在于inode. 硬链接: 当系统要读一个文件时,就会先去读inode table,一个文件对应一个inode,然后再去根据inode中的信息到块区域去将数据取出来. 而硬链接是直接使用了和源文件相同的inode,硬链接文件直接链接到文件放置的块区域. 也就是说,进行硬链接的时候实际上该文件内容没有任何变化,只是指定了相同的inode. 硬链接有两个限制: (1

Linux软链接和硬链接文件

下面是Linux系统软件底层的存储结构,我们将从底层上来去解释Linux系统下的软硬连接文件 <一>: 解释(底层) 硬链接,其实从底层数据上来看, 硬链接其实就是增加了一个目录项.底层对应的inode table.数据区中的值是不变的, 也不会重新创建. 软链接, 其实从底层接上看, 软链接其实就是相当于重新创建了一个文件,, 无论是目录项,inode table,以及数据区都是重新重建的,而这个文件功能比较特殊, 它是用来指向另外一个文件的. <二>:命令的使用 硬链接命令:

linux 下的使用 ln 创建 软链接 和 硬链接

linux 下的一个指令 ln 作用: 创建软链接或者硬链接 Linux 系统下每创建一个文件,系统都会为此文件生成一个 index node 简称(inode) ,而每一个文件都包含用户数据(user data) 与 元数据(metadata) 用户数据里记录了文件的真正内容. 元数据里记录的是文件的附加属性,如 文件大小,创建时间,所有者等,其中 上面提到的 index node 就保存在元数据中.在linux 中文件名并不是文件的唯一标识,index onde 才是唯一标示,系统查找文件也