跳转到内容

Ict-创新/LPI/102.1

来自维基教科书,开放世界中的开放书籍

102.1 设计硬盘布局

[编辑 | 编辑源代码]

考生应该能够为 Linux 系统设计磁盘分区方案。


关键知识领域

  • 将文件系统和交换空间分配到单独的分区或磁盘。
  • 根据系统的预期用途定制设计。
  • 确保 /boot 分区符合启动的硬件架构要求。
  • 了解 LVM 的基本功能。

安装操作系统时,您需要设计硬盘分区的布局并选择用于格式化的文件系统。您的选择将取决于您拥有的海量存储设备的数量和大小以及计算机的使用目的。

Linux 在块设备上创建文件系统。只能顺序访问数据的设备,如键盘和鼠标,是字符设备,但硬盘等设备可以随机访问数据,称为块设备。每种类型的设备都具有不同的功能,以满足数据访问方法的差异。Linux 内核的设备映射器框架允许在块设备上创建虚拟块设备,文件系统可以在其上创建。

虚拟块设备的优点是,Linux 可以提供加密驱动器和 RAID 设备等功能,而无需专门的硬件。虚拟块设备允许创建 LVM(逻辑卷管理器)驱动器和使用 mdadm 的软件 RAID 例如。

在本手册中,我们将仅涵盖直接映射到底层硬盘的块设备驱动程序。即,我们排除虚拟块设备驱动程序,并查看直接在物理磁盘分区上创建文件系统。

在讨论 Linux 系统时,“分区”一词在几个不同的上下文中使用。有时它用于指代硬盘上的分区,而在其他情况下,它用于指代目录的位置。例如,根分区(包含核心 Linux 配置文件)实际上可能跨越多个磁盘分区,例如,如果它是在 LVM 块设备上创建的。

硬盘分区

[编辑 | 编辑源代码]

最初,X86 机器硬盘仅支持最多 4 个分区,因为当时,这被认为对任何人的需求来说已经绰绰有余。现在,在一个磁盘上拥有超过 4 个分区是很常见的。为了克服 4 个分区限制,以向后兼容的方式,标准被扩展为允许创建其中一个主分区作为“扩展分区”,这允许在扩展分区上创建多个“逻辑分区”。

图 102.1-1:硬盘分区

X86 架构最初支持的 4 个分区称为主分区。如果您需要超过 4 个分区,那么至少需要创建一个主分区作为扩展分区。然后,扩展分区可以拥有在其上创建的多个逻辑分区。

在 Linux 下,主分区被分配数字 1-4,具体取决于正在创建的主分区。扩展分区(只能有一个)被分配数字 4,逻辑分区被分配大于 4 的数字。因此,对于主连接器上的主 PATA 驱动器,第一个主分区将是 /dev/hda1,第三个主分区将是 /dev/hda3,而扩展分区将是 /dev/hda4,第一个逻辑分区将编号为 /dev/hda5。可以跳过主分区编号,因此可以拥有以下磁盘布局:/dev/hda1、/dev/hda3 以及 /dev/hda5 /dev/hda6 /dev/hda7,分别用于第一个主分区、扩展分区,然后是扩展分区上的两个逻辑驱动器 (hda3)。

如果您打算拥有超过 4 个分区,请务必确保为其中一个主分区创建一个扩展分区,因为无法将主分区转换为扩展分区。如果您需要扩展分区,并且所有主分区都已使用,则需要删除其中一个主分区才能创建扩展分区。

常见的分区方案

[编辑 | 编辑源代码]

您可能会问为什么要对硬盘进行分区,在某些情况下,尤其是台式计算机,可能不需要提供超过两个分区。您始终需要至少两个分区来满足 Linux 处理虚拟内存的方式。虚拟内存是内核告诉其应用程序可用的内存量,这通常会超过可用的物理内存量。为了容纳实际上并不存在的额外内存,内核使用硬盘空间作为虚拟内存。用于管理虚拟内存以及内存到磁盘和磁盘到内存交换的算法超出了本手册的范围。需要了解的是,内核需要一个称为交换空间的特殊磁盘分区来用于虚拟内存管理。

除了交换空间之外,还有其他使用额外分区的理由,尤其是在拥有多个磁盘的机器中。这些包括:防止日志文件和临时文件占用太多磁盘空间,通过将读写操作拆分到不同磁盘上的分区来提高磁盘性能,规划磁盘扩展以及为将来创建灵活的布局。如果您有多个磁盘,将文件系统拆分到多个磁盘上将有助于隔离系统部分,使其免受不同驱动器中磁盘故障的影响。即使是在只能容纳一个驱动器的笔记本电脑的情况下,也有充分的理由创建灵活的磁盘布局,例如,您可能需要在以后适应多启动环境,或者使运行带有虚拟硬盘的虚拟机变得更容易。

但是,应注意不要创建太多分区,尤其是当您没有利用 Linux 内核的虚拟块设备之一(如 LVM)时,这些设备允许将磁盘分区动态分配给文件系统,因为常见的问题是在一个分区上用完磁盘空间,而在另一个分区上仍有可用空间,因此请仔细规划您的磁盘分区策略。


一些小型系统的常见磁盘分区


/boot 分区 通常为 50-100 MB,位于第一个分区,以确保所有内核都低于旧内核 BIOS 的 1024 个柱面限制。
交换 交换空间分配取决于可用的物理 RAM 量。关于交换空间分区最佳大小的争论很多,尤其是因为大多数系统中可用的物理内存量正在增加,但一般经验法则是使用可用 RAM 量两倍,但建议最大约为 1 GB。
/ 根文件系统分区包含其余的 Linux 操作系统,通常应分配剩余的磁盘空间。如今,大多数发行版将在逻辑分区上安装根分区,以允许将来需要时创建超过 4 个分区的可能性。如果所有可用空间都已分配给根分区,则可能需要调整根分区的大小,以便在执行此操作之前释放空间。
大型系统分区策略


/boot 分区 100 MB-250 MB 在更现代的计算机中,没有 1024 个柱面限制,您可能希望为启动分配更多空间以容纳更多内核。将 /boot 分开可能很有必要,尤其是如果其余文件系统加载到启动加载程序无法原生访问的虚拟块设备上,例如根文件系统位于软件 RAID5 块设备上。
交换 如上所述
/home /home 目录用于保存所有用户数据和文档。单独的分区意味着备份数据更容易,并保护内核和其他核心系统文件,使其不会因为用户在其主目录中存储太多数据而耗尽磁盘空间。
/usr /usr 目录包含用户应用程序。通常,/usr 目录的大小不会增长太多,并且相当静态。
/var /var 目录包含系统日志文件。日志文件,尤其是没有正确维护的日志文件,会迅速填满磁盘空间。通过将 /var 目录放在不同的驱动器上,可以保护系统其余部分免受磁盘空间耗尽的影响。
/tmp /tmp 目录用于存放所有临时文件。该目录应在重新启动或用户注销时清理,但通常会遗留一些文件。随着时间的推移,这会导致系统耗尽磁盘空间。将 /tmp 放在其自己的目录中可以保护系统其余部分免受这种情况的影响。
/ 文件系统的其余部分。

如何使用 fdisk 进行分区

[编辑 | 编辑源代码]

在安装过程中,您可能会看到一个图形界面来对磁盘进行分区,但通常在创建或编辑驱动器分区时,您将使用一个名为 fdisk 的实用程序。

fdisk 命令将您希望分区的块设备作为参数。例如,要对 PATA 驱动器的主连接器上的主驱动器进行分区,该命令将是

# fdisk /dev/hda

fdisk 实用程序提供了一个命令提示符,用于在块设备上创建和删除分区。在提示符处按下“m”将提供一个可以在块设备上执行的可能操作列表。

命令操作选项

a 切换可启动标志

b 编辑 bsd 磁盘标签

c 切换 dos 兼容性标志

d 删除分区

l 列出已知分区类型

m 打印此菜单

n 添加新分区

o 创建新的空 DOS 分区表

p 打印分区表

q 不保存更改退出

s 创建新的空 Sun 磁盘标签

t 更改分区的系统 ID

u 更改显示/条目单位

v 验证分区表

w 将表写入磁盘并退出

x 额外功能(仅限专家)

创建分区

在命令提示符下键入“n”将提示您是否要创建扩展分区或主分区。

命令操作

e 扩展

p 主分区(1-4)

通常,最好至少创建一个扩展分区。创建扩展分区后,后续创建新分区的请求将提示您是否要创建逻辑分区或主分区,假设您没有创建最大数量的主分区。

命令操作

l 逻辑(5 或以上)

p 主分区(1-4)

分区硬盘后,您需要决定分区的类型。要获取分区类型列表,请在 fdisk 提示符下键入“l”。这将列出大量潜在的分区类型,但您感兴趣的类型是

82 Linux 交换区

83 Linux

8e Linux LVM

85 Linux 扩展

出于本手册的目的,我们只考虑分区 ID 82 和 83。类型 8e 和 85 是用于创建虚拟块设备的分区类型的示例。


使用文件系统格式化分区

文件系统是在硬盘上以计算机可访问的形式存储数据的一种方式。不同的文件系统具有不同的算法和结构来确定数据和索引信息(计算机用来查找数据)的存储位置。与文件系统组织相关的元数据存储在磁盘上的称为超级块的区域中。超级块包含计算机在磁盘上查找文件和数据的关键信息。为了防止文件系统在超级块损坏时变得不可访问,Linux 文件系统在定义的偏移量处存储了超级块的多个副本。一些流行的 Linux 文件系统包括

ext2 – Linux 机器上最古老且支持最广泛的文件系统。

ext3 - ext2 文件系统的扩展,它添加了日志记录支持

reiserfs - 由 Hans Reiser 编写的增强型日志记录文件系统

有关文件系统以及如何创建它们的更多信息,请参见第 104.1 节


管理交换空间

我们在本章前面介绍了交换空间。交换空间不包含文件系统,而是由 Linux 内核以原始模式访问。绕过文件系统具有一些速度优势,这对交换空间至关重要。在创建用作交换空间的磁盘分区后,您需要使用以下命令激活它

swapon [设备] 例如 swapon /dev/sda2

在系统安装过程中,这将自动为您完成。可以使用 swapon 显示有关交换分区的的信息。

swapon -s # 显示可用的交换分区


挂载文件系统分区

创建文件系统分区后,需要挂载它才能使其对系统可用。挂载点使文件系统分区在根目录(/)下的定义明确的位置可用。Linux 遵循定义明确的文件系统层次结构,在正确挂载点挂载分区对于系统的正常运行至关重要。

挂载点在 /etc/fstab 配置文件中定义。

了解 LVM 的基本功能

什么是 LVM?

LVM 是 Linux 操作系统的逻辑卷管理器,它是一种将硬盘空间分配到逻辑卷中的方法,这些逻辑卷可以轻松调整大小,而不是分区。LVM 有两个版本

  • LVM 2 – LVM 的最新版本,适用于 Linux。LVM 2 向后兼容使用 LVM 1 创建的卷。LVM 2 使用设备映射器内核驱动程序。设备映射器支持在 2.6 内核树中,并且有针对当前 2.4 内核的补丁程序可用。
  • LVM 1 – 2.4 系列内核中的版本。

一个或多个硬盘驱动器分配给一个或多个物理卷,但物理卷不能跨越多个驱动器。物理卷组合成逻辑卷组,不包括引导分区。引导分区不能包含在逻辑卷组中,因为这会使引导加载程序难以读取它。因此,如果您的根 / 分区位于逻辑卷上,您应该确保创建一个单独的 /boot 分区,并且该分区不属于任何卷组。由于物理卷不能跨越多个驱动器,因此要跨越多个驱动器,请为每个驱动器创建一个或多个物理卷,然后通过逻辑卷组将它们链接在一起。.

我们从底部开始,或多或少。

物理介质

物理这个词简单地指硬盘或分区。例如,/dev/hdc、/dev/hdc1、/dev/sda。

物理卷 (PV)

PV 无非是物理介质或硬盘,添加了一些 LVM 可以识别的管理数据。


+ -[ Physical Volume ]- +
| PE | PE | PE | PE |
+-----/dev/hda1-----+

物理扩展 (PE)

物理扩展只是大块,通常大小为兆字节。卷组 (VG) :- VG 由多个物理扩展组成(可能来自多个物理卷或硬盘)。一般可以认为 VG 由多个硬盘组成(例如 /dev/hda 和 /dev/sda),但更准确地说,它是由可能由多个硬盘提供的 PE 组成


         + - - - - - - - - [ Volume Group ] - - - - - - - +
 |  +-----[PV]-----+  +-----[PV]------+  |
 |  | PE | PE | PE |  | PE | PE | PE  |  |
 |  +-- /dev/sda1--+  +---/dev/sdb1---+  |
         + - - - - - - - - - - - - - - - - - - - - - - - - - - - -+     

逻辑卷 (LV) 逻辑卷是我们工作的最终结果,我们将在那里存储信息。这等同于分区的历史概念。


         + - - - - - - - [ Volume Group ] - - - - - - - - - - -+
 |  +--[PV]--------+  +--[PV]---------+  |
 |  | PE | PE | PE |  | PE | PE | PE  |  |
 |  +--+---+---+---+  +---+--+----+---+  |
 |     |   |   | +------|    |    |      |
 |     |   |   | |           |    |      |
 |   +-+---+---+-+      +----+----+--+   |
 |   |  Logical  |      |  Logical   |   |
 |   |  Volume   |      |   Volume   |   |
 |   |           |      |            |   |
 |   |  /home    |      |    /opt    |   |
 |   +-----------+      +------------+   |


这向我们展示了两个文件系统,跨越两个磁盘。/home 文件系统包含 4 个物理扩展,/opt 文件系统包含 2 个。基本 LVM 命令:以下命令可用于显示物理卷、卷组和逻辑卷状态:pvdisplay、vgdisplay 和 lvdisplay。

一个说明 LVM 有用性的场景:假设您有一个 20GB 的磁盘,您使用 15GB 创建“/home”分区,使用 1GB 创建 /var。想象一下,您空间不足,决定需要在“/home”中使用 18GB。使用旧的分区概念,您必须拥有至少 20GB 的另一个驱动器。然后,您可以添加磁盘,创建一个新的 /home,并将现有数据复制过去。但是,使用 LVM 设置,您只需将空闲空间重新分区即可扩展,或者只需添加一个 5GB(或更大)的磁盘,并将它的存储单元添加到“/home”分区中。其他工具允许您调整现有文件系统的大小,因此您只需调整它的大小以利用更大的分区大小,您就可以恢复正常。LVM 甚至可以创建自己的“快照”,使您能够备份非移动目标。

它能为我做什么?

  • LVM == 逻辑卷管理器
  • 灵活性
  • 高可用性
  • 可靠性
  • LVM 的主要优点
  • 任意“分区”调整大小(灵活性)。
  • 轻松迁移数据 - 在运行的系统上交换驱动器(可用性)。

文件系统此文件系统可以是您想要的任何文件系统:标准 ext2、ReiserFS、NWFS、XFS、JFX、NTFS 等……对于 Linux 内核,普通分区和逻辑卷之间没有区别。

一些 LVM 术语和命令

显示 LVM 版本:lvm 版本创建物理磁盘:pvcreate /dev/sda pvcreate /dev/sdb pvcreate /dev/sdc1 pvcreate /dev/sdc2

显示已分配的物理卷:pvscan pvdisplay lvm pvs

设置卷组:vgcreate vg_name /dev/sda /dev/sdb /dev/sdc1 /dev/sdc2

显示卷组:vgdisplay lvm vgs

显示逻辑卷:lvdisplay lvm lvs

创建逻辑卷:将大小设置为 1GB lvcreate -L1G -n lv_name vg_name


使用的文件、术语和实用程序:* / (root) 文件系统

  • /var 文件系统
  • /home 文件系统
  • 交换空间
  • 挂载点
  • 分区


上一章 | 下一章

华夏公益教科书