Linux 文件系统是操作系统的核心组件之一,它负责管理磁盘空间、组织文件和目录,并提供对这些资源的访问接口。理解 Linux 文件系统的原理有助于更好地管理和优化存储设备。大家熟知的windows下,会有C盘、D盘,E盘,在设备管理器中可以看到,分别对应主分区,扩展分区,逻辑驱动器,所谓的分区,这么做为了方便数据管理、隔离,容量扩缩容等。
一、分区与分区表
1、分区
与windows 一样,在linux磁盘分区被分为三种主要类型:主分区、扩展分区和逻辑分区。每种类型的分区都有其特定的目的和限制。以下是它们之间的详细差别:
主分区(Primary Partition):
定义:主分区是直接位于磁盘上的分区,可以直接用于存储操作系统或文件系统。
数量限制:一个磁盘最多可以有4个主分区。这是因为传统的MBR(Master Boot Record)分区表只能容纳4个条目。
用途:通常用来安装操作系统。例如,在多启动环境中,每个操作系统可能占用一个主分区。
引导支持:主分区可以直接设置为可引导状态,这意味着可以从该分区启动操作系统。
扩展分区(Extended Partition)
定义:扩展分区本身并不用于存储数据,而是作为容器来容纳多个逻辑分区。它是一个特殊的主分区,允许你绕过MBR对主分区数量的限制。
数量限制:一个磁盘上最多只能有一个扩展分区,但它可以包含多个逻辑分区。
用途:主要用于当需要超过4个分区时。通过创建一个扩展分区,然后在其中创建多个逻辑分区,你可以突破4个主分区的限制。
引导支持:扩展分区本身不能设置为可引导,但其中的逻辑分区可以。
逻辑分区(Logical Partition)
定义:逻辑分区是创建在扩展分区内部的分区。它们不是直接写入磁盘的分区表中,而是由扩展分区管理。
数量限制:理论上可以在一个扩展分区内创建大量的逻辑分区,具体取决于分区工具和文件系统的限制。
用途:用于增加分区的数量,而不需要额外的主分区。逻辑分区常用于存放数据、应用程序或其他非操作系统相关的文件。
引导支持:虽然扩展分区本身不可引导,但在某些情况下,逻辑分区可以通过修改引导加载程序配置来实现引导功能(如GRUB支持从逻辑分区启动)。
2.分区表
MBR(Master Boot Record)和 GPT(GUID Partition Table)是两种不同的磁盘分区表格式,它们各自有独特的特性和适用场景。以下是关于 MBR 和 GPT 的详细说明:
MBR分区表:传统的主启动记录(MBR)分区表中最多4个主分区或者最多3个主分区+1个扩展分区,也就是说扩展分区只能有一个,其它的都是主分区,但是它们的总个数不能超过4个,且单个主分区的最大容量为2TB(=2048GB)。
GPT分区表:是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。在GPT分区表中,主分区和拓展分区个数最多为128个,但是拓展分区最多只有1个,而且单个主分区的大小最大容量为18EB(=18432PB =18874368TB =19327352832GB)
MBR 分区表特点:
•兼容性:MBR 是较老的分区格式,广泛应用于早期的 DOS 和 Windows 系统中,具有良好的向后兼容性。
•分区限制:
•最多支持 4 个主分区,或者 3 个主分区加 1 个扩展分区(扩展分区可以包含多个逻辑分区)。
•单个分区最大容量为 2TB(对于使用 512 字节扇区大小的传统硬盘来说)。
•结构:
•MBR 位于磁盘的第一个扇区(通常称为引导扇区),大小为 512 字节。
•包含一个 446 字节的引导代码、64 字节的分区表信息以及 2 字节的结束标志。
缺点:
•分区数量和大小受限:如上所述,最多只能有 4 个主分区,并且单个分区不能超过 2TB。
•数据冗余性差:如果 MBR 损坏,则整个磁盘的分区信息可能会丢失。
GPT 分区表特点:
•大容量支持:GPT 支持超过 2TB 的单个分区,理论上支持的最大磁盘容量为 9.4 ZB(泽字节)。
•更多分区:默认情况下支持多达 128 个主分区,理论上可以通过调整来支持更多的分区。
•冗余性:GPT 在磁盘的开头和结尾各存储了一份完整的分区表备份,提高了数据的安全性和恢复能力。
•唯一标识符:每个分区都有一个唯一的 GUID(全局唯一标识符),这使得操作系统更容易管理和识别各个分区。
•结构:
•GPT 包括保护 MBR(为了与旧系统兼容)、主 GPT 头部、主 GPT 表、备用 GPT 表等部分。
•主 GPT 表记录了所有分区的信息,而备用 GPT 表作为冗余备份存放在磁盘末尾。
优点:
•更高的可靠性和灵活性:由于 GPT 提供了更好的数据冗余机制和更大的分区数量及容量支持,因此更适合现代大容量硬盘和 SSD。
•增强的安全特性:例如,GPT 可以防止意外覆盖或删除分区,因为旧式工具在看到保护 MBR 后会认为磁盘为空。
使用场景选择
•MBR 更适合用于旧版本的操作系统和小容量磁盘(< 2TB),尤其是当您需要保持对较老硬件和软件的最大兼容性时。
•GPT 则是大容量磁盘(> 2TB)和新系统的首选,特别是 UEFI 引导模式下的系统,因为它提供了更强大的功能和更好的可靠性。
•磁盘分区格式依据
(1)若磁盘小于2TB,可用fdisk /dev/sdb 进行分区,即MBR分区格式;
(2)若磁盘大于2TB,可用parted /dev/sdb进行分区,因为MBR分区磁盘是不能大于2.2TB,所以超过2TB一般使用GPT分区格式;
一般情况下,我们都是选择使用fdisk工具来进行分区,但是目前在实际生产环境中使用的磁盘空间越来越大,呈TiB级别增长;而常用的fdisk这个工具对分区是有大小限制的,它只能划分小于2T的磁盘,划分大于2T磁盘分区的时候fdisk就无法满足要求了;这个时候有2个方法,其一是通过卷管理扩容卷来增大磁盘空间,其二就是通过parted工具来实现对GPT磁盘进行分区操作。
注意事项
•如果要安装 Windows 操作系统,需要注意的是:
•Windows 7 或更高版本可以在 BIOS 模式下使用 MBR 分区,在 UEFI 模式下则必须使用 GPT 分区。
•老版本 Windows(如 XP)不支持 GPT 分区,除非是 64 位 Itanium 版本。
二、文件、目录 、Inode
理解文件、目录和 inode 的关系对于有效地管理和维护 Linux 文件系统至关重要。此外,在遇到文件系统问题时,了解这些概念也有助于更准确地诊断和解决问题。以下是文件、目录、Inode相关概念
文件 (File):文件是存储在磁盘上的数据集合。它可以是文本文件、二进制文件、图像、视频等。
•属性:
•文件名:用户给定的标识符,但请注意,文件名并不是文件的一部分,它只是指向文件的一个链接。
•文件类型:如普通文件、目录、符号链接、字符设备、块设备等。
•文件权限:定义了谁可以读取、写入或执行该文件。
•文件大小:文件内容的实际字节数。
•时间戳:创建时间、上次修改时间和上次访问时间。
目录 (Directory):目录是一种特殊的文件,用于组织其他文件和目录。它实际上是一个包含文件名到 inode 号映射的列表。
•结构:
•每个目录条目包含一个文件名和与之关联的 inode 号。
•目录可以嵌套,形成树状结构,允许复杂的文件组织方式。
•特殊目录:
•. 表示当前目录。
•.. 表示父目录。
Inode (索引节点):inode 是文件系统中的一个数据结构,包含了文件的所有元数据(metadata),除了文件名和实际的数据块外。
•内容:
•文件类型(如普通文件、目录等)
•文件权限
•文件拥有者(用户 ID 和组 ID)
•文件大小
•时间戳(创建时间、修改时间、访问时间)
•链接数(有多少个硬链接指向这个 inode)
•数据块位置(指向文件数据所在的物理地址)
关键点
•文件名与 inode 的关系:文件名只存在于目录条目中,而真正的文件信息保存在 inode 中。这意味着多个文件名可以指向同一个 inode(即硬链接),只要不删除最后一个链接,文件就不会被真正删除。
•硬链接 vs 符号链接:
•硬链接:创建一个新的文件名指向现有的 inode。更改其中一个链接的内容会影响所有链接,因为它们共享相同的数据块。
•符号链接(软链接):创建一个新的文件,其中包含指向另一个文件路径的信息。如果原始文件被删除,符号链接将失效。
磁盘格式化后区与 文件系统 Inode关系如下:
目录与Inode 、数据块之间的关系