实现分布式文件系统(一)

什么是文件系统?

在我们实现一个分布式文件系统之前,我们首先要回答一个问题,什么是文件系统?文件系统是一套实现了数据的存储,分级组织,访问和获取等操作的抽象数据类型。通俗一点讲,文件系统是在存储设备上进行数据的组织和管理的一套机制。数据又包含原始数据和元数据。

从上面的解释中,我们能提炼出几个关键词,“存储设备”,“元数据”

  • 存储设备:比如SATA磁盘 SAS磁盘

  • 元数据:直接解释为描述数据的数据,即对某项数据的具体描述信息。在文件系统中,则是对某个文件的描述信息,比如文件存储路径,大小,文件名,文件类型等等。

我们熟悉的文件系统类型:

  • ext:ext2,ext3,ext4,GNU/Linux文件系统。

  • HFS:mac os使用的文件系统。

  • NTFS:windows使用的文件系统。

文件系统的基本原理

上述文件系统和操作系统,磁盘相关。接下来我们以linux中使用的文件系统ext为例,讲解一下文件系统的运作过程。

首先我们来认识一下磁盘的物理组成(鸟哥的linux私房菜有介绍):

  1. 圆形的盘片(主要记录数据部分)
  2. 机械手臂,机械手臂上的磁头(可读写盘片上的数据)
  3. 主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据。

数据存储和读写的重点在于盘片,盘片的物理组成为:

  1. 磁道:磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。
  2. 扇区:每个磁道被等分为若干个弧段,这些弧段便是扇区,扇区为最小的物理存储单位,根据磁盘设计不同,目前主要有512个字节和4K两种格式。
  3. 柱面:扇区组成一个圆就是柱面,柱面数和磁道数相同。

硬盘的容量=柱面数x磁头数x扇区数x512B/4K

再来了解三个概念:

top Created with Sketch.