当前位置:网站首页>淘宝分布式文件系统存储(二)
淘宝分布式文件系统存储(二)
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、关键数据结构


边栏推荐
猜你喜欢
随机推荐
JDBC第一学之进行数据库连接时出现The server time zone.....解决办法
C语言数组的深度分析
Postgresql snapshot
MOOSE平台使用入门攻略——如何运行官方教程的例子
Fabric v1.1 环境搭建
Shell脚本执行的三种方式
LeetCode_Dec_2nd_Week
Deep learning, "grain and grass" first--On the way to obtain data sets
ideal life
指针的运算【C语言】
Completely remove MySQL tutorial
MNIST handwritten digit recognition, sorted by from two to ten
第三章 标准单元库(下)
CAS无锁队列的实现
SFTP的用法
【Copy攻城狮日志】飞浆学院强化学习7日打卡营-学习笔记
MNIST手写数字识别 —— 从零构建感知机实现二分类
在AWS-EC2中安装Minikube集群
Question 1000: Input two integers a and b, calculate the sum of a+b, this question is multiple sets of test data
LeetCode_Dec_1st_Week









