淘宝分布式文件存储系统(一) -TFS

2023-09-12 19:08:07

淘宝分布式文件存储系统( 一 ) ->>TFS

目录 :

  • 什么是文件系统
  • 文件存储的一些概念
  • 文件的结构
  • 系统读取文件的方式
  • 为什么采用大文件结构的原因
文件系统 :

将我们的数据整合成目录或者文件,提供对文件的存取接口,基于文件的权限进行访问,简单的说,文件系统就是对文件进行管理的方式 .

文件系统

文件存储的一些概念:
  • 扇区 . 存储数据的磁盘的最小单位 , 通常一个扇区的大小是 512b(相当于0.5kb),-------b->字节
  • 块: 文件存储的基本单位, 一般是连续的个扇区组成一块 , 512b*8=4096b–> 4kb
文件的基本结构:

文件==目录项 + 块数据项 + Inode 元信息

目录区 : 存放目录下文件的信息 .

块数据区 : 存储文件数据 .

Inode元信息区 : 存放文件的 inode 包含的信息 ,我们可以理解为文件的属性 .

**Inode 结点 : ** ----->可以用,命令 ls -il 来查看一下

  • 索引结点 : 用来存取文件的元信息, 包括文件大小,创建者 ,创建日期等等 . ,每一个文件都有一个inode号码,相当于我们的身份证,操作系统根据inode编码来识别文件 .
    inode示意图

  • 结点大小-------> 一般是128和256个字节 , inode结点的数量在最开始格式化磁盘的时候就已经标记 , 相当于一个组成一个inode table , 一般是1kb 或者 2kb 设置一个结点 . 例如 1GB的硬盘 , 按128 和 1kb来算 , inode结点大概会占用128MB大小的空间, 占整个磁盘的12.8% . 所有如果你发现你的磁盘还剩10个G的内存,但是死活存不进数据 , 是因为被我们的inode结点占据了 . **

系统读取文件的方式 :

文件读取三部曲

淘宝的分布式文件储存系统为什么采用大文件结构的原因 :

(1) .小文件存储海量的数据,会导致我们硬件的存储器的磁头需要频繁的更换磁道,就会提高我们的存取时的时间(延时).
(2) .如果进行频繁的增加和删除,会导致我们的磁盘产生很多碎片,降低磁盘的存取效率,同时也降低了IO设备的读写效率.
加和删除,会导致我们的磁盘产生很多碎片,降低磁盘的存取效率,同时也降低了IO设备的读写效率.
(3) .海量的小文件,会导致 inode 编号占用太多磁盘空间,降低缓存的效果.

更多推荐

让Pegasus天马座开发板用上OLED屏

继上篇《让Pegasus天马座开发板吃上STM8S标准库》移植完标准库之后,于是我又想为天马座开发板添加一块屏幕。终于在我的零件箱底下找到了沉入箱底多年的0.96OLED屏幕。屏幕介绍这个是128x64像素的屏幕模块,其使用的SSD1306的驱动IC。而目前该模组,只支持3/4线SPI及I2C通信方式。硬件连接我将天马

centos7如何释放磁盘空间?

centos7磁盘满了,但是找不到大的文件,原因是没有释放磁盘空间小白教程,一看就会,一做就成。1.原因当centos系统下启动多个服务且没有一定的清理机制时(比如日志),系统磁盘空间很容易就被占满,但是有时候删除了文件却发现系统磁盘空间未释放,可能原因是忽略了有应用一直在往其中写数据,直接删除某文件无法释放磁盘空间2

Spring SpEL 表达式语言

一、文本表达式文本表达式支持字符串、数字(正数、实数及十六进制数)、布尔类型及null。其中的字符表达式可使用单引号来表示,形如:'Deniro'。如果表达式中包含单引号或者双引号字符,那么可以使用转义字符\。数字支持负数、小数、科学记数法、八进制数和十六进制数。默认情况下,实数使用Double.parseDouble

IO口电路种类

文章目录参考1.高速振荡电路(时钟IO引脚)2.与GPIO功能共享的低速振荡电路(子时钟IO)3.CMOS滞后输入引脚4.电源输入保护电路5.A/D转换器ref+(AVRH)带保护电路的电源输入端6.CMOS电平输出7.CMOS电平输出,带有模拟输入8.CMOS电平输出,带有模拟输入(上面是滞后,这个是自动)9.没有模

编译opencv-3.4.5 [交叉编译]

在unbuntu20.04环境下编译opencv3.4.5,cmake版本:3.27.4gcc版本:11.4.0g++版本:11.4.0在此环境下编译opencv4.5.4正常。1.编译时遇到的问题(1)Builttargetlibprotobufmake:***[Makefile:163:all]错误2make时用s

使用pdfplumber提取pdf中的文字

一、安装pdfplumberpdfplumber是一个Python库,必须通过pip安装才能在Python代码中进行使用。使用以下命令在Python中安装pdfplumber。pipinstallpdfplumber二、用pdfplumber打开PDF文档在Python中使用pdfplumber打开PDF文档的方法非常

如何使用极狐GitLab 支持 ISO 27001 合规

目录组织控制技术控制了解更多本文来源:about.gitlab.com作者:JosephLongo译者:武让极狐GitLab高级解决方案架构师作为一体化平台,通过极狐GitLab可以很容易实现DevSecOps全生命周期管理。极狐GitLab使开发人员能够更快地构建更好的软件应用。但是,它的能力还不仅限于DevSecO

VSCode 配置 Lua 开发环境(清晰明了)

概述由于AutoJS学得已经差不多了,基本都会了,现在开始向其他游戏脚本框架进发,Lua语言很强大,就不多说,按键精灵、触动精灵等等都是用该语言编程脚本的,由于按键精灵、触动精灵和AutoJS类似,不是说一样是因为按键精灵、触动精灵整合大漠插件等牛逼插件,控制3维角色等。我主要学来在GG修改器中修改游戏内存,我的初衷是

springcloude gateway的意义

应用场景1、南北向流量需要流量网关和微服务网关配合使用,将内部的微服务能力,以统一的HTTP接入点对外提供服务。流量网管主要是接入流量进行负载均衡,上游的微服务网关地址和数量变化不大,对服务发现要求不高。微服务网关则把外部请求映射到内部的微服务上,微服务的节点地址和数量会经常变化,路由规则变化基本稳定,微服务网关很方便

php文件上传功能(文件上传)

实现文件上传是Web开发中常用的功能之一,而PHP也是支持文件上传的。那么,下面我们就来介绍一下常用的PHP实现文件上传的方法。使用HTML表单实现文件上传HTML表单是Web开发中最基本的元素之一,它可以接收用户输入的数据,并通过HTTP协议将数据提交到服务器端。在HTML表单中,可以使用元素来实现文件上传的功能。在

ReactNative中升级IOS 17版本Crash解决

ReactNative中升级IOS17版本Crash解决ReactNative中升级IOS17版本Crash解决一、问题描述二、原因分析三、解决方案决策3.1设置宽高为非零值3.2使用新的UIGraphicsImageRenderer替换就版本的UIGraphicsBeginImageContext四、可能使用到该AP

热文推荐