您的位置:首页 > 运维架构 > Linux

认识Linux系统中的inode,硬链接和软链接

2014-07-21 22:19 246 查看
1. Inode

在Linux系统中,每个文件都有一个inode(索引节点),inode存储了文件的元信息,主要有:

*文件的字节数

*文件的用户ID

*文件的组ID

*文件的read,write,execute权限

*文件的时间戳:最近的产生时间,最近一次存取时间,最近一次修改时间

*链接数

*inode所使用的block数

*文件数据block的位置

等等

这里补充一点,文件是存储在硬盘上的。硬盘的最小存储单位是扇区(Sector),每个扇区存储512字节。出于效率的考虑,操作系统不是按一个扇区一个扇区的读取文件,而是一次连续读取多个扇区,通常被称作块(block)。块是文件存取的最小单位,一般为4K,即连续的8个扇区组成一个块。因为inode要存储文件的元信息,它也会消耗硬盘空间,一般是128或256字节。inode节点的总数,在硬盘格式化的时候就给定了,一般是每1KB或2KB设置一个inode。有时候会遇到剩余硬盘空间足够,但系统仍然提示空间不足的情况,其原因就是inode用完了。

Linux系统中每个文件都有文件名,但是操作系统并不是按文件名来识别文件,而是按inode号来识别不同的文件。当用户打开一个文件时,主要有3步:1. 系统找到文件名对应的inode号;2. 通过inode号获取inode信息;3. 根据inode信息找到文件所在的block并读取数据。另外,因为系统是按inode来识别文件,所以直接删除inode就能到达删除文件的作用。

在Linux中有“一切皆文件”的说法,目录也被看作一种文件。当创建目录时,一般会生成两个目录项:“.”和“..”。可以看成是两个硬链接,前者的inode号就是当前目录的inode 号;后者的inode号就是当前目录的父目录的inode号。

<附>

查看inode信息的方法:

---

stat 文件名

---

查看inode号的方法:

---

ls -i 文件名

---

查看硬盘分区的inode总数和已使用inode的数量:

---

df -i

---

2. 硬链接和软链接

1)硬链接(hard link)

硬链接打破了文件名和inode号“一一对应”的关系,实现让多个文件名指向同一个inode号。删除其中一个文件名,不影响另一个文件名的访问。硬链接生成的文件大小与原文件一样大。创建硬链接的方法如下:

---

ln 源文件 目标文件

---

每当创建一个硬链接,inode信息里记录的链接数就会加1;反之,删除一个文件名,链接数就会减1。当链接数为0时,说明没有文件指向该inode,系统将回收该inode号,以及所对应的block区域。

2)软链接(soft link)

软链接又叫符号链接(symbolic link)。软链接生成的文件是对源文件的引用,但是与原文件的inode号不同。访问软链接生成的文件时,其实是读取的源文件。当源文件被删除时,系统会提示找不到文件的错误信息。可以用如下方法创建软链接:

---

ln -s 源文件 目标文件

---

3)比较

*硬链接指向源文件索引节点,不重新分配inode;软链接生成时分配新的inode

*硬链接文件大小与源文件大小相同;软链接文件大小与源文件不同,一般较小

*硬链接不能跨越文件系统;软链接可以

*一般情况下,不能为目录创建硬链接;但可以为目录创建软链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: