当前位置:网站首页>淘宝分布式文件系统存储(二)
淘宝分布式文件系统存储(二)
2022-08-04 05:31:00 【小羊的预备程序员】
目录
1. 大规模的小文件存取,磁头需要频繁的寻道和换道,因此在读取上容易带来 较长的延时。
2. 频繁的新增删除操作导致磁盘碎片,降低磁盘利用率和IO读写效率
淘宝网为什么不用普通文件存储海量小数据?
1. 大规模的小文件存取,磁头需要频繁的寻道和换道,因此在读取上容易带来 较长的延时。

2. 频繁的新增删除操作导致磁盘碎片,降低磁盘利用率和IO读写效率

如果我以后想要存8个块的大小的文件,就会造成磁盘碎片

当频繁的新增删除操作就会导致磁盘碎片很多,磁头想要寻址到文件就会造成很多不必要的开销,降低磁盘利用率和IO读写效率
3、Inode占用大量磁盘空间,从而降低了缓存的效果
比如我有1T数据要存储,采用海量小文件存取,Inode信息就会占据至少128G内存,但是实际上是没有这么多内存给你使用的,就导致很多Inode信息我们要去磁盘去读,就会造成swap(内存的数据不断的移动到磁盘上,再次使用的时候又要将磁盘的数据导到内存,这一部分也是占用开销的)

4、设计思路
1、以block文件的形式存放数据文件(一般64M一个block),以下简称为“块”,每个块都有唯一的一个整数编号,块在使用之前所用到的存储空间都会预先分配和初始化。(避免磁盘碎片)
2、每一个块由一个索引文件、一个主块文件和若干个扩展块组成,“小文件”主要存放在主块中,扩展块主要用来存放溢出的数据。
3、每个索引文件存放对应的块信息和“小文件”索引信息,索引文件会在服务启动是映射(mmap)到内存,以便极大的提高文件检索速度。“小文件”索引信息采用在索引文件中的数据结构哈希链表来实现。
4、每个文件有对应的文件编号,文件编号从1开始编号,依次递增,同时作为哈希查找算法的Key 来定位“小文件”在主块和扩展块中的偏移量。文件编号+块编号按某种算法可得到“小文件”对应的文件名。

5、关键数据结构


边栏推荐
- IDEA中创建web项目实现步骤
- C语言无符号整型运算
- 题目1000:输入两个整数a和b,计算a+b的和,此题是多组测试数据
- counting cycle
- 机器学习——分类问题对于文字标签的处理(特征工程)
- The second official example analysis of the MOOSE platform - about creating a Kernel and solving the convection-diffusion equation
- 结构体内存对齐-C语言
- [daily office][ssh]cheatsheet
- Vmmem 进程(WSL2)消耗内存巨大
- DRA821 环境搭建
猜你喜欢
随机推荐
How to get started with MOOSE platform - an example of how to run the official tutorial
arm交叉编译
Copy Siege Lion's Annual "Battle" | Review 2020
亚马逊云科技Build On-Amazon Neptune基于知识图谱的推荐模型构建心得
Copy Siege Lion 5-minute online experience MindIR format model generation
MNIST Handwritten Digit Recognition - Building a Perceptron from Zero for Two-Classification
MVC自定义配置
MNIST手写数字识别 —— 从感知机到卷积神经网络
Object.requireNonNull 方法说明
结构体传参-C语言
IDEA中创建web项目实现步骤
Golang环境变量设置(二)--GOMODULE&GOPROXY
指针运算相关面试题详解【C语言】
安装Apache服务时出现的几个问题, AH00369,AH00526,AH00072....
[English learning][sentence] good sentence
Pytest common plug-in
LeetCode_22_Apr_2nd_Week
第三章 标准单元库(上)
arm-2-基础阶段
SFTP的用法



![[CV-Learning] Linear Classifier (SVM Basics)](/img/94/b48e34b2c215ca47f8ca25ce97547e.png)




