当前位置:网站首页>淘宝分布式文件系统存储(二)
淘宝分布式文件系统存储(二)
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、关键数据结构
边栏推荐
猜你喜欢
LeetCode_Dec_1st_Week
CSDN大礼包--高校圆桌派大礼包
Brief description of database and common operation guide
C语言结构体(必须掌握版)
CSDN spree -- college round table spree
AWS uses EC2 to reduce the training cost of DeepRacer: DeepRacer-for-cloud practical operation
线性表之动态数组(ArrayList)的自实现
【C语言】数组名是什么
MNIST Handwritten Digit Recognition - Lenet-5's First Commercial Grade Convolutional Neural Network
管道重定向
随机推荐
指针运算相关面试题详解【C语言】
Deep learning, "grain and grass" first--On the way to obtain data sets
结构体内存对齐-C语言
(导航页)OpenStack-M版-双节点手工搭建-附B站视频
彻底删除MySQL教程
CSDN spree -- college round table spree
C语言数组的深度分析
JDBC第一学之进行数据库连接时出现The server time zone.....解决办法
安装MySQL的详细步骤
LeetCode_Nov_4th_Week
strlen 转义字符
Question 1000: Input two integers a and b, calculate the sum of a+b, this question is multiple sets of test data
DRA821 环境搭建
动态内存管理-C语言
MNIST手写数字识别 —— 从感知机到卷积神经网络
Detailed steps to install MySQL
LeetCode_22_Apr_2nd_Week
位段-C语言
代码庆端午--粽你心意
Install Minikube Cluster in AWS-EC2