精华内容
下载资源
问答
  •  Windows NT类的操作系统,也就是Windows NT/2000/XP中,有一个特殊文件,也就是“BOOT.INI”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统。 “BOOT.INI”文件会在已经安装了Windows NT/
    目前很多用户一台机器都安装有多个操作系统,这种多系统操作平台应用有很多方便的地方,但是一旦出现问题,某个操作系统无法启动,将会对使用者造成不必要的麻烦。

      

    Windows NT类的操作系统,也就是Windows NT/2000/XP中,有一个特殊文件,也就是“BOOT.INI”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统。

     BOOT.INI”文件会在已经安装了Windows NT/2000/XP的操作系统的所在分区,一般默认为C盘根目录下面存在。但是它默认具有隐藏和系统属性,所以要设置取消隐含属性,以便把“BOOT.INI”文件显示出来。我们可以用任何一种文本编辑器来打开它。一般情况下,它的内容如下:

    [boot loader]

    timeout=30

    default=multi(0)disk(0)rdisk(0)partition(1)/Windows

    [operating systems]

    multi(0)disk(0)rdisk(0)partition(1)/Windows="Microsoft Windows XP

    Professional" /fastdetect   

    Windows 2000或者是XP系统中,我们可以很容易的设置“BOOT.INI”文件。那就是在“我的电脑”上面点击右键,选择“属性”打开“系统属性”对话框,再点击“高级”选项,在“启动和故障修复”里面点击“设置”按钮,就可以打开“启动和故障修复”对话框了,在这里面我们就可以对它进行详细设置。

    如果是Windows XP操作系统,那么可以用“系统配置实用程序”来更方便的编辑“BOOT.INI”文件。具体做法是:打开“开始”菜单,点击“运行”命令,再在弹出的文本框中输入“msconfig”点击“确定”后就会弹出“系统配置实用程序”,再点击“BOOT.INI”选项卡,就会出现如图所示的界面。在这里,我们可以很方便地设置文件。
    展开全文
  • 文件系统】FAT12文件系统简介

    千次阅读 2015-10-10 20:33:43
    1.FAT12文件系统扇区分配 FAT12文件系统由引导区、FAT表、根目录项表和文件数据区组成,其中引导区程序占用扇区[0],FAT表1占用扇区[1]~[9],FAT表2占用扇区[10]~[18],根目录项表存储于扇区[19]~[32],用户存储的...

    1.FAT12文件系统扇区分配

    FAT12文件系统由引导区、FAT表、根目录项表和文件数据区组成,其中引导区程序占用扇区[0],FAT表1占用扇区[1]~[9],FAT表2占用扇区[10]~[18],根目录项表存储于扇区[19]~[32],用户存储的文件或者子目录位于扇区[33]之后。

    FAT12
    2880扇区
    (1474560B)
    逻辑扇区 占用扇区 内容 磁盘CHS参数(磁头/柱面/扇区)
    0 1(512B) 引导程序 起:0/0/1
    1 9(4608B) FAT文件分配表1 起:0/0/2 止:0/0/10
    10 9(4608B) FAT文件分配表2 起:0/0/11 止:1/0/1
    19 14(9728B) 目录文件项  
    33 end 文件数据区  
    表1 - FAT12文件系统扇区分配图

    2.FAT12的引导区

    引导区存储的比较重要的信息有文件系统的类型、文件系统逻辑扇区总数、每簇包含的扇区数(还有磁道和扇区的关系等等,先不深究吧),引导区最后以0x55AA两个字节作为结束,共占用一个扇区。
    标识 偏移量 类型 大小 说明 默认值
     

    0

    db

    3

    跳转指令  
    BS_OEMName

    3

    db

    8

    OEM字符串,必须为8个字符,不足以空格填空 MSWIN4.1
    BPB_BytsPerSec

    11

    dw

    2

    每扇区字节数 200h
    BPB_SecPerClus

    13

    db

    1

    每簇占用的扇区数 1
    BPB_RsvdSecCnt

    14

    dw

    2

    保留扇区数 1
    BPB_NumFATs

    16

    db

    1

    FAT表的记录数 2
    BPB_RootEntCnt

    17

    dw

    2

    最大根目录文件数 0e0h
    BPB_TotSec16

    19

    dw

    2

    逻辑扇区总数 0b40h
    BPB_Media

    21

    db

    1

    媒体描述符 0f0h
    BPB_FATSz16

    22

    dw

    2

    每个FAT占用扇区数 9
    BPB_SecPerTrk

    24

    dw

    2

    每个磁道扇区数 12h
    BPB_NumHeads

    26

    dw

    2

    磁头数 2
    BPB_HiddSec

    28

    dd

    4

    隐藏扇区数 0
    BPB_TotSec32

    32

    dd

    4

    如果BPB_TotSec16是0,则在这里记录扇区总数 0
    BS_DrvNum

    36

    db

    1

    中断13的驱动器号 0
    BS_Reserved1

    37

    db

    1

    未使用 0
    BS_BootSig

    38

    db

    1

    扩展引导标志 29h
    BS_VolID

    39

    dd

    4

    卷序列号 0
    BS_VolLab

    43

    db

    11

    卷标,必须是11个字符,不足以空格填充  
    BS_FileSysType

    54

    db

    8

    文件系统类型,必须是8个字符,不足填充空格 FAT12  
     

    62

     

     

    引导代码,由偏移0字节处的短跳转而来  
     

    510

    dw

    2

    系统引导标识 0aa55h  
    表2 - 引导区结构
    系统的bootloader根据引导区的存储内容可以确定文件系统信息,从引导区第62个字节开始的引导程序,我们就可以初始化外围设备和跳转到二次引导程序或者进入系统入口点。

    3.FAT12文件系统的文件索引方法

    FAT12文件系统上有两个FAT表和文件目录项表,其文件的索引工作全由这些表共同完成。

    FAT表-存储的是关于簇的使用情况,其中
    0ff0-0ff7h代表坏簇,磁道或柱面损坏不可使用,在格式式磁盘时由系统自动填充;
    0ff8-0fffh代表文件内容结束,到此簇为止;
    其它的值代表着下一个簇号,也就是所谓的簇链。
    在FAT12文件系统中,最小存储单元是簇,如一个扇区占用512个字节,如果此时文件系统一个簇占用2个扇区,当我需要存储一个1500字节的文件时,将会占用2个簇,即2048个字节,多占用的空间是不可再用了。对于FAT12文件系统,簇的序号由12bit进行编号,也就是说最多只支持4096个簇,这也是FAT12支持的最大文件数量不确定的原因(一个文件可能会占用多个簇)。值得注意的是我们是从簇[2]开始用于存储文件的,且格式化的时候,磁盘卷标通常就会占用了簇[2]的空间。所以实际上我们新建文件或者创建子目录是从簇[3]开始的。

    图1 - FAT表字节位置与簇号的存储关系(FAT12中一个簇号占用1.5字节)
    文件目录项占用14个扇区,每个项占用32个字节(这里是针对短文件名记录结构而非长文件名文件),表示支持的最大根目录数量=扇区字节数*14/32=224。
    FAT文件系统下创建子目录和文件的异同:
    类同
    FAT文件系统对于创建文件和创建子目录的操作是基本一致的,都是在文件目录项表中增加32字节来存储其属性和起始簇号等等。
    差异
    >>>>在创建文件的时候,会占用文件目录项中的一项(32字节),并会分配至少一个簇的空间给文件,并修改FAT表中对应簇号的状态(如文件结束则填入0ff8-0fffh的内容,如果超过一个簇则填入下一个簇的编号);
    >>>>在创建子目录时,其步骤如下:
    a.在父目录所在簇上建立新的目录项,存储当前所建文件夹信息;(根目录上的每个32字节文件项均写到这里?)
    b.分配一个新簇,给新建的文件夹建立两个目录项:父目录和当前目录;
    c.在FAT表中新分配的簇对应的位置上写下文件结束符;
    d.建立各部分的链路关系:新建文件夹所对应的目录项的文件起始簇号字段写上新分配簇的簇号,新簇上的两个目录项的文件起始簇号字段分配写上父目录所在簇号。

    图2 - FAT12目录项数据结构(偏移以字节为单位,共占用32个字节)
    ------------------------------------------------------------------------------------------
    文件属性:
    00000000:普通文件,可随意读写
    00000001:只读文件,不可改写
    00000010:隐藏文件,浏览文件时隐藏列表
    00000100:系统文件,删除的时候会有提示
    00001000:卷标,作为磁盘的卷标识符
    00010000:目录文件,此文件是一个子目录,它的内容就是此目录下的所有文件目录项
    00100000:归档文件
    文件的属性可以叠加使用,可以具有多重属性,即设置为只读的时候也可以同时隐藏。
    ------------------------------------------------------------------------------------------

    文件创建位置的区别:

    当在根目录下创建文件(文件夹)时,由于FAT12文件系统根目录文件项限制于224个,所以在根目录下最多只能存在224个文件(文件夹),当然遇到长文件名的情况,会使得存储文件数量下降。当在非根目录下创建文件(文件夹)时,会在目录分配的新簇中写入相应目录项,所以不受限于根目录文件项数。(这里不知道理解的对不对,请指正)
    ------------------------------------------------------------------------------------------
    文件索引步骤:
    先在文件目录项表中找到对应的文件名的那32个字节,在第26字节中,我们得到文件的起始簇号,然后得到文件一个簇空间的内容,再到FAT表中起始簇号对应的偏移字节中得到文件链接的下一个簇号,在从对应的偏移字节中,获取下一个簇号,直至遇到文件结束符,这样就可以得到文件所有内容,以此类推。

    4.长文件名的存储规则

    (待续。。。)
    展开全文
  • 最近在项目中使用到了DFS分布式文件系统,...分布式文件系统是将分布于不同电脑上的文件组合为单一的名称空间,并使得在网络上建立一个单一的、层次化多重文件服务器和服务器共享的工作更为方便的途径。 DFS优势 分

    最近在项目中使用到了DFS分布式文件系统,这里搜集一些资料了解一下这个系统以及如何在我的项目里使用。

    DFS定义

    Microsoft文件分布系统 (Dfs) 是一个网络服务器组件,它能够使你更容易地在网络上查询和管理数据。分布式文件系统是将分布于不同电脑上的文件组合为单一的名称空间,并使得在网络上建立一个单一的、层次化多重文件服务器和服务器共享的工作更为方便的途径。

    DFS优势

    分布式文件系统(DFS,Distributed File System)使用户更加容易访问和管理物理上跨网络分布的文件。DFS为文件系统提供了单个访问点一个逻辑树结构,通过DFS,用户在访问文件时不需要知道它们的实际物理位置,即分布在多个服务器上的文件在用户面前就如同在网络的同一个位置。通过DFS,可以将同一网络中的不同计算机上的共享文件夹组织起来,形成一个单独的、逻辑的、层次式的共享文件系统。

    DFS操作

    DFS是一个树状结构,包含一个根目录一个或多个DFS链接

    1,要建立DFS共享,必须首先建立DFS根。

    2,然后在每一个DFS根下,创建一个或多个DFS链接,每一个链接可以指向网络中的一个共享文件夹。

    注意:Dfs链接的最大数目是1000。如果Dfs链接的目标文件夹不是Windows 2000文件夹,则该目标文件夹不能有子文件夹。

    这里写图片描述

    DFS实践

    对应于项目体系中,dfs在实践的过程中,有以下几个过程

    DFS存储

    1,第一步:将对象序列化为字符串并压缩

    ===========================获取对比结果对象=======================
    Person p = new  Person();
    =========================将该对象序列化为字符串=======================
    string serializeStr= Maolin.Common.Serialize.SerializeHelper.Serialize(p);  // 获取序列化的字符串
    =========================压缩字符串数据=======================
    string str = GZipCompressHelper.GZipCompressString(serializeStr);   //压缩字符串数据

    2,第二步,将该压缩字符串转换为二进制数组,进而转换为流对象

    byte[] bData = System.Text.Encoding.UTF8.GetBytes(str);  //转换为二进制比特流,以UTF-8的编码样式
    MemoryStream ms = new MemoryStream(bData);

    MemoryStream类用于向内存而不是磁盘读写数据。MemoryStream封装以无符号字节数组形式存储的数据,该数组在创建MemoryStream对象时被初始化,或者该数组可创建为空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要

    3,第三步,创建文件名,调用方法,将该流对象存储到dfs上,并将dfs对象字符串化后存储到数据库中

     var fileName = tenantId + "_" + importLogID.ToString();  //文件名 :租户ID+日志id
    
     var dfsPath = Dfs.Store(new DfsItem(BaseConst.PublicDfsKeyspace, fileName + ".json", ms, tenantId));  //将文件存到该dfs路径
    
    
     CompareToolImportLogProvider.Instance.Create(status, dfsPath.ToString(), createdBy, importLogID);
     //将生成完成后的各项数据存入数据库中

    DFS读取

    1,第一步:依据id从数据库取出该条数据及其dfspath

    ===========================读取数据库对象=======================
    var compareToolImportLogProvider = CompareToolImportLogProvider.Instance.GetById(id);  //依据日志id拿到该条对比工具的日志记录
    =========================从该对象中拿到dfs路径=======================
    var dfsPath = compareToolImportLogProvider.DfsPath;  //读取到dfs的路径

    2,第二步,将路径直接转换为二进制数组

    var item = GetDfsItem(dfsPath);//将dfs路径传入获取二进制数组

    用到的辅助方法

     /// <summary>
            /// 私有方法:获取二进制数据
            /// </summary>
            /// <param name="dfsPath"></param>
            /// <returns></returns>
            private byte[] GetDfsItem(string dfsPath)
            {
                byte[] fileData = null;
                try
                {
                    Dfs.Get(new[] { dfsPath }, (operationResult, item) =>
                    {
                        if (!operationResult.Succeeded)
                            return;
    
                        if (item.IsStream)
                        {
                            fileData = new byte[item.Length];
                            int index = 0;
                            while (index < item.Length)
                            {
                                int read = item.FileDataStream.Read(fileData, index,
                                                                    (int)
                                                                    (item.Length - index));
                                index += read;
                            }
                        }
                        else
                        {
                            fileData = item.FileDataBytes;
                        }
                    });
                }
                catch (Exception ex) { }
    
                if (fileData == null)
                {
                    throw new Maolin.DfsClient.DfsException($"DFS文件不存在.dfsPath:[{dfsPath}]");
                }
                return fileData;
            }

    3,第三步,将二进制数组转换为字符串,解压缩,进而反序列化为对象

      var str = System.Text.Encoding.UTF8.GetString(item);  //将二进制数组转为字符串
      var strlcm = GZipCompressHelper.GZipDecompressString(str);  //将该字符串解压缩
       var person = Maolin.Common.Serialize.SerializeHelper.Deserialize<Person>(strlcm);//反序列化为实体

    这就是一个完整的对象存储到文件系统上并且读取的全过程了,之后如果遇到需要dfs的,相信应该会比较熟练

    展开全文
  • 介绍xfs文件系统之前,与ext系统做一个简单的比较 ext文件系统(支持度最广、但格式化超慢):ext系列的文件系统,在文件格式化时,采用的是规划出所有的inode、区块、元数据等数据,未来系统可以直接使用,不需要...

    一、文件系统分类

    • 我们知道每种操作系统能够使用的文件系统并不相同
    • 例如
      • FAT(或FAT16):Windows 98以前的微软操作系统主要是用的文件系统。U盘通常也使用这个文件系统
      • NTFS:Windows 2000以后的版本使用
      • ext2:Linux的正统文件系统(默认情况下,Windows操作系统不支持ext2文件系统)

    二、文件系统的分区特性

    • 传统的磁盘与文件系统应用中
      • 一个分区就能够被格式化成为一个文件系统
      • 所以说一个文件系统就是一个硬盘分区
    • 新技术下的文件系统
      • 由于新技术的利用。例如我们常听到的LVM与软件磁盘列阵
      • 这些新技术可以将一个分区格式化成为多个文件系统(例如LVM),也可以够将多个分区合并成一个文件系统(例如LVM,RAID)
      • 所以,目前我们在格式化时已经不再说成针对硬盘分区来格式化了,通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区

    三、文件系统是如何运行的

    • 文件系统的运行与操作系统的文件有关
    • 文件系统通常将文件数据放在不同的区块:
      • inode:记录文件的权限(rwx等)与属性(拥有者、用户组等),同时记录此文件的数据所在的区块号码。一个文件占用一个inode
      • 数据区块:实际记录文件内容的地方。若文件太大时,会占用多个区块
      • 超级区块:记录此文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,自己文件系统的格式与相关信息等
    • inode与数据区块的联系inode与数据区块都有编号。每个文件都只会且至多占用一个inode,inode里面记录了文件的数据区块编号。如果知道了文件的inode的话,自然就会知道这个文件所放置数据的区块号码,当然也就能够读出该文件的实际数据,这是个比较有效率的做法

    四、文件系统数据存取的方法

    索引式文件系统

    • 假设一个文件的属性与权限数据是放置在inode 4号,而这个inode记录了文件数据的实际放置点为2、7、13、15这4个区块号码。此时操作系统就能够据此来排列磁盘的读取顺序,可以一口气将4个区块内容读出来

    FAT文件系统

    • FAT文件系统格式的文件系统没有inode存在,所以没有办法将这个文件所有区块在一开始就读取出来。每个区块号码都记录在前一个区块当中,存取文件时,依次读取。
    • 缺点:这种方式不能一次性知道文件数据存放在哪里,它要一个一个的将区块读取完之后,才会知道下一个区块在何处。如果一个文件数据写入的区块太分散,则我们的磁头无法在磁盘转一圈就能够读到所有的数据,效率低

    五、碎片整理

    • 碎片整理的原因:文件写入的区块过于离散,此时文件读取的性能就会变得很差。这时就需要通过碎片整理将同一个文件所属的区块集合在一起,这样数据的读取会比较容易
    • 适用于:FAT的文件系统需要不时地碎片处理一下。ext2是索引式文件系统,基本上不太需要进行碎片处理
    • 前前面文章我们介绍过:
      • 文件系统中inode记录的是文件的属性与权限。数据区块记录的是文件的实际内容
      • 文件系统一开始就将inode与数据区块规划好了,除非重新格式化(或利用resize2fs等命令修改其大小),否则inode与数据区块固定后就不再变动

    六、异步处理

    • 在计算机概论中,我们介绍过,所有的数据要写到内存中才能够被CPU处理。如果,数据不断地在内存与磁盘简进行写入和读取,会导致效率很低,因此,部分数据没有直接写入硬盘,而是存在内存中,等到后面一次性写入硬盘
    • 基本概念:当系统加载一个文件到内存中后
      • 如果该文件没有被修改过,则在内存区段的文件数据会被设置为“干净”(clean)
      • 如果内存中的文件数据被更改过,则此文件数据会被设置为“脏的”(dirty),此时所有的操作都还在内存中执行,并没有写入到磁盘中
      • 系统会时不时的将内存中的dirty数据写回磁盘,以保持磁盘与内存数据的一致性。(当然,你也可以使用sync命令将数据强制写入磁盘)
    • Linux文件系统与内存的关系:通过上面我们可以了解到,Linux文件系统与内存有很大的关系,关系如下
      • 系统会将常用的文件数据放置到内存的缓冲区,以加速文件系统的读写操作
      • 承上,因此,Linux的物理内存最后都会被用光,这是正常的情况,可加速系统性能
      • 你可以手动使用sync命令来强制内存中设置为dirty的文件会写到磁盘中
      • 若正常关机,关机命令会主动调用sync来将内存的数据会写入磁盘中
      • 若不正常关机,由于数据尚未会写到磁盘中,因此重新启动后可能会花很多时间在进行磁盘校验,甚至可能导致文件系统的损坏(非磁盘损坏)

    七、ext2文件系统

    • 简介:ext2是Linux的标准文件系统
    • 组成:ext2文件系统格式化的时候基本上是区分为多个区块群组,每个群组都有独立的inode、数据区块、超级区块系统等
      • 启动扇区(boot sector):每个群组最前面有一个启动扇区,这个启动扇区可以安装启动引导程序。这是个很重要的设计,因此我们可以将不同的启动引导程序安装到别的文件系统的最前端,而不用覆盖整块磁盘唯一的MBR,这样才能够制作出多重引导的环境
      • 区块群组(block group):文件系统的一部分,其又由6个主要的部分组成,下面一一介绍

    • 区块群组分为:超级区块、文件系统描述、区块对应表、inode对应表、inode表、数据区块
    • 按其属性分为:
      • 数据存放区域:inode表与数据区块(都用来存放记录与数据)
      • 元数据:超级区块、区块对照表、inode对照表、文件系统描述(文件每次新增、删除、编辑都会影响到这几个区域,因此成为元数据)

    data block(数据区块)

    • 概念:实际存放数据的地方
    • 特点
      • 在格式化时,每个数据区块都已经固定大小了,且每个区块都有编号,方便inode记录
      • 在ext2文件系统中所支持的区块大小有1K、2K、4K三种。不同的区块大小决定了文件系统能够支持的最大磁盘容量与最大单一文件容量。其限制特点如下表
    数据区块大小 1KB 2KB 4KB
    最大单一文件限制 16GB 256GB 2TB
    最大文件系统总容量 2TB 8TB 16TB
    • 原则上,区块大小与数量在格式化完就不能够再修改(除非重新格式化)
    • 每个区块内最多只能放置一个文件的数据
    • 承上,如果文件大小大于区块大小,则一个文件会占用多个区块
    • 承上,如果文件大小小于区块大小,则该区块的剩余容量就不能够再被使用(造成磁盘空间浪费)

    inode table(inode 表)

    • 记录的内容有:
      • 该文件的读写属性(r、w、x)
      • 该文件的拥有者与用户组
      • 该文件的大小
      • 该文件建立或状态改变的时间(ctime)、最后一次读取的时间(atime)、最近修改的时间(mtime)
      • 定义文件特性的标识(flag),如Set UID
      • 该文件真正内容的指向
    • 特点
      • 每个inode大小均固定为128B(新的ext4与xfs可设置到256B)
      • inode记录一个数据区块使用4B
      • 每个文件都仅会占用一个inode而已(因此每个文件系统能够建立的文件数量用户inode的数量有关)
      • 系统操作文件时需要先找到inode,并分析inode所记录的权限与用户是否符合。若符合才操作区块的内容

    inode结构图

    • 上面介绍过,ext2下每个inode大小均为128B,而inode记录一个数据区块使用4B,假设一个文件有400MB且每个数据区块为4K,那么至少有十万个区块的记录。那么inode如何记录这些信息哪?下面介绍我们的inode结构图
    • inode由下面部分组成:
      • 文件权限/属性等记录区域
      • 记录区域号码的区域(又分为12个直接、1个间接、1个双间接、1个三间接)

    è¿éåå¾çæè¿°

    • 我们以1KB大小的数据区块来说明
      • 12个直接指向:12*1K=12K
      • 1个间接:256*1K=256K(每条区块号码记录会使用4B,因此1K的大小能够记录256条记录)
      • 1个双间接:256*256*1K=256^{2}K
      • 1个三间接:256*256*256*1K=256^{3 }K
      • 相加得:12+256+256^{2}+256^{3 }(K)=16GB
    • 由此,我们验证了上面的说法,1KB的数据区块能够容纳的最大文件为16GB

    超级区块(super block)

    • 记录的内容有
      • 数据区块与inode的总量
      • 未使用与已使用的inode与数据区块的数量
      • 数据区块与inode的大小(data block分为1K或2K或4K,inode分为128B或256B)
      • 文件系统的挂载时间、最近一次写入数据的时间、最近一次检验硬盘的时间等文件系统的相关信息
      • 一个有效位数值:若此文件系统已被挂载,则有效位为0。若此文件系统未被挂载,则有效位为1
    • 特点
      • 没有超级区块,可就没有这个文件系统
      • 一般来说,超级区块的大小为2014B
      • 每个区块群组可能含有超级区块,也可能不含有
    • 注意:一个文件系统仅有一个超级区块,为什么上面说每一个区块群组都可能含有区块群组哪?原因:若一个区块群组中的超级区块作为主区块,则其他群组内的超级区块将作为备份。这样超级区块受损时,就可以进行超级区块的恢复

    文件系统描述说明

    • 功能:
      • 用来描述每个区块群组的开始与结束的区块
      • 以及说明每个区段(超级区块、对照表、inode 对照表、数据区块)分别介于哪一个区块之间,这部分能够用dumpe2fs来观察

    区块对照表

    • 功能:
      • 记录使用与未使用的区块号码
      • 当你新增文件时,区块对照表会告诉哪个区块是空的,可以存放数据,这样你就可以很快的找到可使用的空间来处理文件
      • 如果你删除文件时,那么这些文件原来占用的区块号码就要释放出来。此时区块对照表就会将该区块号码的标志修改为“未使用的”

    inode对照表

    • 功能:
      • 与区块对照表的功能类似
      • 区块对照表记录的是使用与未使用的区块号码,inode对照表记录的则是使用与未使用的inode号码

    八、dumpe2fs命令

    • 功能:查询ext文件系统的设备的详细信息
    • 格式:
    dumpe2fs  [选项]  设备文件名
    • 参数
      • -b:列出保留为坏道的部分(一般用不到)
      • -h:仅列出超级区块(superblock)的数据,不会列出其他数据

    九、新建、读取一个目录或文件的步骤与区别

    目录

    • 当建立一个目录时,文件系统会分配一个inode与至少一个区块给目录
    • inode
      • 记录该目录的权限与属性
      • 记录该目录分配到哪个区块的号码
    • 区块
      • 记录这个目录下的各个文件名(重点:因此inode不会记录文件名,文件名是记录在目录的区块中)
      • 目录下各文件的inode号码
    • 举例:我们可以使用 ls -li 命令查看目录下个文件/目录的inode号码

    文件

    • 文件的结构特点,在上面已经介绍了

    十、读取一个目录或文件的步骤

    • 通过前面的文章可以知道,inode记录文件/目录的属性与权限
    • 下面我们以读取/etc/passwd文件做一个介绍。我们先列出/  /etc  /passwd三者的inode号

    • 上图步骤
      • 使用dongshao账号去读取时,dongshao一直属于其他人
      • 先找到/的inode号码为2,规定其他人有r-x权限,dongshao可以读取并进去
      • 再找到/etc的inode号码为393217,规定其他人有r-x权限,dongshao可以读取并进入
      • 再找到/etc/passwd的inode号码为400379,规定其他人有r--权限,因此dongshao可以读取

    十一、新建一个目录或文件的步骤

    • 通过上面介绍,我们知道了解了区块对照表与inode对照表的功能。那么,当我们去新建一个文件/目录时,就要借助到区块对照表与inode对照表了
    • 新建文件/目录时的步骤:
      • 先确定用户对于新增文件的目录是否具有w与x权限。有的话才能新增
      • 根据inode对照表找到没有使用的inode号码,并将新文件/目录的属性/权限写入
      • 根据区块对照表找到没有使用的区块号码,并将实际的数据写入区块中,且更新inode的区块指向数据
      • 将刚刚写入的inode区块数据同步更新到inode对照表与区块对照表,且更新超级区块的内容
    • 区块群组按其属性分为:
      • 数据存放区域:inode表与数据区块(都用来存放记录与数据)
      • 元数据:超级区块、区块对照表、inode对照表、文件系统描述(文件每次新增、删除、编辑都会影响到这几个区域,因此成为元数据)

    十二、日志文件系统

    为什么要使用日志式文件系统?

    • 我们使用ext2文件系统中的一种文件变动情况来说明
      • 当我们对文件进行操作时,出现了特殊情况(例如突然断电、系统内核发生错误等),那么写入的数据仅有inode对照表以及数据区块而已,最后一个同步更新元数据的步骤并没有完成,此时就会发生数据的内容与实际数据存放区不一致的情况
      • 早期的ext2文件系统中,如果发生了这种情况,那么系统在重新启动时,就会借助由超级区块当中记录的有效位(是否挂载)与文件系统状态(正确卸载与否)等状态来判断是否强制进行数据一致性的检查,若需要检查则以e2fsck这个程序来进行
      • 不过,这个检查真的是很浪费时间,因为要针对元数据区域与实际数据存放区来进行对比,得要检查整个文件系统,十分的浪费时间
      • 因此,为了更好的优化上面会出现的情况,就有了日志式文件系统

    日志式文件系统

    • 概念:为了避免上述提到的文件系统不一致的情况发生,文件系统当中规划出了一个区块,该区块专门用于记录写入或修改文件时的步骤
    • 记录步骤:
      • 预备:当系统要写入一个文件时,会现在日志记录区块中记录某个文件准备要写入的信息
      • 实际写入:开始写入文件的权限与数据。并更新元数据中的数据
      • 结束:完成数据与元数据的更新后,在日志记录区块当中完成该文件的记录
    • 优点:有了日志文件后,万一数据的记录在中途发生错误,我们的系统只要去检查日志记录区块就可以了。这就是日志式文件最基础的功能
    • 常见的日志式文件系统:ext3、ext4、ReiserFS、Windows' NTFS、IBM's JFS、SGI's XFS、ZFS

    十三、其他Linux支持的文件系统

    • 常见的支持的文件系统有:
      • 传统文件系统:ext2、minix、FAT(用vfat模块)、iso9660(光盘)等
      • 日志式文件系统:ext3、ext4、ReiserFS、Windows' NTFS、IBM's JFS、SGI's XFS、ZFS
      • 网络文件系统:NFS、SMBFS
    • 查看你的Linux所支持文件系统,可以查看:ls -l /lib/modules/$(uname -r)/kernel/fs
    • 系统目前以加载到内存中支持的文件系统有:cat /proc/filesystems

    十四、VFS

    • 常见的支持的文件系统有:
      • 传统文件系统:ext2、minix、FAT(用vfat模块)、iso9660(光盘)等
      • 日志式文件系统:ext3、ext4、ReiserFS、Windows' NTFS、IBM's JFS、SGI's XFS、ZFS
      • 网络文件系统:NFS、SMBFS
    • 查看你的Linux所支持文件系统,可以查看:ls -l /lib/modules/$(uname -r)/kernel/fs
    • 系统目前以加载到内存中支持的文件系统有:cat /proc/filesystems
    • 概念:Linux的内核功能,用于读取文件系统
    • 特点:整个Linux识别的文件系统其实都是VFS在进行管理,我们用户并不需要知道每个硬盘分区上面的文件系统是什么,VFS会主动帮我们做好读取的操作
    • VFS文件系统的示意图:

    十五、XFS

    介绍xfs文件系统之前,与ext系统做一个简单的比较

    • ext文件系统(支持度最广、但格式化超慢):ext系列的文件系统,在文件格式化时,采用的是规划出所有的inode、区块、元数据等数据,未来系统可以直接使用,不需要再进行动态配置,但是这个做法在早期磁盘容量还不大的时候可以使用。如今,磁盘的容量越来越大,连传统的MBR都已经被GPT取代。当使用磁盘容量在TB以上的传统ext系列文件系统在格式化的时候,会消耗相当多的时间
    • xfs文件系统(容量高,性能佳):由于虚拟化的应用越来越广泛,虚拟化磁盘来源的举行文件越来越常见,这些巨型文件在处理上考虑到刑恩那个问题,因此xfs比较适合高容量磁盘与巨型文件,且性能较佳的文件系统、

    XFS文件系统

    • 配置:几乎所有ext4文件系统有的功能,xfs都具备。xfs文件系统在数据的分布上,主要规划为3个部分
      • 数据区(data section)
      • 文件系统活动登录区(log section)
      • 实时运行区(realtime section)

    数据区(data section)

    • 概念:
      • 与之前文章谈到过的ext文件系统一样,包括inode、数据区块、超级区块等数据都存储在这里
      • 这个区域类似于ext文件系统的区块群组,不过xfs将这个区域分为多个存储区群组(allocation groups,AG)来分别放置文件系统所需要的数据
      • 重点:inode与区块都是系统需要用到时才动态配置产生,因此格式化操作很快
    • 存储区群组包含了:
      • 整个文件系统的超级区块
      • 剩余空间的管理机制
      • inode的分配与追踪
    • 与ext不同之处:xfs的区块容量与inode容量有多种不同的容量可供设置
      • 区块容量:可在512B-64KB之间调整(不过,在Linux环境下,由于存储控制的关系(页面文件pagesize的容量之故),因此最高可以使用的区块大小为4k。如果设置、高了也没问题,但是Linux内核不给挂载,格式化完之后也无法使用)
      • inode:容量可在256B-2MB之间,不过保留256B默认值就够用了

    文件系统活动登录区(log section)

    • 概念:
      • 这个区域主要用来记录文件系统的变化,有点像是日志区
      • 文件的变化都会在这里被记录下来,直到该变化完整地写入到数据区后,该条记录才会被结束
      • 如果文件系统因为某些缘故而损坏时,系统会拿这个登录区块来进行检测,看看系统挂掉之前,文件系统正在运行写啥操作,借以快速地修复文件系统
    • 注意:
      • 因为系统所有讲的操作都会在这个区块做记录,所以这个区块的磁盘活动相当的频繁
      • 另外,xfs设计这个区域中,可以指定外部的磁盘来作为xfs文件系统的日志区块。(例如:你可以将SSD磁盘作为xfs的登录区,这样可以更快速地工作)

    实时运行区(realtime section)

    • 概念:当文件要被建立时,xfs会在这个区段里面找到一到数个extent区块,将文件放置在这个区块内,等到分配完毕后,再写入到数据区的inode与区块中
    • extent区块:
      • extent区块的大小在格式化的时候就已经指定好了
      • 最小值是4K,最大可达1G。一般非磁盘列阵的磁盘默认为64KB
      • 这个extent最好不要乱动,因为会影响到磁盘性能

    xfs_info命令

    • 功能:查看xfs文件系统的超级区块内容
    • 格式:xfs_info 挂载点/设备文件名

    • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

    展开全文
  • 系统架构师】第一章:操作系统(1.2.4)管程 终于写完了第一块内容,这里是最难的。 剩下的就比较简单了,这章先介绍文件管理。 文件管理是对外部设备上的文件信息进行管理。我们这里介绍两种文件结构。 第一种是...
  • PB 后台调用外部EXE文件 防止多重启动之调用EXE(效果:第二次启动程序则前一进 程的窗口跳到最前) 后台调用外部EXE文件,判断该exe文件是否已经运行,如果已经运行就调出exe对应 的界面,否则则运行exe文件。 原理...
  • ext2文件系统初步

    千次阅读 2016-12-24 21:55:12
    认识 EXT2 文件系统Linux最传统的磁盘文件系统(filesystem)使用的是EXT2这个啦!所以要了解文件系统就得要由认识EXT2开始! 而文件系统是创建在硬盘上面的,因此我们得了解硬盘的物理组成才行,所以底下只会很快的...
  • Zynq Fatfs文件系统应用笔记

    千次阅读 2015-08-13 22:02:47
      Zynq Fatfs文件系统应用笔 Hello,panda  笔记介绍基于所描述的Zynq Fatfs基于Xilinx xilffsv3.0和Sdpsv...在开始介绍FatFs文件系统在Zynq实现之前一定要先对FAT32文件系统有一个清晰的了解。 1 FAT32文件...
  • 分布式文件系统及其部署

    千次阅读 2018-09-24 13:43:36
    DFS介绍 使用分布式文件系统可以轻松定位和管理网络中的共享资源、使用统一的命名路径完成对所需资源院的访问、提供可靠的负载平衡、与FRS(文件复制服务)联合在多台服务器之间提供冗余、与windows
  • linux文件系统分类和特点

    千次阅读 2017-08-19 22:36:29
    1、Linux文件系统分配策略: 块分配(blockallocation)和扩展分配(extentallocation): 块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致...
  • 玩转Windows多重启动的重要文件

    千次阅读 2006-06-29 08:21:00
    现在安装多重启动系统的朋友越来越多了,但是很少有人能够完全知道,在多重启动系统中的几个重要文件的作用是什么。下面让笔者简单地予以介绍,希望大家以后能关注这些文件,以备不时之需。 由于Windows 95/98/ME...
  • DFS分布式文件系统及其部署

    万次阅读 2015-07-09 23:44:51
    使用分布式文件系统可以轻松定位和管理网络中的共享资源、使用统一的命名路径完成对所需资源院的访问、提供可靠的负载平衡、与FRS(文件复制服务)联合在多台服务器之间提供冗余、与windows权限集成以保证安全。...
  • 使用GRUB2制作多重系统引导程序

    千次阅读 2019-05-29 13:40:48
    装了黑苹果后,同一硬盘多个分区,有不同的系统,为了统一管理... 文件系统 操作系统 引导方式 分区一(C:) NTFS Windows Bootmgr 分区二(D:) EXT4 Ubuntu linux/initrd 分区三(E:) ...
  • Linux的EXT2文件系统详解

    千次阅读 2017-08-16 17:17:16
    Linux的EXT2文件系统(inode) 1. 文件系统将inode和block初始是就规划好了,如果想要改变就需要格式化分区; 2. 为什么分区中要有多个块组(block group):因为文件系统太大的时候,因为inode和block的数量太大...
  • Linux文件系统及常用命令

    千次阅读 2016-03-08 22:00:00
    Linux文件系统介绍: 一 、Linux文件结构  文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。  Linux使用树状目录结构,在安装...
  • UNIX文件系统结构

    千次阅读 2018-02-13 00:05:19
    1 文件系统结构概述  磁盘在使用前,需要分区和格式化,格式化的主要作用就是在磁盘分区中创建文件系统,以此来确定文件的存储方式和索引方法,确定磁盘空间的分配和回收算法。  UNIX文件系统的存储方式有&lt;...
  • Linux磁盘与文件系统管理

    千次阅读 2016-06-26 22:26:51
    系统管理的重要任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文件无法存储的困扰。 认识EXT2文件系统 Linux最传统的磁盘文件系统使用的是EXT2。 ...
  • FATS文件管理系统STM32移植

    千次阅读 2019-10-25 09:56:37
    前言:本人移植的FATS的STM32F1代码已经上传到我的资源,如果有需要...1、 文件系统简介: (1)文件系统:管理和存储文件信息的软件机构。 (2)常用的文件系统: FAT/FATFS NTFS(基于安全性的文件系统,是W...
  • unix/linux文件系统基础知识

    千次阅读 2015-12-14 18:33:34
    1、linux文件系统分配策略: 块分配( block allocation ) 和 扩展分配 ( extent allocation ) 块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续...
  • NTFS 文件系统权限设置

    千次阅读 2013-05-21 21:20:05
    为了保证Windows系统的安全稳定,很多用户都是使用NTFS文件系统,因此共享文件夹的访问权限不但受到“共享权限”限制,还受到 NTFS文件系统的ACL(访问控制列表)包含的访问权限的制约。下面笔者就以“lyg”共享...
  • 解读多重启动引导文件——BOOT.INI

    千次阅读 2004-10-17 11:53:00
    2002-7-3 9:19:29出处:电脑爱好者 作者:- Windows NT类的*作系统,也就是Windows NT/2000/XP中,有一个特殊文件,也就是“BOOT.INI”文件,这个文件会很轻松地按照我们的需求设置好多重启动系统。 “BOOT.INI”...
  • ext2文件系统详解

    万次阅读 多人点赞 2018-08-24 20:58:21
    (boot sector),这个启动扇区可以安装启动管理程序, 这是个非常重要的设计,因为如此一来我们就能够将不同的启动管理程序安装到个别的文件系统最前端,而不用覆盖整颗硬盘唯一的 MBR, 这样也才能够制作出多重引导...
  • 一直以来,安装、维护系统,比较常用的都是使用光盘。但最近越来越觉得光盘随身携带麻烦,而且容易失效。一张光盘上的系统往往没到两年就被淘汰了。 因此,萌生了使用优盘进行系统维护的想法。既然是用于维护的,...
  • ext2文件系统采用的索引节点(inode): 索引节点采用了多重索引结构,主要体现在直接指针和3个间接指针。直接指针包含12个直接指针块,它们直接指向包含文件数据的数据块,紧接在后面的3个间接指针是为了适应文件...
  • 初窥Linux 之 ext2/ext3文件系统

    万次阅读 多人点赞 2013-02-22 21:38:33
    Linux最传统的磁盘文件系统(filesystem)使用的是ext2,所以要了解文件系统就得要由ext2开始。 一、文件系统特性 磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所...
  • 各种文件系统名词解释

    千次阅读 2017-10-16 14:06:23
    NFS:(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,...
  • 操作系统文件结构

    2017-09-04 16:34:20
    (1)连续结构 (2)多重结构 (3)转置结构 (4)顺序结构 文件的 物理存储 主要有: (1)顺序结构 (2)链接结构 (3)索引结构 文件的 目录结构 主要有: (1)一级目录结构 (2)二级目录结构 (3)树形结构 (4)无环图
  • 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备。在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集, 用git 仓库分布式存储。换句话说, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,204
精华内容 36,481
关键字:

多重文件系统