一.文件系统和磁盘时密切相关的,所以要了解文件系统,我们先要对磁盘功能和存储原理有所了解

磁盘

物理上:是一些同轴旋转地刚性磁片。

磁盘原理与文件系统_第1张图片

  1. 低格:出厂时首先就会做的,将磁盘划成n个同心圆,这些同心圆叫成为磁道。我 们把把这划分磁道的过程成为低格。
  2. 柱面(cylinder):相同编号的位于不同盘片上的磁道的组合。柱面是在磁道上从外向内一次排的0,1,2,3,………柱面。注:磁道是一个盘面上一个个同心圆,而柱面是不同盘片上的相应的同心磁道的整体。
  3. 分区:根据柱面划分的,从最外磁道的0柱面向内分别节去n个柱面作为C,D,E..也由于外磁道的0柱面开始的分区相对于别的区在同样的转速下读取速度要快,所以C盘常作为系统盘。
  4. 文件是靠文件的节点号识别的,目录中存放的就是这些节点号
  5. 文件管理系统:就是实现对文件的桉名存取的一种管理机制,一种管理软件。
  6. 在高个是就创建了文件系统。也就是每次你格式化磁盘时让你选择格式化方式就是装那种文件管理系统。

二.Linux支持文件系统的类型

     1.ext2 (日志文件系统)   ext4

        ext3 :Linux默认使用这个,并且支持ACL(访问控制列表)

     2.reiserfs(在功能性能上要比ext2,ext3都要好,同时反删除功能也要比ext2,ext3强很多。)

      3.jfs jfs2'

      4.xfs

      5.也支持windows的fat32和ntfs.

      6.NFS (网络文件系统)

       7.GFS    GFS2(集群文件系统)

       8.OCFS(Oracle的集群系统)

       9.ZFS(sun公司的文件系统,是支持64位的文件系统)(现在的sun归属去Oracle,前途未卜啊!)

linux之所以能支持这么多文件系统是因为上层的磁盘调用和文件系统之间有VFS(虚拟文件系统),能够完成转化。

磁盘原理与文件系统_第2张图片 磁盘原理与文件系统_第3张图片

 

          10.IOS9660(光盘文件系统)

三.  文件系统存储的数据分类

    1.真实的文件数据User Data

     2.无用的用的数的数据Metadata(元数据)(文件名,节点号等信息)

   元数据:存储了文件系统机构信息的数据。(superblock超级块,inode节点号,directory目录)

3.更多的文件系统信息我们可以查ext2开发者写的《Design and Implementation of the Second Extended Filesystem》,有关ext2的实现和磁盘   的存储原理(http://e2fsprogs.sourceforfe.net/ext2intro.)

 

四.了解文件在磁盘上的存储原理

  1. 磁盘格式化后会将磁盘分成N个块(block)。
  2. 块组0是引导块,快组1往后分别是超级块,索引节点表,数据块。
  3. 节点号2始终固定的指向根目录(/).
  4. 磁盘原理与文件系统_第4张图片 
    • 引导块—>GRUB/LILO
    • 超级块--->空闲索引节点,空间数据块表
    • 索引节点表---->文件相关信息及文件位置
    • 数据块---->存储数据

    5..inode所存放的数据

  • 文件所有者ID:该文件的所有者ID和说数组ID
  • 文件存取权限:系统按三类实施保护。owner,group,other.每类都有r w x
  • 文件的存取时间:文件最后一次修改的时间,最后一次被存取时间,最后一次inode修改时间。
  • 文件链接数:表示有多少个文件名指向该文。
  • 文件数据地址表:指出含有文件数据的磁盘地址位置。
  • 文件长度:记录了文件大小。

磁盘原理与文件系统_第5张图片

 

6.超级块所存放数据

  • 幻术
  • 修订级别
  • 挂装技术和最大挂装计数
  • 组块编号
  • 数据块大小
  • 每组数据块个数
  • 空闲数据块
  • 空闲索引节点
  • 锁子段
  • 首索引节点

  7.文件定位过程

      路径和名称--->索引节点----->数据

五.文件系统在磁盘上存储改动数据的过程

    1.cp

        拷贝是另外新建了节点号,改了名字,而节点并不改变。

      image

      磁盘原理与文件系统_第6张图片

 

       2.mv

            同目录下的剪切只复制一个原节点号,删除了以前的节点号,改了名字,而节点并不变。

 

             image

             image

             磁盘原理与文件系统_第7张图片

         3.rm

                删除时只是删除了节点号,节点中数据并没有动,但索引表为给超级块说明这儿节点已经是空的了,下次拷入的数据就会覆盖以前的

 

        4..创建链接

             链接分为硬链接和软链接。

    • 硬链接(Hard Links):仅仅是创建了指向同一文件的路径,或两个以上的路径可以指向同一文件。即两个路径指向了同一节点号。

                       image

                           link count 即用户所属主前边的位显示的就是此文件被连接的次数

      • 目录的link count至少为2,因为有自己还有父目录。
      • 硬链接创建不能跨越分区,不能建立在目录上。
      • 硬链接的建立只需要用ln命令

              磁盘原理与文件系统_第8张图片 

  此命令创建了a的链接b.我们看到创建硬链接是节点号并没有变

   - i:显示链接号 

       ls –i :显示当前目录下的所有文件或目录的链接号。

   让我们跨分区建立一个硬连接试试!!

磁盘原理与文件系统_第9张图片

我看到/和home不再一个分区,报错我们不能建立。

 

    1. 软链接(Symbolic Links)

                创建了一个链接原链接位的链接号。

           如果我们还是那a,但这次创建一个软链接b。将是a与b的节点号不再一样。因为此时/root/a--->inode,而b确实/root/link/b--->/root/a/---->inode磁盘原理与文件系统_第10张图片

我们看到它们的节点号并不一样。

             ls  -s  :是创建软链接

如果我们将b删除,并没么事,元数据还在,但要是我们把a删除,系统将会报错,这不是一个存在的链接,红框区会不停的闪动报错。

磁盘原理与文件系统_第11张图片

六。查看磁盘

1.pf :显示磁盘的使用情况的。

   磁盘原理与文件系统_第12张图片

Filesystem:有那几个分区。

blocks:分区大小。

Used:已经使用了多少。

Available:还剩多大空间。

Use%:使用的百分比。

Mounted on:分区挂载在哪个目录下。

  • -h :一比较好识别的方式显示。

磁盘原理与文件系统_第13张图片

  • 还可单独查询某个目录的磁盘使用情况。

image

  • -i :可以显示某一分区节点号的信息情况

 

磁盘原理与文件系统_第14张图片

 

2。pu

    用来估计文件所占磁盘空间的使用情况的,同时他也可以估计目录所占磁盘空间的使用情况。

例如:文件

image

目录

磁盘原理与文件系统_第15张图片

如果直接就跟目录,它是会将目录下的每个文件的磁盘使用情况都分别显示出来

  • -s:总的估计目录磁盘空间使用
  • -h:友好显示。

image