zoukankan      html  css  js  c++  java
  • Linux:文件系统

    Linux:文件系统

    分区与文件系统

      对分区进行格式化是为了在分区上建立文件系统。一个分区通常只能格式化为一个文件系统,但是磁盘阵列等技术可以将一个分区格式化为多个文件系统

    组成

      最主要的组成部分如下

        inode:一个文件占用一个inode,记录文件的属性,同时记录文件内容所在的block编号

        block:记录文件的内容,文件过大时,会占用多个block。

      除此之外还包括

        superblock:记录文件系统的整体信息,包括inode和block的总量、使用量、剩余量,以及文件系统的格式与相关信息。 

        block bitmap:记录block是否被使用过的位域。

      

    BLOCK

      在 Ext2 文件系统中所支持的 block 大小有 1K,2K 及 4K 三种,不同的大小限制了单个文件和文件系统的最大大小

    大小1KB2KB4KB
    最大单一文件 16GB 256GB 2TB
    最大文件系统 2TB 8TB 16TB

       一个 block 只能被一个文件所使用,未使用的部分直接浪费了。因此如果需要存储大量的小文件,那么最好选用比较小的 block。

    INODE

    inode 具体包含以下信息:

    • 权限 (read/write/excute);
    • 拥有者与群组 (owner/group);
    • 容量
    • 建立或状态改变的时间 (ctime);
    • 最近一次的读取时间 (atime);
    • 最近修改的时间 (mtime);
    • 定义文件特性的旗标 (flag),如 SetUID...;
    • 该文件真正内容的指向 (pointer)。

    inode具有以下特点:

    • 每个inode大小均为128bytes
    • 每个文件仅会占用一个inode

      inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用是指,让 inode 记录的引用 block 块记录引用信息

      

    文件读取

    EXT2系统

      对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来

      

    FAT系统

      而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号

      

    目录配置


      建立一个目录时,会分配一个 inode 与至少一个 blockblock 记录的内容是目录下所有文件的 inode 编号以及文件名。可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。

      为了使不同 Linux 发行版本的目录结构保持一致性,Filesystem Hierarchy Standard (FHS) 规定了 Linux 的目录结构。最基础的三个目录如下:

      • / (root, 根目录)
      • /usr (unix software resource):所有系统默认软件都会安装到这个目录;
      • /var (variable):存放系统或程序运行过程中的数据文件。

       

    root目录下的子目录

      

    /usr目录下该有的子目录 

      

    /var 目录下应该有的子目录

      

  • 相关阅读:
    Storm-源码分析-Stats (backtype.storm.stats)
    Storm-源码分析-Topology Submit-Task-TopologyContext (backtype.storm.task)
    Storm-源码分析-Streaming Grouping (backtype.storm.daemon.executor)
    Storm-源码分析-Topology Submit-Worker
    Storm-源码分析- Messaging (backtype.storm.messaging)
    Storm-源码分析-LocalState (backtype.storm.utils)
    Storm-源码分析- Disruptor在storm中的使用
    LMAX Disruptor 原理
    Shiro学习(7)与Web整合
    MQTT---HiveMQ源代码具体解释(十四)Persistence-LocalPersistence
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9791602.html
Copyright © 2011-2022 走看看