文件存储系列

前言

在文件存储中,有很多名词,会让人疑惑,本人对这块也是一知半解,需要系统梳理。参考书目为《文件系统内幕:大数据时代海量数据存储之道》。逻辑为文件系统->网络文件系统->分布式文件系统

文件系统

概念

文件系统

文件系统是一个控制数据存取的软件系统,它实现了文件的增、删、改、查。而通常我们所说的文件系统是构建在硬盘(SSD卡和SD卡等)中的。因此,文件系统其实就是一个对硬盘(或者说块设备)空间进行管理,实现数据存取的软件系统。

从狭义上来说,文件系统实现了对磁盘数据的存取。而从广义上来说,文件系统未必需要构建在磁盘中,它还可以构建在网络或内存中。无论构建在哪种设备上,最为核心的功能是实现对数据的存取。

除对数据的存取外,文件系统更重要的一个功能是抽象了一个更加容易访问存储空间的接口。这里所说的接口包括用于程序开发的API接口和普通用户的操作接口。

关系:文件系统(目录树) -> 硬盘驱动器 -> 底层硬件设备(硬盘)

文件系统对文件进行了抽象化处理,对文件系统而言,所有文件都是字节流,它并不关注文件的格式与内容。文件的格式是由具体的应用软件来负责的。

目录

目录是一种容器,可以容纳子目录和普通文件。目录本身也是一种文件。只不过目录中存储的数据是特殊的数据,这些数据就是关于文件名称等元数据(管理数据的数据)的信息。存储的数据其实是文件名与一个数字(inode Id)的对应关系

文件

在文件系统中,最基本的概念是文件,文件是存储数据的实体。文件系统为每个文件都分配了一个名称,称为文件名。通常包含两部分,并通过“.”进行了分隔,但并非绝对。

第一部分称为文件主名,它表示该文件的标识,就好像人名一样;第二部分称为扩展名,它的作用是标识文件的类型。

文件的内部

从开发的角度看,文件就是个线性空间,类似数组。与数组不同的是文件的大小是可以变化的,当写入更多的数据时,文件的容量就会变大。

从文件系统层面,其真实位置可能在磁盘的任意位置。一个文件通常在逻辑上被划分为若干等份,每一份被称为一个逻辑块(Block)。连续的block对应的磁盘物理位置并不固定,分散在很多地方。

文件1

文件格式

文件系统不关心文件是什么格式的,而是把所有文件看作字节流。用户层面需要关心文件的格式。操作系统层面建立了文件格式与软件的关联,因此当双击文件的图标时就会自动使用对应的软件打开该文件。系统缺少相关的软件,或者关联关系被破坏,就无法打开该文件。

链接link

链接是Linux文件系统的概念,在Windows和macOS中通常被称为快捷方式。

分为软链接(Soft Link)和硬链接(Hard Link)两种。其中,软链接又被称为符号链接(Symbolic Link),它是文件的另外一种形态,其内容指向另外一个文件路径(相对路径或绝对路径)。硬链接则不同,它是一个已经存在文件的附加名称,也就是同一个文件的第2个或第N个名称。

软链接有”->”符号,指示了该链接所指向的目的文件。硬链接与源文件的inode ID是一样的,指向同一个文件。

链接的作用?实现对源文件的快速访问,且节省存储空间。如在B目录使用A目录的某个文件,通过链接的方式,在源文件发生变化的情况下可以马上感知,不需要重新复制,同时又节省存储空间。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2024 Larry Wang
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信