zoukankan      html  css  js  c++  java
  • 【Linux】Linux文件系统详解

       在Linux操作系统中支持很多种文件系统,例如常见的Ext2、Ext3、Ext4、proc、Btrfs和XFS等,多达几十个文件系统,每个文件系统是独立的,有自己的组织方法,操作方法。虽然支持的文件系统种类很多,但从用户层面使用方式无任何差别,用户并不感知其中的差异。对于普通用来说,数据都是组织成上文所述的树状结构。那么这种方式是如何实现的呢?

      Linux的文件系统由两层结构构建:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。

      VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分,它位于用户程序和具体的文件系统之间。它对用户程序提供了标准的文件系统调用接口,对具体的文件系统(如EXT2、FAT32等),它通过一系列的对不同文件系统公用的函数指针来实际调用具体的文件系统函数,完成实际的各有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。

        VFS不仅可以对具体文件系统的数据结构进行抽象,以一种统一的数据结构进行管理,并且还可以接受用户层的系统调用,如open()、read()、write()、stat()、link()等。此外,它还支持多种具体文件系统之间的相互访问,接受内核其他子系统的操作请求,例如,内存管理和进程调度。

     

    查看系统中支持哪些文件系统:

    [root@oa-dev /]# cat /proc/filesystems
    nodev   sysfs
    nodev   rootfs
    nodev   ramfs
    nodev   bdev
    nodev   proc
    nodev   cpuset
    nodev   cgroup
    nodev   cgroup2
    nodev   tmpfs
    nodev   devtmpfs
    nodev   binfmt_misc
    nodev   debugfs
    nodev   tracefs
    nodev   securityfs
    nodev   sockfs
    nodev   bpf
    nodev   pipefs
    nodev   hugetlbfs
    nodev   devpts
            ext3
            ext2
            ext4
            squashfs
            vfat
            msdos

     超级块

      一个超级块对应一个文件系统(已经安装的文件系统类型如ext2,此处是实际的文件系统哦,不是VFS)。之前我们已经说了文件系统用于管理这些文件的数据格式和操作之类的,系统文件有系统文件自己的文件系统,同时对于不同的磁盘分区也有可以是不同的文件系统。那么一个超级块对于一个独立的文件系统。保存文件系统的类型、大小、状态等等。

    常见文件系统:

      1. ext2
         ext2是为解决ext文件系统的缺陷而设计的可扩展的、高性能的文件系统,又被称为二级扩展文件系统。它是Linux文件系统中使用最多的类型,并且在速度和CPU利用率上较为突出。ext2存取文件的性能极好,并可以支持256字节的长文件名,是GNU/Linux系统中标准的文件系统。
      2. ext3

          ext3是ext2文件系统的日志版本,它在ext2文件系统中增加了日志的功能。ext3提供了3种日志模式:日志(journal)、顺序(ordered)和回写(writeback)。与ext2相比,ext3提供了更好的安全性以及向上向下的兼容性能。因此,在Linux系统中可以挂在一个ext3文件系统代替ext2文件系统。ext3文件系统格式被广泛应用于目前的Linux系统中。ext3的缺点是缺乏现代文件系统所具有的高速数据处理和解压的性能。此外,使用ext3文件系统还要考虑磁盘限额问题。
      3. ext4

        是 ext3 文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。ext4 的变化可以说是翻天覆地的,比如向下兼容 Ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块 概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.3 的默认文件系统。

      4. xfs

          方便管理,支持动态扩容。

       5. swap

         其实swap也是一种文件系统。swap主要是用于缓解内存的压力而单独设置的一个交换空间(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。有三个相关命令mkswapswaponswapoff

  • 相关阅读:
    如何设置Xcode模拟器地图的当前位置
    序列化框架MJExtension详解 + iOS ORM框架
    ios 容错处理JKDataHelper和AvoidCrash
    2017.5.3最新申请公司开发者账号整个流程(包括邓白氏申请详细流程带截图)
    详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形...)
    Mac系统安装和配置tomcat步骤详解
    Mac下intellij IDEA新建javaweb项目
    Apple Mach-O Linker Warning 警告解决办法
    项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
    iOS 中 延迟操作四种方式
  • 原文地址:https://www.cnblogs.com/songgj/p/8779116.html
Copyright © 2011-2022 走看看