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