1 前言
我们来简单看一下Linux系统的磁盘、目录、文件。
2 Linux 文件系统
在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出 设备、普通文件或是目录都被看作是一个文件。
也就是说在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 Unix 哲学的一个体现,而 Linux 是重写 Unix 而来,所以这个概念也就传承了下来。在 Unix 系统中,把一切资源都看作是 文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就 可以用读写文件的方式实现对硬件的访问。
Linux 支持 5 种文件类型,如下图所示:
3 Linux 的目录结构
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
常见目录说明:
4 什么是 inode
首先inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬 盘储存的基础。
-
理解inode,要从文件储存说起。
-
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于 0.5KB)。
-
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇 区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单 位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
-
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的 创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名 为"索引节点"。
-
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
那么Linux 文件系统通过 inode 节点把文件的逻辑结构和物理结构转换的工作过程:
Linux 通过 inode 节点表将文件的逻辑结构和物理结构进行转换。
-
inode 节点是一个 64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所 有者、文件的存取许可方式以及文件的类型等重要信息。在 inode 节点表中最重要的内容是 磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读 取相应的块。
-
Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当 前目录表中查找该文件名对应的项,由此得到该文件相对应的 inode 节点号,通过该 inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
5 什么是硬链接和软链接?
-
硬链接:由于Linux 下文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针, 指向文件索引节点指针,系统并不为它重新分配inode 。每添加一个一个硬链接,文件的链接 数就加 1 。
-
硬链接不足:1. 不可以在不同文件系统的文件间建立链接;2. 只有超级用户才可以为目录创建硬链接。
-
-
软链接:软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符 号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件 进行链接。
-
软链接不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录 中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
-
-
实际场景下,基本是使用软链接。总结区别如下:
-
硬链接不可以跨分区,软件链可以跨分区。
-
硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
-
删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。
-