AI智能
改变未来

『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍

[toc]

在了解Linux的文件系统管理之前,先简单了解一下硬盘的结构。

1、了解硬盘结构(了解即可)

(1)硬盘的逻辑结构

如下图所示:

说明

  • 上图中一圈一圈的同心圆(蓝色部分),我们称之为磁道。数据就存放在磁道当中。
  • 从磁盘的中心向外发散切割线,这切割先和磁道的重叠区域就是一个扇区。
  • 每个扇区的大小事固定的,为
    512Byte

    。扇区也是磁盘的最小存贮单位。

接下来我们从侧面看,如下图所示:

说明

  • 硬盘的大小是使用**“磁头数×柱面数×扇区数×每个扇区的大小”**这样的公式来计算的。
  • 磁头数(
    Heads

    )表示硬盘总共有几个磁头,也可以理解成为硬盘有几个盘面,然后乘以二(磁头在磁盘两面都有);

  • 柱面数(
    Cylinders

    )表示硬盘每一面盘面有几条磁道(就是把磁盘横过来,磁盘是有厚度的,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。也可以说成磁道就是一个柱面,有多个磁道,就有多少个柱面数,磁盘的柱面数与一个盘面上的磁道数是相等的。)

  • 扇区数(
    Sectors

    )表示每条磁道上有几个扇区;每个扇区的大小一般是

    512Byte

硬盘示例图如下:

以上就是机械师硬盘,他的优点是,容量大,价格便宜。缺点,由于是物理结构的磁盘,需要转动磁盘来存储或者读取数据的,转速越快,存取效率越高。普通硬盘转速一般7200转每分钟,转速越高,硬盘发热量越大。(注意磁头是不搭在磁盘上的,是悬空的。)

(2)硬盘接口

硬盘接口的种类如下:

  • IDE硬盘接口(
    Integrated Drive Electronics

    ,并口,即电子集成驱动器)也称作"ATA硬盘"或"PATA硬盘”,是早期机械硬盘的主要接口,ATA133硬盘的理论速度可以达到133MB/s(此速度为理论平均值),IDE硬盘接口。(基本淘汰)

  • SATA接口(
    Serial ATA

    ,串口)是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是SATA三代,理论传输速度达到600MB/s(此速度为理论平均值)。

  • SCSI接口(
    Small Computer System Interface

    ,小型计算机系统接口)广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU占用率低及支持热插拔等优点,理论传输速度达到320MB/s。(已淘汰)

2、Linux文件系统介绍

文件系统管理也就是分区管理。

(1)Linux文件系统的特性

  • super block

    (超级块):记录整个文件系统的信息,包括

    block

    inode

    的总量,已经使用的

    inode

    block

    的数量,未使用的

    inode

    block

    的数量,

    block

    inode

    的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间等。

  • date block

    (数据块,也称作

    block

    :用来实际保存数据的(相当于柜子的隔断),

    block

    的大小(1KB,2KB或4KB->默认)和数量在格式化后就已经决定,不能改变,除非重新格式化(制作柜子的时候,隔断大小就已经决定,不能更改,除非重新制作柜子)。每个

    blcok

    只能保存一个文件的数据,要是文件数据小于一个

    block

    块,那么这个

    block

    的剩余空间不能被其他文件使用;要是文件数据大于一个

    block

    块,则占用多个

    block

    块。Windows中磁盘碎片整理工具的原理就是把一个文件占用的多个

    block

    块尽量整理到一起,这样可以加快读写速度。

  • inode

    i

    节点,柜子门上的标签,128字节):用来记录文件的权限(

    r

    w

    x

    ),文件的所有者和属组,文件的大小,文件的状态改变时间(

    ctime

    ),文件的最近一次读取时间(

    atime

    ),文件的最近一次修改时间(

    mtime

    ),文件的数据真正保存的

    block

    编号。每个文件需要占用一个

    inode

提示:这里所说的是Linux文件系统的特性,不是很准确,应该是VFS虚拟文件系统(

Virtual File System

)的特性。具体可以看下面评论中有说明。

(2)Linux常见文件系统

  • ext

    :Linux中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用。

  • ext2

    :是

    ext

    文件系统的升级版本,

    Red Hat Linux 7.2

    版本以前的系统默认都是

    ext2

    文件系统。于1993年发布,支持最大16TB的分区和最大2TB的文件(1TB=1024GB-1024× 1024KB)。

  • ext3

    ext2

    文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时,提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。

  • ext4

    :是

    ext3

    文件系统的升级版。

    ext4

    在性能、伸缩性和可靠性方面进行了大量改进。

    ext4

    的变化可以说是翻天覆地的,比如向下兼容

    ext3

    、最大1EB文件系统和16TB文件、无限数量子目录、

    Extents

    连续数据块概念、多块分配、延迟分配、持久预分配、快速

    FSCK

    、日志校验、无日志模式、在线碎片整理、

    inode

    增强、默认启用

    barrier

    等。它是

    CentOS6.x

    的默认文件系统。(说这么多,意思就是

    ext4

    文件系统比前三个强很多)

  • xfs

    :XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下,保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前

    CentOS 7.x

    XFS+LVM

    作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。(以上都是Linux系统中的文件系统,知道越新越好就可以了。 )

  • swap

    swap

    是Linux中用于交换分区的文件系统(类似于Windows中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的2倍,但是不要超过2GB,它是Linux的必需分区。

  • NFS

    NFS

    是网络文件系统(

    Network File System

    )的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源。

  • iso9660

    :光盘的标准文件系统。Linux要想使用光盘,必须支持

    iso9660

    文件系统。

  • fat

    :就是Windows下的

    fat16

    文件系统,在Linux中识别为

    fat

  • vfat

    :就是Windows下的

    fat32

    文件系统,在Linux中识别为

    vfat

    。支持最大32GB的分区和最大4GB的文件。

  • NTFS

    :就是Windows下的

    NTFS

    文件系统,不过Linux默认是不能识别

    NTFS

    文件系统的,如果需要识别,则需要重新编译内核才能支持。它比

    fat32

    文件系统更加安全,速度更快支持最大2TB的分区和最大64GB的文件

  • ufs

    :Sun公司的操作系统

    Solaris

    SunOS

    所采用的文件系统。(用不着,了解一下即可)

  • proc

    :Linux中基于内存的虚拟文件系统,用来管理内存存储目录

    /proc

    。(了解一下即可)

  • sysfs

    :和

    proc

    一样,也是基于内存的虚拟文件系统,用来管理内存存储目录

    /sysfs

    。(了解一下即可)

  • tmpfs

    :也是一种基于内存的虚拟文件系统,不过也可以使用

    swap

    交换分区。(了解一下即可)

3、整理一下对文件系统的认识

我们以前说一个分区,会分成两个部分,一小部分为上半部分,下面大部分为下半部分。

上半部分会分成一个一个

i

节点信息,理论上每个文件都会有自己唯一的i节点信息(如果遇到硬链接,两个文件的

i

节点就会一样)。

下半部分会分成一个一个

block

(数据块),在Linux系统下默认是4KB,用于存储数据。

如下图:

上边的图今天要稍微变一下。

在我们的电脑上一般一个分区100GB,

block

块默认是4KB,所以100GB大小的分区,要有2500万+个

block

块。可以说是一个非常大的数字,这样会非常不好管理。

我们真正分区中系统文件的结构是如下:

首先一个分区,会在一个分区的开头,用一部分很小的空间,组成一个超级块。超级块的作用看上边,每个分区都会有一个超级块。

查看超级块信息,用下面命令。

[root@localhost ~]# dumpe2fs -h + 分区号(/dev/sda1)

然后该分区中的

block

块太多了,就在该分区中形成一些块组。在块组中,在进行上面形式的划分。

查看块组信息

[root@localhost ~]# dumpe2fs + 分区号(/dev/sda1)

Linux文件系统结构如下:

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍