在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Linux日志文件系统是怎样工作的

121次阅读
没有评论

共计 1922 个字符,预计需要花费 5 分钟才能阅读完成。

本篇内容介绍了“Linux 日志文件系统是怎样工作的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

文件系统要解决的一个关键问题是怎样防止掉电或系统崩溃造成数据损坏,在此类意外事件中,导致文件系统损坏的根本原因在于写文件不是原子操作,因为写文件涉及的不仅仅是用户数据,还涉及元数据 (metadata) 包括  Superblock、inode bitmap、inode、data block  bitmap 等,所以写操作无法一步完成,如果其中任何一个步骤被打断,就会造成数据的不一致或损坏。

举一个简化的例子,我们对一个文件进行写操作,要涉及以下步骤:

从 data block bitmap 中分配一个数据块;

在 inode 中添加指向数据块的指针;

把用户数据写入数据块。

如果步骤 2 完成了,3 未完成,结果是数据损坏,因为该文件认为数据块是自己的,但里面的数据其实是垃圾;

如果步骤 2 完成了,1 未完成,结果是元数据不一致,因为该文件已经把数据块据为己有,然而文件系统却还认为该数据块未分配、随后又可能会把该数据块分配给别的文件、造成数据覆盖;

如果步骤 1 完成了、2 未完成,结果就是文件系统分配了一个数据块,但是没有任何文件用到这个数据块,造成空间浪费;

如果步骤 3 完成了,2 未完成,结果就是用户数据写入了硬盘数据块中,但白写了,因为文件不知道这个数据块是自己的。

日志文件系统 (Journal File System) 就是为解决上述问题而诞生的。

它的原理是在进行写操作之前,把即将进行的各个步骤 (称为 transaction) 事先记录下来,保存在文件系统上单独开辟的一块空间上,这就是所谓的日志(journal),也被称为 write-ahead  logging,日志保存成功之后才进行真正的写操作、把文件系统的元数据和用户数据写进硬盘(称为 checkpoint),这样万一写操作的过程中掉电,下次挂载文件系统之前把保存好的日志重新执行一遍就行了(术语叫做 replay),避免了前述的数据损坏场景。

有人问如果保存日志的过程中掉电怎么办? 最初始的想法是把一条日志的数据一次性写入硬盘,相当于一个原子操作,然而这并不可行,因为硬盘通常以 512 字节为单位进行操作,日志数据一超过 512 字节就不可能一次性写入了。所以实际上是这么做的:给每一条日志设置一个结束符,只有在日志写入成功之后才写结束符,如果一条日志没有对应的结束符就会被视为无效日志,直接丢弃,这样就保证了日志里的数据是完整的。

一条日志在它对应的写操作完成之后就没用了,占用的硬盘空间就可以释放。保存日志的硬盘空间大小是有限的,被循环使用,所以日志也被称为 circular  log。

至此可以总结一下日志文件系统的工作步骤了:

Journal write : 把 transaction 写入日志中;

Journal commit : 在一条日志保存好之后,写入结束符;

Checkpoint : 进行真正的写操作,把元数据 (metadata) 和用户数据 (user data) 写入文件系统;

Free : 回收日志占用的硬盘空间。

以上方式把用户数据 (user data) 也记录在日志中,称为 Data Journaling,Linux  EXT3 文件系统就支持这种方式,这种方式存在效率问题:

就是每一个写操作涉及的元数据 (metadata) 和用户数据 (user  data) 实际上都要在硬盘上写两次,一次写在日志里,一次写在文件系统上。元数据倒也罢了,用户数据通常比较大,拷贝几个 GB 的电影文件也要乘以 2 实在是降低了效率。

一个更高效的方式是 Metadata Journaling,不把用户数据 (user data) 记录在日志中,它防止数据损坏的方法是先写入用户数据(user  data)、再写日志,即在上述”Journal  write”之前先写用户数据,这样就保证了只要日志是有效的,那么它对应的用户数据也是有效的,一旦发生掉电故障,最坏的结果也就是最后一条日志没记完,那么对应的用户数据也会丢,效果与 Data  Journaling 丢弃日志一样,重要的是文件系统的一致性和完整性是有保证的。

Metadata Journaling 又叫 Ordered Journaling,大多数文件系统都采用这种方式。像 Linux  EXT3 文件系统也是可以选择 Data Journaling 还是 Ordered Journaling 的。

“Linux 日志文件系统是怎样工作的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1922字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 日韩人妻精品无码一区二区三区 | 精品日本亚洲一区二区三区 | 永久毛片| 玖玖在线精品 | 美女被爆羞羞网站在免费观看 | 91日韩欧美 | 欧美日韩国产在线 | 亚洲人成色7777在线观看 | 亚洲国产综合精品 | 一级做a爱| 久久久久久久国产精品视频 | 四虎最新免费网址 | 亚洲图片小说综合 | 不卡二区| 久久精品国产2020 | 久久综合成人 | 久久久久无码中 | 亚洲熟妇av日韩熟妇在线 | 成人免费网站视频 | 久草视频官网 | 美女被按在的视频网站观看 | 日本级毛片免费观看 | 亚洲人成黄网在线观看 | 中文字幕 制服 亚洲 另类 | 亚洲色欲久久久久综合网 | 91精品成人免费国产片 | 丝袜人妻一区二区三区 | 国产日韩欧美亚洲综合首页 | 亚洲色吧 | 香蕉久久国产av一区二区 | 99精品国产一区二区三区不卡 | 亚洲精品国产字幕久久不卡 | 99热成人精品热久久66 | 国产精品视频在线播放 | 青草影院内射中出高潮 | 欧美国产日本 | 国产91成人精品亚洲精品 | 亚洲成亚洲乱码一二三四区软件 | 亚洲综合偷自成人网第页色 | 九九99国产精品视频 | 国内揄拍国内精品少妇国语 |