Day4 资料储存 - file storage基础

file storage 一种让人易於了解的储存方式

在学完Block storage之後,是否发现如果要和硬碟直接打交道,这是唯一的方式?是的,这就是唯一的方式,只是Block storage对人非常不友好,我们怎麽知道我的资料存在哪里?是连续的存呢?还是分散的存?如果每笔资料都连续的存,那肯定对硬碟的利用率不友好

任何架构的难题只需要加一层就可以解决,如果不行,那就两层

我忘了这是谁说的,但是我非常喜欢和同意这句话,为了让人能够轻松的操作储存数据,在Block storage上面加了一层档案系统,也就是File storage

我们平常用的Windows就是File storage,这大家应该很熟悉,由於File storage就是Block storage上面加一层,所以档案的数据都是存在一个个的block中

除了档案的内容之外,文件的metadata比如创建时间、权限、大小等等也需要存在另一个地方,专门存这些文件metadata的就叫做inode

一个档案的inode可以透过stat来查询

#> stat demo.txt                                                                         
  File: ‘demo.txt’
  Size: 12        	Blocks: 8          IO Block: 4096   regular file
Device: fd02h/64770d	Inode: 238749826   Links: 1
Access: (0644/-rw-r--r--)  Uid: (51426876/ ckaijia)   Gid: (  201/     mts)
Access: 2021-08-28 07:27:02.001795167 -0700
Modify: 2021-08-28 07:27:02.001795167 -0700
Change: 2021-08-28 07:27:02.001795167 -0700
 Birth: -

inode也会消耗储存空间,所以格式化硬碟的时候,作业系统会将硬碟分成两个区域,一个存数据,一个存inode,并且指定一个inode的大小,所以就算档案很小,一块硬碟里还是有档案数量的限制

那作业系统是如何读取档案资料呢?

首先,不是透过档案名字,文件名字只是让使用者方便识别,作业系统透过inode ID,每个inode都有一个号码,根据使用者点开的文件找到inode号码,可以透过ls -i demo.txt看到对应的inode号码

第二,根据inode号码找到inode的data

最後,根据indoe的data,找到档案里的数据存在哪个block


<<:  Leetcode 挑战 Day 01 [前言与 1. Two Sum]

>>:  DAY4 将专案资料夹推至 GitHub

【在厨房想30天的演算法】Day 28 资讯安全与演算法 : 讯息监别码

Aloha!又是我少女人妻 Uerica!今天我家狗狗总算没有一大早叫我起床了,可能之前累爆昨夜一路...

老肝哥-菜鸟Java的LeetCode历程,第十三题:Roman to Integer,朝远大目标前进!

嘿嘿!各位好你最好的朋友老肝哥照惯例又来了 今天老肝哥心情其实不错 因为自己又坚持一天了,但老肝哥在...

Day19-Flex属性_超简单制作导览列

今天来介绍运用CSS的flex属性,超简单制作导览列 预想是 电脑版左边有LOGO,右边有nav选单...

【领域展开 29 式】 认识 Google AMP

今天会写这题目来自於在阅读 Soledad document 的时候有一段是在讲 How to se...

GPU程序设计(4) -- 记忆体管理

GPU记忆体类别 GPU记忆体类别有非常多种,各有所长,如果善用可进一步提升执行效能,参考下图: 图...