文件系统概述

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 关于文件系统概述的文章,介绍了不同操作系统下的文件系统类型、特点及其选择方法,并推荐了一些相关学习资源。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.文件系统的选择

1>.什么是文件系统

  文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

  从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

  Linux操作系统查看其支持的文件系统的目录(/lib/modules/`uname -r`/kernel/fs)如下图所示。

2>.文件系统类型

  Linux文件系统:
    ext2(Extended file system):
      Remy Card发布于1993年,适用于那些分区容量不是太大,更新也不频繁的情况,例如/boot分区
    ext3:
      Stephen Tweedie发布于1999年,是ext2的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统.
    ext4:
      various发布于2006年,是ext文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升。目前CentOS 6.x在默认使用该文件系统。
    xfs:
      SGI发布于1994年,SGI,支持最大8EB的文件系统。目前CentOS 7.x在默认使用该文件系统。
    btrfs(Oracle):
      Oracle Corporation发布于2007年,虽然RedHat公司在CentOS 7.x测试阶段使用过该文件系统,但官方宣称在后期的发布版本将不再对该文件系统进行支持。
    ReiserFS:  
      Namesys发布于20001年,号称是世界上最快的文件系统。可惜该发布者的开发人员据说是杀妻(真搞不懂这些天才脑子里想的都是啥!!!),目前还在美国的监狱呆着呢。  
  光盘:
    iso9660:  
      Ecma International, ISO发布于1988年。

  Windows:
    FAT32:  
      Microsoft公司发布于1996年,以前的软盘,U盘使用该文件系统。
    exFAT:  
      Microsoft公司发布于2006年
    NTFS:  
      Microsofth(Gary Kimura,Tom Miller)公司发布于1993年。

  Unix: 
    FFS(fast):  
       Kirk McKusick发布于1983年。  
    UFS1(unix):  
      Kirk McKusick发布于1994年。  
      
    UFS2:  
      Kirk McKusick发布于2002年。  
    JFS:  
      IBM公司发布于1999年。  
      

  网络文件系统:
    NFS
    CIFS

  集群文件系统:
    GFS2:  
      Red Hat公司于2006年发布。
    OCFS2(oracle)  
      Oracle Corporation于2005年发布。

  分布式文件系统:
    fastdfs
    ceph
    moosefs
    mogilefs
    glusterfs
    Lustre

  RAW:
    未经处理或者未经格式化产生的文件系统,底层存储的数据就是0和1,没有文件名的概念,对于追求高性能的磁盘能力可以考虑使用这种裸盘。比如Oracle RAC服务。

  博主推荐阅读:
    https://en.wikipedia.org/wiki/Comparison_of_file_systems(各类操作系统的比较)

3>.文件系统分类

  根据其是否支持"journal"功能:
    日志型文件系统: ext3, ext4, xfs, ...
    非日志型文件系统: ext2, vfat

  文件系统的组成部分:
    内核中的模块:ext4, xfs, vfat
    用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

  Linux的虚拟文件系统:
    VFS(如下图所示)是内核空间的虚拟的文件系统。用户无需和底层的其它文件系统打交道,开发人员秩序针对虚拟文件系统(VFS)的API进行定制该法,而和底层不同设备设备的不同文件系统打交道则交由虚拟文件系统来处理。

  查前支持的文件系统:
    cat /proc/filesystems

4>.文件系统的选择

5>.超级块和INODE TABLE

  如下图所示,可以看到超级快(Super Block)和Inode表关系。

  Disk:
    磁盘是可以基于MBR或者GPT等主流方案进行分区的,下图是基于MBR进行分区,共有4个分区。
  Partition:
    分区有一个启动扇区(Boot Sector,占用512字节),该分区的剩余空间均属于文件系统,下图文件系统类型为EXT2。
  File System:
    文件系统底层是由块组成,而由于块的数量相对较多,因此会被划分成多个块组(Block Group N),可以使用块分区管理工具dumpe2fs(仅适合处理EXT系列的文件系统)进行查看。
  Block Group:
    每一个块组(Block Group)包括以下几个部分:
      Super Block:
        存放元数据信息的,比如存储该Block Group管理的块范围。可以使用tune2fs工具(比如"tune2fs -l /dev/sdb2")进行查看。需要注意的是tune2fs也仅适合处理EXT系列的文件系统。
      GDT:
        组的描述表。
      Block Bitmap:
        块位图用于标识各个块的使用情况。比如使用"1"表示该block被使用,使用"0"表示该block未被使用。
      inode Bitmap:
        节点位图和块位图功能类似。
      inode Table:
        节点表包括的信息相对较多,常见的参数如下:
          Inode number:
            存放节点编号。
          File Type:
            文件类型,Linux有7中文件类型,比如链接文件,目录文件,普通文件,字符设备文件,块设备文件等。
          Permissiontion:
            文件对应的权限。
          Link count:
            该inode被链接的次数。
          UID:
            该inode所属用户的系统ID编号。
          GID:
            该inode所属组的系统ID编号。
          size:
            该inode存储的数据大小。
           pointer:
            指向真正存储数据的指针。
      Data Blocks:
        用于真正存储数据库的块。

二.EXT文件系统实战篇

  博主推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/12820088.html
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
11月前
|
人机交互 iOS开发 MacOS
计算机系统概述
操作系统的概念、功能和目标 熟悉的操作系统 计算机系统的层次结构 操作系统的概念 操作系统的功能和目标 作为系统资源的管理者 作为用户和计算机之间的接口 用户接口 举一个例子: 联机命令接口 脱机命令接口 程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。 注意; 系统调用=系统调用命令=广义指令 GUI 总结一下: 作为最接近硬件的层次 本章总结: 操作系统的四个特征 并发 注意: 操作系统的并发性和并发这两个概念注意区别 并行指同一时刻有多个处理器在执行任务,真正意义上同
47 0
|
4月前
|
C++
基于C++的简易文件管理系统设计与实现
基于C++的简易文件管理系统设计与实现
157 6
|
4月前
|
算法 Shell Linux
操作系统概述
操作系统概述
44 0
|
4月前
|
存储 API 芯片
1.操作系统概述
1.操作系统概述
|
11月前
|
网络协议 网络安全 iOS开发
计算机操作系统概述
计算机操作系统是一种系统软件,它管理和控制计算机硬件和软件资源,为用户和应用程序提供一个方便和有效的工作环境。
58 0
|
供应链 Shell Linux
《计算机操作系统-第一章》之操作系统概述
《计算机操作系统-第一章》之操作系统概述
123 1
|
4月前
|
安全 Unix Linux
第一章 操作系统概述
第一章 操作系统概述
109 0
|
10月前
|
网络协议 网络安全
30 QT - 文件系统概述
30 QT - 文件系统概述
33 0
|
存储 监控 Unix
第一章操作系统概述
第一章操作系统概述
第一章操作系统概述
一、计算机系统概述
一、计算机系统概述
162 0
一、计算机系统概述