文章目录

  • 1 项目背景介绍
  • 2 文件系统基本概念简介
    • 2.1 文件系统接口
    • 2.2 存储的基本单位
    • 2.3 文件存储单位
    • 2.4 文件结构
  • 3 海量存储选用大文件结构的原因

1 项目背景介绍

根据淘宝2016年的数据分析,淘宝卖家已经达到900多万,有上十亿的商品。每一个商品有包括大量的图片和文字(平均:15k),粗略估计下,数据所占的存储空间在1PB 以上,如果使用单块容量为1T容量的磁盘来保存数据,那么也需要1024 块磁盘来保存。

思考? 这么大的数据量,应该怎么保存呢?就保存在普通的单个文件中或单台服务器中吗?显然是不可行的。

淘宝针对海量非结构化数据存储设计出了一款分布式系统,叫TFS,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。


2 文件系统基本概念简介

2.1 文件系统接口

文件系统 :一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。

2.2 存储的基本单位

扇区 - 硬盘的最小存储存储单位(Sector)。一般每个扇区储存512字节(相当于0.5KB)。


磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。而每一个磁道又按512个字节为单位划分为等分,叫做扇区。

2.3 文件存储单位

块 :文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

2.4 文件结构

对于Linux下的Ext*格式化分区,操作系统自动将硬盘分成三个区域:

  • 目录项区 - 存放目录下文件的列表信息。
  • 数据区 - 存放文件数据。
  • inode区(inode table) - 存放inode所包含的信息。


关于Inode:

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

系统读取文件的三部曲:


3 海量存储选用大文件结构的原因

淘宝网为什么不用普通文件存储海量小数据?

  1. 大规模的小文件存取,磁头需要频繁的寻道和换道,因此在读取上容易带来较长的延时。
  2. 频繁的新增删除操作导致磁盘碎片,降低磁盘利用率和IO读写效率。
  3. Inode 占用大量磁盘空间,降低了缓存的效果。

参考资料:

  1. C/C++从入门到精通-高级程序员之路【奇牛学院】

项目背景介绍及文件系统基本概念简介相关推荐

  1. 【概念简介】编辑器及第一个Javas cript程序

    [概念简介]编辑器及第一个Javas cript程序 Javas cript编辑器 在编写Javas cript代码的过程中,一款好的编辑器能让我们事半功倍.目前市面上流行的Javas cript编辑 ...

  2. 进程控制概念简介 多线程上篇(三)

    进程控制 进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理. 比如进程有状态,那么进程的创建.终止,状态的切换,这都不是进程自主进行的 ...

  3. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )

    文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...

  4. OS操作系统概念简介

    操作系统 操作系统是一种程序:控制应用程序执行的程序 操作系统是一种接口:应用程序和计算机硬件间的接口 操作系统就是让普通人也会用电脑的软件(为了方便),就是把整个电脑资源包装起来的一个图形界面(为了 ...

  5. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一) 目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronize ...

  6. 1-2 李宏毅2021春季机器学习教程-第一节(下)-深度学习基本概念简介

    上篇文章1-1 李宏毅2021春季机器学习教程-第一节(上)-机器学习基本概念简介介绍了回归的一些知识,重点介绍了机器学习寻找函式的三个步骤.接着我们继续学习第一节Introduction的内容. 目 ...

  7. 计算机动画基本概念,计算机三维动画基本概念简介

    简单介绍三维计算机动画技术的原理和实现,对里面的几项关键部分的概念进行阐述说明. 2 1 0 0年 9月 第 9期 (第 1 2期 )总 4 广西轻工业 G A G IOR A F IH D SR 计 ...

  8. Linux文件系统(一)文件系统基本概念

    文件系统基本概念 1.文件系统概述 2.文件系统的类型 (1)ext系列 (2)Reiserfs 3. Ubuntu文件系统的结构 (1)概述 (2)路径 (3)主要文件夹及其作用 /bin/ /sb ...

  9. 【CEGUI】概念简介

    CEGUI 概念简介 背景 Crazy Eddie's GUI(MIT License),一款开源的GUI(图形用户界面)库.使用C++实现,遵循OOP,其宗旨: games developers w ...

最新文章

  1. AI前沿:数据智能产品与技术漫谈
  2. ZooKeeper: 简介, 配置及运维指南
  3. [Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum...
  4. PowerBI分析Exchange服务器IIS运行日志
  5. kafka报错:Error writing out kafka.log:type=Log,name=LogStartOffset,topic=xx EofException
  6. Nagios 监控
  7. 解决Redis修改bind域名绑定后出现Could not connect to Redis
  8. Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  9. h3c等价路由(rip)
  10. Pytorch各种损失函数
  11. 跟我一起写 Makefile ---转
  12. java编程练习题:统计字符出现的次数
  13. 【控件】mars3d控件的设置
  14. 智能合约逆向心法1(案例篇)——34C3_CTF题目分析
  15. 一汽大众迈腾车前悬架系统设计
  16. 麒麟V10sp1轻松设置开机自启动脚本
  17. linux shell 输出红色,Bash Shell怎么打印各种颜色
  18. IP转换软件请求过于频繁的原因是什么?
  19. 拼多多商家引流方法:新手一定要知道的几个引流方法!拼多多补单软件
  20. 传递函数极点和零点的几何表示

热门文章

  1. linux export_symbol 变量,linux EXPORT_SYMBOL
  2. 一起学nRF51xx 5 -  ppi
  3. 【Android工具】更新解放双眼听书软件,搜书神器
  4. 在隧道内放置多个地感线圈,车辆通过时、对通过的相邻两个线圈的脉冲信号数据进行实时采集,首先利用云模型算法,计算得到车速的估计值
  5. #ifdef ...#else...#endif等条件编译用法
  6. 前端javascript实现二进制读写操作
  7. Ubuntu 16.04使用root 帐号开启 SSH 登录
  8. Linux之ln命令
  9. 操作系统基本分段存储管理方式
  10. ubuntu 配置 jdk 环境