04_Linux磁盘和文件系统

04_Linux磁盘和文件系统

文件系统简介

如果有自己组装电脑的经历的话应该知道,磁盘不是插在电脑上就能直接用的,还需要分区和格式化这些操作。这是因为每种操作系统,对于支持的文件系统格式都不相同,格式化就是为了能让磁盘变成这种操作系统可以使用的类型。

早期的windows系统使用FAT作为默认磁盘格式,从win7开始NTFS就是默认的主要磁盘格式了。相信接触电脑比较早的朋友,应该有记得那时候C盘的格式是和其他盘不一样的,不过现在还好已经统一了。

Linux也是一样,他的传统文件系统叫做Linux second Extended file system,也就是ext2。现在最新版本是ext4。

文件系统是如何运作的呢?Linux是将文件权限和数据分别放在不同的区块:

  • 超级区块:记录文件系统的整体信息,包括inode和数据区块的总量、使用量、剩余量以及文件系统的格式和信息
  • inode:记录文件属性、权限信息以及数据所在的区块号码
  • 数据区块:记录文件实际内容

显然,我们知道一个文件的inode信息,就能读到他的实际数据。这种文件系统叫做**索引式文件系统。**既然有索引的文件系统,那么也有无索引的文件系统。比如u盘常用的FAT格式就是无索引的。这也是为什么我们插u盘之后要过一会儿才能读到所有信息,因为它是无索引的,因此需要读完一个区块,才知道下一个区块是什么。

顺便,常说的碎片整理就是因为文件写入的区块过于零散,此时读取效率就会变得很差。通过碎片整理,将同一个文件的区块集合在一起,数据读取就会变得容易一点。

Linux是索引式,所以不太需要碎片整理。

Linux的inode

inode中,记录了文件的权限和属性,数据区块则是记录数据实际内容。文件系统一开始就规划好了inode与数据区块的对应关系,除非重新格式化,这个对应关系是不变的。

当硬盘太大的话,一个inode管理所有的数据区块显然是不合理的。实际上,系统格式化的时候是分多个区块群组(block group)的,每个群组有自己的inode和数据区块。有点像一个大公司,ceo管理多个事业部,每个事业部有自己的VP和其他员工。ceo就是总的inode,只要管理各个VP就可以了。

总的格式:

Boot Sector Block Group1 Block Group1 Block Group1

每个Block Group

Superblock 文件系统描述 区块对应表 inode对应表 Inode Table Data Block

数据区块

相信以前用虚拟光驱装过软件的朋友可能经历过,为什么有的镜像要分成上下两个呢。这是因为那时候单个文件有大小上限,在FAT16文件系统中,单个文件的最大大小通常限制在2 GB到4 GB之间。Linux也是一样,最小区块有1KB、2KB、4KB

目前的ext4系统,Block大小是4kb 单一文件最大2TB 最大系统总量16TB。

区块有以下特点:

  • 每个区块只能放一个文件的数据
  • 文件大于区块的话,用多个区块存放
  • 文件小于区块,该区块不能放其他文件

由这些特点很容易看出,如果选择4KB的区块,那么如果你的系统存储了很多小于4KB的单个文件,就会造成很多空间的浪费。然鹅实际上,现在硬盘技术发展很快,基本上都是使用4KB的区块,不再考虑这个浪费问题了。

目录树

在linux系统新建一个目录,系统会分配一个inode和至少一块区块。

# 使用ls -li可以看到具体区块
[root@node4 ~]# ls -li
总用量 24

相关推荐

  1. 04_Linux磁盘文件系统

    2024-04-01 13:46:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 13:46:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 13:46:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 13:46:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 13:46:04       18 阅读

热门阅读

  1. 使用Jackson进行序列化和反序列化

    2024-04-01 13:46:04       17 阅读
  2. Android笔记--MediaCodec(一)

    2024-04-01 13:46:04       13 阅读
  3. 英国生物数据库的申请流程

    2024-04-01 13:46:04       13 阅读
  4. flask+uwsgi+云服务器 部署服务端

    2024-04-01 13:46:04       22 阅读
  5. 【微服务篇】分布式事务方案以及原理详解

    2024-04-01 13:46:04       16 阅读
  6. 多线程(24)Future接口

    2024-04-01 13:46:04       15 阅读