Linux系统磁盘分区全解析:轻松实现灵活存储和管理

1. 简介

Linux系统磁盘分区是一种将硬盘划分为多个逻辑部分的方法,每个分区可以独立进行文件系统的管理和存储空间的分配。通过合理地进行磁盘分区,可以轻松实现灵活存储和管理。本文将详细解析Linux系统磁盘分区的相关知识。

2. 分区表

2.1 主引导记录

主引导记录(Master Boot Record, MBR)是位于硬盘的第一个扇区的512字节的内容。它包含了引导程序和分区表。主引导记录的内容是由BIOS读取并执行的,从而引导操作系统的加载。

0000:  B8 00 00 00 00 7C FB 50  07 50 1F FC BE 1C 7C BF   .....|.P.P....|. 

0010: 1C 06 50 57 B9 E5 01 F3 A4 CB BD BE 07 B1 04 38 ..PW...........8

0020: 4A 75 09 B4 0E BB 07 00 CD 10 EB F2 88 56 04 88 Ju............V..

0030: 56 0E 89 56 10 8A 46 1A 88 45 09 C6 46 11 05 88 V..V..F..E..F...

0040: 45 0C C6 46 13 00 BF 22 06 B9 00 01 F2 A5 EA 1E E...F.."........

0050: 06 00 00 52 52 52 52 52 52 52 52 52 52 52 52 52 ...RRRRRRRRRRRR

0060: 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 RRRRRRRRRRRRRRRR

0070: 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 RRRRRRRRRRRRRRRR

....

01FE: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U.

上述代码展示了MBR的结构,其中0x00-0x1BD是分区表的内容,0x1BE-0x1FD是MBR的引导程序。

2.2 分区表

分区表记录了硬盘上各个分区的位置、大小和类型。每个分区表记录占用16个字节,MBR最多可以记录四个主分区或三个主分区和一个扩展分区。每个分区表记录的结构如下:

Offset   Length    Contents

------ ------ --------

0 1 Active Flag (0x80 for active)

1 3 Starting CHS address of partition

4 1 Partition type

5 3 Ending CHS address

8 4 Starting absolute LBA address

12 4 Number of sectors in partition

通过分区表,系统可以知道硬盘上各个分区的位置和大小,从而能够正确地加载和使用。

3. 磁盘分区类型

3.1 主分区

主分区是由分区表记录的一种类型,每个主分区都有一个唯一的设备名称,如/dev/sda1。主分区的数量受限于分区表的记录个数,最多可以有四个主分区。每个主分区都可以格式化为一个独立的文件系统,并且可以安装操作系统。

3.2 扩展分区

扩展分区是一种特殊的主分区,它可以被划分为多个逻辑分区。扩展分区的作用是扩展主分区的数量,从而允许创建更多的逻辑分区。扩展分区本身不包含文件系统,只是一个容器。每个扩展分区只能有一个,位于主分区之后。

3.3 逻辑分区

逻辑分区是在扩展分区内创建的分区,逻辑分区的数量没有限制,但实际上受限于扩展分区的大小。逻辑分区可以格式化为独立的文件系统,并且可以像主分区一样使用。

4. 磁盘分区工具

4.1 fdisk

fdisk是Linux系统中最常用的磁盘分区工具之一。通过fdisk,可以创建、删除和管理硬盘上的分区。以下是使用fdisk创建一个新分区的示例:

sudo fdisk /dev/sda

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First sector (2048-20971519, default 2048):

Using default value 2048

Last sector, or (2048-20971519, default 20971519):

Using default value 20971519

Command (m for help): w

The partition table has been altered!

Syncing disks.

上述示例中,我们使用fdisk工具创建了一个新的主分区/dev/sda1。我们指定了分区的起始扇区和结束扇区,默认值是2048和20971519,创建后使用w命令保存并退出。

4.2 gdisk

gdisk是一个用于GPT分区表的磁盘分区工具。GPT(GUID Partition Table)是一种新的分区表格式,相比MBR具有更好的扩展性和可用空间。以下是使用gdisk创建一个新分区的示例:

sudo gdisk /dev/sda

Command (? for help): n

Partition number (1-128, default 1):

First sector (34-5860533134, default = 2048) or {+-}size{KMGTP}:

Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}:

Hex code or GUID (L to show codes, Enter = AF00):

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!

Do you want to proceed? (Y/N): Y

上述示例中,我们使用gdisk工具创建了一个新的GPT分区/dev/sda1。我们指定了分区的起始扇区和结束扇区,默认值是2048和5860533134。创建后使用w命令保存并退出。

5. 挂载和卸载分区

5.1 挂载分区

挂载是指将文件系统关联到Linux系统中的某个目录,使得目录下的文件可以访问分区中的内容。使用mount命令可以挂载一个分区,以下是一个挂载分区的示例:

sudo mount /dev/sda1 /mnt

上述示例中,我们将/dev/sda1分区挂载到/mnt目录。

5.2 卸载分区

卸载是指解除文件系统与目录之间的关联,使得目录下的文件不再访问分区中的内容。使用umount命令可以卸载一个分区,以下是一个卸载分区的示例:

sudo umount /mnt

上述示例中,我们卸载了/mnt目录下的分区。

6. 注意事项

在进行磁盘分区时,有一些注意事项需要牢记:

备份重要数据:分区操作可能会导致数据丢失,因此在进行磁盘分区之前,一定要备份重要的数据。

正确选择分区类型:根据实际需求选择主分区、扩展分区或逻辑分区。

谨慎操作分区表:对分区表的修改是很危险的,一不小心就可能导致硬盘无法正常启动。

7. 总结

本文对Linux系统磁盘分区进行了全面解析,介绍了分区表、磁盘分区类型以及磁盘分区工具。通过合理地进行磁盘分区,我们可以实现灵活存储和管理,充分发挥硬盘的存储能力。

操作系统标签