为什么要分区? 嗯,虽然完全有可能在单分区系统上运行一个功能完善的 Linux 系统,而且实际上这种方式配置起来更容易一些,但是将一个或多个存储设备分区为多个分区有很多好处。
虽然 Linux 在只有一个大型分区的磁盘上也能正常运行,但至少为四个主要文件系统(根目录、usr、home 和 swap)分区磁盘有几个优点。 这些优点包括
首先,它可以减少执行文件系统检查所需的时间(启动时和手动执行 fsck 时),因为这些检查可以并行完成。(顺便说一句,永远不要在已挂载的文件系统上运行 fsck!!!你几乎肯定会后悔对它所做的事情。 除非文件系统以只读方式挂载,否则这是一个例外,在这种情况下这样做是安全的。)此外,在具有多个分区的系统上,文件系统检查更容易执行。 例如,如果我知道我的 /home 分区有问题,我可以简单地卸载它,执行文件系统检查,然后重新挂载修复后的文件系统(而不是使用救援软盘以单用户模式启动系统并进行修复)。
其次,使用多个分区,您可以根据需要将一个或多个分区挂载为只读。 例如,如果您确定 /usr 中的所有内容即使是 root 用户也不会触及,则可以将 /usr 分区挂载为只读。
最后,分区提供的最重要的好处是保护您的文件系统。 如果文件系统发生意外(无论是用户错误还是系统故障),在分区系统上,您可能只会丢失单个文件系统上的文件。 在非分区系统上,您可能会丢失所有文件系统上的文件。
这个小事实可能是一个很大的优势。 例如,如果您的根分区损坏到无法启动的程度,您基本上可以从救援软盘集启动,挂载您的根分区,并将您可以复制的内容(或从备份恢复;有关如何备份和恢复文件的详细信息,请参阅第 8 章),复制到另一个分区(例如 home),然后再次使用紧急启动盘重新启动,输入 “mount root=/dev/hda3”(假设包含您的临时根文件系统的分区位于 hda 的第三个分区上)并启动您的功能齐全的 Linux 机器。 然后您可以在未挂载的损坏的根分区上运行 fsck。
我曾经有过文件系统灾难的亲身经历,我非常感谢由于使用了多个分区而限制了损失。
最后,由于 Linux 允许您设置其他操作系统(例如 Windows 95/98/NT、BeOS 或其他),然后双启动(或三启动,...)您的系统,您可能希望设置额外的分区来利用这一点。 通常,您会希望为每个操作系统至少设置一个单独的分区。 Linux 包括一个不错的引导加载程序(在基于 Intel 的系统上称为 LILO,尽管在 Alpha 上有非常相似的 MILO,在 Sparc 上有 SILO),它允许您指定在开机时要引导哪个操作系统,并为您最喜欢的操作系统(可能是 Linux,对吧?)设置超时默认引导。
您应该根据自己的需要对磁盘(或多个磁盘)进行分区。 根据我在 Intel、Alpha 和 Sparc 平台上的经验,对于一个功能相当齐全的系统(功能方面),执行相当多的任务(作为家庭桌面系统或工作场所的 Internet 服务器),我发现以下空间近似值对于确定分区大小非常有效。
Given: A given disk of X Mb/Gb (eg. 2 Gb) (Or, more than one disk with a combined total of X Mb/Gb) Calculate: (swap) about double main RAM (eg. 64 Mb system gets 128 Mb swap) / (root) about 10% of available (eg. 200 Mb) /home about 20% of available (eg. 400 Mb) /usr any remaining space (eg. 1272 Mb) /var (optional -- see below) /boot (optional -- see below) /archive (optional -- see below) |
当然,以上数量仅为近似指南。 显然,您需要根据您将 Linux 系统用于什么用途来稍微调整这些百分比。 如果您要进行添加大量庞大应用程序(如 WordPerfect 或 Netscape),或者可能添加日语字符支持之类的操作,您可能会从更多的 /usr 空间中受益。
我总是似乎在 /home 上有大量可用空间,因此如果您的用户不做太多事情(或者您施加了严格的配额大小),或者您不提供 shell 帐户和个人网页等,您可能会减少 /home 空间并增加 /usr 空间。
以下是各种挂载点和文件系统信息的描述,这可能会让您更好地了解如何最好地为自己的需求定义分区大小
/ (根目录) - 用于存储临时文件、Linux 内核和引导镜像、重要的二进制文件(在 Linux 可以挂载 /usr 分区之前需要的文件),更重要的是日志文件、打印作业和外发电子邮件的假脱机区域以及用户的传入电子邮件。 它也用于在执行某些操作(例如从源 RPM 文件构建 RPM 包)时的临时空间。 因此,如果您有很多用户有很多电子邮件,或者认为您需要大量的临时空间,您可能需要更多可用空间。 分区类型应保留为默认值 83(Linux 本地)。 此外,您可能需要在该分区上切换可引导标志,以允许在此处存储引导信息。
/usr/ - 应该是最大的分区,因为 Linux 所需的大部分二进制文件,以及任何本地安装的软件、网页、Squid 代理缓存、Samba 共享服务、一些本地安装的软件日志文件等都存储在这里。 分区类型应保留为默认值 83(Linux 本地)。
/home/ - 通常,如果您不为用户提供 shell 帐户,则无需将此分区设置得非常大。 除非您提供用户主页(例如学校网页),否则这是一个例外,在这种情况下,您可能会从增大此分区中受益。 同样,分区类型应保留为默认值 83(Linux 本地)。
(swap) - Linux 提供了一种称为 “虚拟内存” 的功能,以提供比系统中安装的物理 RAM 更大的内存量。 swap 分区与 Linux 的主 RAM 一起使用以实现此目的。 根据经验法则,您的 swap 分区应至少是系统中安装的物理 RAM 的两倍。
如果您的系统中有多个物理硬盘驱动器,则可以创建多个 swap 分区。 这可以通过利用并行磁盘访问来提高 swap 的性能。 例如,在一个具有四个驱动器的 256 Mb 系统上,我可能会创建四个 128 Mb swap 分区,总共 256 Mb RAM、512 Mb swap(总共 768 Mb 可用作虚拟内存)。 分区类型需要更改为 82(Linux swap)。
注意: 注意:Linux 具有 128 Mb swap 大小限制是一种常见的误解。 这在过去是正确的,但在现代 Linux 发行版中,大小取决于您的架构(例如,Intel 系统可以具有高达 2 Gb 的 swap 大小)。 输入 ``man mkswap'' 以获取更多信息。
/var/ (可选)- 您可能希望进一步拆分您的 /(根目录)分区。 /var 目录用于大量运行时存储,包括邮件假脱机(包括传入和传出)、打印作业、进程锁等。 将此目录挂载在 /(根目录)下可能有点危险,因为大量传入的电子邮件(例如)可能会突然填满分区。 由于当 /(根目录)分区填满时可能会发生不好的事情(例如系统崩溃?),因此将 /var 放在其自己的分区上可能会避免此类问题。 我在占用我分配给 /(根目录)的任何空间,可能将其加倍,然后为 /(根目录)和 /var 创建单独的分区方面取得了成功。 分区类型应保留为默认值 83(Linux 本地)。
/boot/ (可选)- 在某些情况下(例如在软件 RAID 配置中设置的系统),可能有必要拥有一个单独的分区来从中启动 Linux 系统。 此分区将允许引导,然后加载读取其他文件系统所需的任何驱动程序。 此分区的大小可以小到几 Mb; 我建议大约 10 Mb(这应该为您提供足够的空间来存储内核、初始 RAMdisk 镜像,以及可能的一两个备份内核)。 分区类型应保留为默认值 83(Linux 本地)。
/archive/ (可选)- 如果您有任何额外的空间,您可能会从一个名为 /archive 的目录的分区中受益。 然后,您可以使用 /archive 目录来存储备份材料、大型或不经常访问的文件、samba 文件服务,或您可以找到任何其他用途的东西。 分区类型可以保留为默认值 83(Linux 本地),或者如果您想从 Linux 和另一个操作系统访问它,您可以将其更改为不同的 ID,例如 6(DOS 16 位 >=32M)。
随着添加额外的驱动器,可以将更多的分区添加到新驱动器,并根据需要挂载到各种挂载点 - 这意味着 Linux 系统永远不必担心空间不足。 例如,如果将来很明显 sda6 开始被填满,我们可以添加另一个驱动器,设置一个大小合适的分区,并将挂载点设置为 /usr/local - 然后将 /usr/local 中的所有信息传输到新驱动器。 但是,由于 Linux 会看到 /usr/local,无论它位于何处,因此任何系统或应用程序组件都不会 “崩溃”。
为了给您一个关于如何设置分区的示例,我在 Intel 系统(双启动,Windows 95 和 Linux)上使用了以下分区方案
Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 254 1024096+ 6 DOS 16-bit >=32M /dev/hda2 255 255 782 2128896 5 Extended /dev/hda5 255 255 331 310432+ 83 Linux native /dev/hda6 332 332 636 1229728+ 83 Linux native /dev/hda7 637 637 749 455584+ 83 Linux native /dev/hda8 750 750 782 133024+ 82 Linux swap |
第一个分区 /dev/hda1 是一个 DOS 格式的文件系统,用于存储备用操作系统(Windows 95)。 这为我提供了 1 Gb 的空间用于该操作系统。
第二个分区 /dev/hda2 是一个物理分区(称为 “扩展”),它包含驱动器上的剩余空间。 它仅用于封装剩余的逻辑分区(一个磁盘上只能有 4 个物理分区;在我的情况下,我需要超过 4 个分区,因此我不得不为其他分区使用逻辑分区方案)。
第三到第五个分区 /dev/hda5、/dev/hda6 和 /dev/hda7 都是 e2fs 格式的文件系统,分别用于 /(根目录)、/usr 和 /home 分区。
最后,第六个分区 /dev/hda8 用于 swap 分区。
对于另一个示例,这次是一个带有两个硬盘驱动器的 Alpha 机器(仅单独启动,仅 Linux),我选择了以下分区方案
Device Boot Begin Start End Blocks Id System /dev/sda1 1 1 1 2046 4 DOS 16-bit <32M /dev/sda2 2 2 168 346859 83 Linux native /dev/sda3 169 169 231 130851 82 Linux swap /dev/sda4 232 232 1009 1615906 5 Extended /dev/sda5 232 232 398 346828 83 Linux native /dev/sda6 399 399 1009 1269016 83 Linux native /dev/sdb1 1 1 509 2114355 83 Linux native /dev/sdb2 510 510 1019 2118540 83 Linux native |
第一个分区 /dev/sda1 是一个 DOS 格式的文件系统,用于存储 MILO 引导加载程序。 Alpha 平台的启动方法与 Intel 系统略有不同,因此 Linux 将其引导信息存储在 FAT 分区中。 此分区只需要与允许的最小分区一样大 - 在这种情况下为 2Mb。
第二个分区 /dev/sda2 是一个 e2fs 格式的文件系统,用于 /(根目录)分区。
第三个分区 /dev/sda3 用于 swap 分区。
第四个分区 /dev/sda4 是一个 “扩展” 分区(有关详细信息,请参阅上一个示例)。
第五个和第六个分区 /dev/sda5 和 /dev/sda6 是 e2fs 格式的文件系统,分别用于 /home 和 /usr 分区。
第七个分区 /dev/sdb1 是一个 e2fs 格式的文件系统,用于 /archive 分区。
第八个也是最后一个分区 /dev/sdb2 是一个 e2fs 格式的文件系统,用于 /archive2 分区。
在完成分区信息的设置后,您需要将新分区写入磁盘。 在此之后,Red Hat 安装程序会将分区表重新加载到内存中,以便您可以继续执行安装过程的下一步。