4. 分区要求

4.1. 我需要什么分区?

对于启动驱动器: 如果你想从即将分区的驱动器启动操作系统,你将需要

对于任何其他驱动器

4.2. 讨论

启动分区

你的启动分区应该是主分区,而不是逻辑分区。这将简化灾难恢复,但这在技术上不是必要的。它必须是类型0x83“Linux 本地”。如果你使用的是 21-3 之前的 lilo 版本(即 1990 年代的版本),你的启动分区必须包含在驱动器的前 1024 个柱面内。(通常,启动分区只需要包含内核镜像。)

如果你有多个启动分区(例如来自其他操作系统的),请将它们都放在前 1024 个柱面内(所有 DOS 分区都必须在前 1024 个柱面内)。如果你使用的是现代版本的 lilo,或者使用 lilo 以外的其他方式加载内核(例如,启动盘或基于 MS-DOS 的 Linux 加载器 LOADLIN.EXE),则该分区可以位于任何位置。有关详细信息,请参阅 Large-disk HOWTO。

交换分区

除非你交换到文件(参见第 9.2 节),否则你需要一个专用的交换分区。它必须是类型0x82“Linux 交换”。它可以位于磁盘上的任何位置(但请参阅第 4.4.3 节)。主分区或逻辑分区都可以用作交换分区。一个驱动器上可以存在多个交换分区。总共允许 8 个(跨驱动器)。请参阅下面的交换大小注释(第 4.4 节)。

逻辑分区

必须使用单个主分区作为逻辑分区的容器(扩展分区)。扩展分区可以位于磁盘上的任何位置。逻辑分区必须是连续的,但不必填满扩展分区。

4.3. 文件系统

4.3.1. 哪些文件系统需要自己的分区?

你的 Linux 文件系统中的所有内容都可以放在同一个(单个)分区中。但是,在某些情况下,你可能希望限制某些文件系统的增长。例如,如果你的邮件假脱机与你的根文件系统在同一个分区中,并且它填满了分区中的剩余空间,你的计算机基本上会挂起。

/var

此文件系统包含假脱机目录,例如邮件和打印的目录。此外,它还包含错误日志目录。如果你的机器是服务器并且出现长期错误,这些消息可能会填满分区。服务器计算机应该将 /var 放在与 / 不同的分区中。

/usr

这是大多数可执行二进制文件所在的位置。此外,内核源代码树也在这里,以及许多文档。

/tmp

一些程序在此处写入临时数据文件。通常,它们很小。但是,如果你运行计算密集型作业,如科学或工程应用程序,则在短暂的时间内可能需要数百兆字节的空间。在这种情况下,请将 /tmp 放在与 / 不同的分区中。

/home

这是用户主目录所在的位置。如果你不对用户施加配额,则应将其放在自己的分区中。

/boot

这是你的内核镜像所在的位置。有关旧系统上的放置位置,请参见上面的讨论。

4.3.2. 文件生命周期和备份周期作为分区标准

对于 ext2,分区决策应受备份考虑因素的约束,并避免来自不同文件生命周期的外部碎片第 10.4 节

文件具有生命周期。文件创建后,它将在系统上保留一段时间,然后被删除。文件生命周期在整个系统中差异很大,并且部分取决于文件的路径名。例如,在/bin, /sbin, /usr/sbin, /usr/bin和类似目录中的文件可能具有非常长的生命周期:几个月及以上。在/home中的文件可能具有中等生命周期:几周左右。在/var中的文件通常是短寿命的:几乎没有文件在/var/spool/news中会保留超过几天,在/var/spool/lpd中的文件以分钟或更短的时间来衡量其生命周期。

对于备份,如果每日备份量小于单个备份介质的容量,则很有用。每日备份可以是完全备份或增量备份。

你可以决定将分区大小设置得足够小,以便它们完全适合一个备份介质(选择每日完全备份)。在任何情况下,分区都应足够小,以使其每日增量(所有修改的文件)适合一个备份介质(选择增量备份,并期望为每周/每月完全转储更换备份介质 - 不可能进行无人值守操作)。

你的备份策略取决于该决策。

在规划和购买磁盘空间时,请记住留出足够的资金用于备份!未备份的数据毫无价值!对于几乎所有人来说,数据恢复成本都远高于备份成本!

为了提高性能,将不同生命周期的文件放在不同的分区上很有用。这样,新闻分区上的短生命周期文件可能会碎片化非常严重。这对//home分区的性能没有影响。

4.4. 交换分区

4.4.1. 我的交换空间应该有多大?

传统观点是创建与内存大小相等的交换空间。

但请记住,这只是一种经验法则。很容易创建程序具有极大或极小工作集的情况(参见第 3.5 节)。例如,一个以非常随机的方式访问大型数据集的模拟程序,在其数据段中几乎没有明显的引用局部性,因此其工作集将非常大。

另一方面,一个具有多个同时打开的 JPEG 的图形程序,除了一个图标化之外,将具有非常大的数据段。但是图像转换都是在一个图像上完成的,程序占用的大部分内存都没有被访问。对于具有多个编辑器窗口的编辑器也是如此,其中一次只修改一个窗口。这些程序 - 如果它们设计得当 - 具有非常高的引用局部性,并且它们的大部分可以保持换出状态,而不会对性能产生太严重的影响。一个一旦启动程序就从不退出的用户会出于同样的原因需要大量的交换空间。

服务器通常配置的交换空间比其桌面对应物更多。即使给定的交换量足以满足其操作,服务器也可能会承受瞬时高负载,从而导致其以高频率换页。一些管理员更喜欢这样做,而不是服务器完全崩溃。在这些情况下,交换空间可能是内存大小的几倍。

4.4.2. 我的交换空间可以有多大?

目前,交换分区的最大大小取决于架构。对于 i386、m68k、ARM 和 PowerPC,它“官方”为 2Gb。在 alpha 上为 128Gb,在 sparc 上为 1Gb,在 sparc64 上为 3Tb。2.6 内核上的 opteron 可以写入 16 Tb 的交换分区。对于 Linux 内核 2.1 及更早版本,限制为 128Mb。分区可能大于 128 MB,但永远不会使用多余的空间。如果你想要超过 128 MB 的交换空间用于 2.1 及更早版本的内核,你必须创建多个交换分区(最多 8 个)。在 2.4 之后,“官方”可能使用 32 个交换区。有关详细信息,请参阅设置交换空间。

脚注: “官方”最大交换空间大小:对于内核 2.4,限制为 64 个交换空间,每个最大 64Gb,尽管这并未反映在 mkswap 的手册页中。对于 2.6 内核上的 64 位 opteron,允许使用 128 个交换区,每个区高达 16 Tb!(感谢 Peter Chubb 的计算)

4.4.3. 我应该将交换空间放在哪里?

简短的回答是任何地方都可以。但是,如果你有兴趣尽可能地提高速度,则有两种基本策略(除了购买更多内存)。

  • 将交换空间分散在多个驱动器上,或者至少放在写入最少的驱动器上。

  • 将每个交换分区放在外磁道上。

以下是需要考虑的因素

  • 如果你有一个具有多个磁头的磁盘和一个具有较少磁头的磁盘,并且两者在其他参数上相同,则具有多个磁头的磁盘会更快。从不同磁头读取数据速度很快,因为它是纯电子的。从不同磁道读取数据速度很慢,因为它涉及物理移动磁头。

    由此可见,在单独的驱动器上写入交换空间将比在单个驱动器上来回移动磁头更快。

  • 放置位置:旧磁盘在所有磁道上具有相同数量的扇区。对于这些磁盘,假设你的磁盘头将从随机磁道移向交换区,则将交换空间放在磁盘中间将是最快的。

  • 较新的磁盘使用 ZBR(区域位记录)。它们在外磁道上具有更多扇区。在恒定的转速下,与内磁道相比,这在外磁道上产生了更高的性能。将你的交换空间放在快速磁道上。(一般来说,低编号的柱面与低分区号相关联。但是,请参阅 Kristian 最近关于此问题的评论。-Tony)

  • 使用情况:当然,你的磁盘头不会随机移动。如果你的交换空间位于磁盘中间,介于持续繁忙的 home 分区和几乎未使用的 archive 分区之间,那么如果你的交换空间靠近 home 分区,则磁头移动会更短,你会做得更好。但是,如果你的交换空间位于另一个否则未使用的磁盘上,你会做得更好。

  • 条带化:通过同时写入多个交换区可以提高速度。具有相同优先级的交换空间将像 RAID 一样写入。请参阅第 9.3 节

总结: 将你的交换空间放在一个快速的、具有多个磁头的、不忙于做其他事情的磁盘上。如果你有多个磁盘:分割交换空间并将其分散在所有磁盘甚至不同的控制器上。