数据存储张
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux文件系统中的硬链接及常见面试题
如果能对inode的概念有所了解,对理解本文会有所帮助。如果对inode的概念不太清楚也没有关系,我们会捎带介绍一下。在文件系统的实现层面,我们可以认为包含两个组件:一个是包含数据块的池子,池子中的数据块是等大小的,比如4KB,8KB等;另外一个是管理这些数据块的数据库。当普通用户访问文件数据时,正是通过前面所说的数据库来找到文件对应的数据块的。什么是inodeinode是Linux(Unix)操作系统中文件系统的一个概念。inode的全称为index node,也就是索引节点。那么inode是用来原创 2021-07-16 20:48:26 · 334 阅读 · 0 评论 -
Ext2文件系统剖析|数据的磁盘布局
概述Ext2文件系统将磁盘划分为大小相等的逻辑块进行管理,其默认大小是4KB(不做特殊说明,本文后续内容都采用该默认值)。文件系统逻辑块的大小在格式化的时候可以指定的。文件系统将磁盘划分为逻辑块就好像一个大厦划分为若干个房间,或者超市规划为若干货架一样。同时为了便于管理和避免访问冲突,其将若干个逻辑块组成一个大的逻辑块,称为块组(Block Group)。块组是Ext2文件系统的管理单元,块组...原创 2019-04-19 10:04:48 · 767 阅读 · 0 评论 -
Ext2文件系统的目录原理及文件管理分析
**在Linux文件系统中一切皆文件,同样目录也是文件的一种类型。**熟悉Linux服务器的同学经常会看到如下内容,这个是某个目录的列表内容。每一行的前面形如drwxr-xr-x的内容为文件的属性,而第一个字符d则表示这个文件是一个特殊的文件,也就是目录(directory)。第一个字符是用于标示文件类型的,对于块设备则是b,字符设备是c等等,每种特殊的文件这个字符都是不同的。对于有图像界面(...原创 2020-01-11 19:52:03 · 696 阅读 · 0 评论 -
Ext2文件系统创建文件流程及代码分析
前文我们知道在Linux操作系统中文件是由inode标识的,每个文件在磁盘上都有一个inode节点。对于Ext2文件系统来说,通常这些inode节点会相对集中的放在一个区域,这个区域叫做inode表。图1 inode位图与inode表同时,在前文中我们了解了Ext2的目录是如何组织数据,并且了解了目录与文件及文件数据的组织关系。本文我们将介绍Ext2文件系统创建一个文件的流程及关键代码。创建普通文件创建文件的操作通常是由用户态发起,通过虚拟文件系统中的vfs_create函数调用具体文件原创 2021-05-16 17:27:37 · 485 阅读 · 0 评论 -
Ext2文件系统彻底分析 | 磁盘空间分配
历史文章回顾阅读本文最好已经阅读过本号之前的相关文章,如果没有阅读,建议先阅读历史相关文章,具体包括:Ext2文件系统剖析|数据的磁盘布局 Ext4文件系统深度剖析|文件数据的组织 Ext2文件系统深度剖析|读数据流程分析 Ext2文件系统深度剖析|写数据流程在实际写数据到磁盘之前需要分配磁盘上的空间。这里的写数据包括写文件数据、在目录中创建文件和添加扩展属性等等。但凡需要存储新数...原创 2019-04-19 10:07:27 · 861 阅读 · 0 评论 -
Ext2文件系统读数据流程及代码分析
读数据流程关于如何从用户态到Ext2文件系统公共部分(VFS)的流程本文不再详细介绍,这一部分与写流程基本一致,具体可以参考文末的相关文章介绍。如图是从用户态到Ext2文件系统的函数调用图,从图上可以看到对于Ext2文件系统在读数据流程中调用了大量VFS的函数,这主要原因是Ext2是Linux的原生文件系统,其实耦合还是比较大的。我们仔细观察一下,实际起作用的函数是Ext2文件系统的ext2_file_read_iter函数。图1 读数据整体流程像写数据一样,读数据也分为Direct读和缓存读两原创 2021-05-29 20:35:58 · 420 阅读 · 0 评论 -
Ext2文件系统写数据流程及代码分析
完成了创建文件流程的介绍,下面就是向文件写数据了。今天我们主要介绍一些Ext2文件系统写数据的主要流程及核心代码。为了便于理解Ext2文件系统写数据的流程,本文先从整个Linux文件系统的角度分析一下写数据的流程,因此本文包含了部分VFS内容介绍。本文主要包含2部分内容,一部分是从总体上介绍一个写流程是如何从用户态接口到Ext2文件系统的,另一部分是Ext2文件的数据在磁盘上组织及函数流程。写文件的操作通常由用户态的程序发起,比如在开发的过程中调用系统API(write)。如图是从用户态发起一直到调原创 2021-05-29 20:38:41 · 360 阅读 · 0 评论 -
Ext2文件系统深度剖析|扩展属性分析
文件的扩展属性扩展属性(xattrs)提供了一个机制用来将键值对(Key/Value)永久地关联到文件,让现有的文件系统得以支持在原始设计中未提供的功能。扩展属性是文件系统不可知论者,应用程序可以通过一个标准的接口来操纵他们,此接口不因文件系统而异。每个扩展属性可以通过唯一的键来区分,键的内容必须是有效的UTF-8,格式为namespace.attribute,每个键采用完全限定的形式,也就是...原创 2019-04-19 10:14:16 · 856 阅读 · 0 评论 -
Ext2文件系统的核心元数据超级块
在Linux操作系统中,每个文件系统都必须有一个超级块。所谓超级块就是不普通的块,特别的块,其英文为SuperBlock。Ext2文件系统自然也不例外,在该文件系统开头的地方也有一个超级块,具体如图所示。Ext2文件系统的超级块位于磁盘开始偏移1KB的位置,其尾部与4KB对齐。Ext2超级块概述Ext2文件系统的超级块是对文件系统整体属性的描述,包括文件系统inode总量、磁盘块总量、inode使用情况、文件系统特性和挂载时间等等。超级块也是文件系统的入口。我们知道磁盘在使用之前必须原创 2021-05-29 20:40:05 · 799 阅读 · 1 评论 -
Ext2文件系统挂载与卸载流程分析
任何文件系统在使用之前都需要挂载(mount),所谓挂载就是将一个磁盘的文件系统连接到操作系统目录树的过程。通过下面命令可以实现文件系统的挂载:mount.ext2 /dev/sdc /mnt/ext2_test完成文件系统的挂载后,磁盘上文件系统的所有数据就称为原有目录树的一个子树。普通用户就可以访问该磁盘上的数据了。Ext2文件系统的挂载自然,Ext2文件系统在使用之前也是需要挂载的。我们知道挂载操作是一个命令行的工具,也就是mount命令。该命令需要两个参数,一个是需要挂载的...原创 2021-05-29 20:41:00 · 921 阅读 · 1 评论