当前位置:网站首页>淘宝分布式文件系统存储引擎(一)
淘宝分布式文件系统存储引擎(一)
2022-08-04 05:31:00 【小羊的预备程序员】
目录
1、文件系统的基本概念
文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。
2、存储的基本单位
扇区 - 硬盘的最小存储存储单位(Sector)。一般每个扇区储存512字节(相当于0.5KB)

磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。 而每一个磁道又按512个字节为单位划分为等分,叫做扇区
3、文件存储单位
块 - 文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

一个块通常是八个扇区,上图只画了四个
上图中可以通过stat命令查看创建的demo.txt的文件的详细信息,其中IO块是文件的最小存储单位,为4kb,跟上面所说的一个块是由八个扇区构成吻合。
4、文件结构
Ext*格式化分区 - 操作系统自动将硬盘分成三个区域。
目录项区 - 存放目录下文件的列表信息
数据区 - 存放文件数据
inode区(inode table) - 存放inode所包含的信息
计算机对于整数的处理更加敏感,在寻找一个文件的路径的时候并不是通过字符串,因为字符串要一个个识别,而是通过inode编号来查找(inode编号是唯一的)。

inode信息补充
inode - "索引节点",储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。ls -i 查看inode 号
inode节点大小 - 一般是128字节或256字节。inode节点的总数,格式化时就给定,一般是每1KB或每2KB就设置一个inode。一块1GB的硬盘中,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
5、系统读取文件三部曲

我的理解是,比如我要在linux下编辑demo.txt,指令为: vim /home/xhc/demo.txt,系统查找demo.txt其实是逐级对比,现在跟目录下寻找home的inode编号,然后再在home目录下寻找xhc的inode编号,最后查找到demo.txt的inode编号,然后根据这个最后找到的inode number,去在inode区通过这个编号拿到inode信息(有大小、块、位置等),最后系统调用驱动读取数据。
边栏推荐
- Copy Siege Lions "sticky" to AI couplets
- Tensorflow/Pytorch安装(Anaconda环境下,无版本冲突,亲测有效)
- [Deep Learning Diary] Day 1: Hello world, Hello CNN MNIST
- strlen 转义字符
- Implementation of CAS lock-free queue
- MNIST Handwritten Digit Recognition - Building a Perceptron from Zero for Two-Classification
- 集合--LinkedList
- 线性表之动态数组(ArrayList)的自实现
- [CV-Learning] Linear Classifier (SVM Basics)
- Deep learning, "grain and grass" first--On the way to obtain data sets
猜你喜欢

Shell脚本执行的三种方式

How to get started with MOOSE platform - an example of how to run the official tutorial

target has libraries with conflicting names: libcrypto.a and libssl.a.

【Copy攻城狮日志】飞浆学院强化学习7日打卡营-学习笔记

C语言对文件的操作(完整版)

file permission management ugo

MOOSE平台官方第二个例子分析——关于创建Kernel,求解对流扩散方程

【C语言】数组名是什么

arm-3-中断体系结构

CSDN spree -- college round table spree
随机推荐
jdbc:mysql://localhost:3306/student?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8时报错
Cut the hit pro subtitles export of essays
Tensorflow/Pytorch安装(Anaconda环境下,无版本冲突,亲测有效)
IEEE802.X protocol suite
LeetCode_Dec_2nd_Week
Introduction to Convolutional Neural Networks
(位操作符)按位与、按位或、按位异或
CAS无锁队列的实现
arm learning-1-development board
LeetCode_Nov_5th_Week
Copy攻城狮5分钟在线体验 MindIR 格式模型生成
第二章 STA相关概念
ideal life
Thunderbolt turns off automatic updates
【c语言】整数的二进制表现形式是什么?
线程池原理
Question 1000: Input two integers a and b, calculate the sum of a+b, this question is multiple sets of test data
最全的最详细的指针讲解(C语言)
Golang环境变量设置(二)--GOMODULE&GOPROXY
[Development miscellaneous][Debug]debug into kernel