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

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++从入门到精通-高级程序员之路【奇牛学院】

猜你喜欢

转载自blog.csdn.net/SlowIsFastLemon/article/details/106474058
今日推荐