为你的Linux系统分区:基本原理
如果您使用的是普通分区设备,那么很可能您的磁盘使用几个分区。如果您没有正确的设置分区大小或者您的需求发生了变化,您将发现需要重新设置分区大小。要做到这一点,您必须很清楚自己调整分区大小的需求,而且要熟悉完成这一任务的工具。很多情况下,调整操作一般都很顺利,然而,许多障碍都是粗心大意引起的,甚至对那些已经做了充分准备的人也不能避免。
本文首先介绍调整工具的一些潜在功能和限制,以及在开始调整操作之间要进行的一些准备工作。然后介绍了 GParted 分区大小调整工具(也可称为 GNOME Partition Editor)。
注:为了简便起见,我用调整(resizing)一词涉及几种操作,包括增加分区大小,减少分区大小和移动分区。有时候,只有一个操作是可行的,而其他的不可行。有时候这些操作本身比其他操作风险更大,这些差别很重要,我注意到了这个事实。
分区调整基础工作
在您启动一个分区工具时,您应该清楚这些程序可以做什么、适合在何时使用。您也应该记录当前的配置并进行数据备份。
何时调整分区大小?
我们来回顾一下分区和文件系统之间的区别。分区 是由磁盘上相邻扇区组成的容器,分区是由简单数据结构定义的。文件系统,从另一方面说,是驻留在分区之内 的数据结构。文件系统支持计算机定位单独的文件,它们比分区更为复杂。实际上,调整一个分区大小通常也需要调整它包含的文件系统。为了简单起见,我所用的 “调整分区” 就是指 “调整分区以及其中包含的文件系统”。
分区调整从本质上说至少有点风险。分区调整软件必须改变低级别分区和文件系统数据结构,可能需要移动大量数据。磁盘上的不可靠数据、电源故障、以及系统崩溃的等问题可能会导致调整过程发生灾难性故障。由于这些原因,您不应轻易进行分区调整操作,而且,只要有可能您就应该备份数据。
一般情况下,我不建议调整分区,除非现在的设置存在问题或者不久将出现问题。这就是说,您考虑调整分区的前提是,一个或多个分区必须是快满了,或者说您确定不久将会添加很多数据,可能会导致溢出。
您也必须谨记调整限制。例如,您不能缩小某个文件系统,以及您需要在新的布局中周密计划主分区与逻辑分区的配置。有时候诸如此类的问题可能会成为您调整计划的障碍,强迫您采取另一种方案,具体见本系列的第 2 部分。
获取当前分区使用的数据
在您的分区调整操作的计划中,第一步是获取关于磁盘目前的设计方式以及哪个分区空间不足的信息。获取这类信息一个比较方便的方式是使用 GParted,GParted 有一个友好的 GUI 显示,如图 1 所示,显示了分区之间的相对位置以及每个分区占用的空间大小。然而,GParted 并不总是呈现完整的信息。因此您需要使用文本模式 df、fdisk 或者其他实用工具来补充显示。
图 1. GParted 显示磁盘使用的概要信息
图1 显示的系统,其中含有一个受限的 /usr 分区(/dev/sdb5)并在 /home(/dev/sdb7)中有大量剩余空间,如果您想要向计算机中添加更多的软件,这就会引起麻烦。对于这个给定的分区布局,您可以减少 /home 的大小、增加 /usr 的大小。(注意图 1 是从一个紧急引导磁盘获取的,因此 Mount Point 列不能反映正在运行的系统挂载点。)
特定于文件系统的功能
Linux 支持几个本地文件系统,而且双重引导系统通常和其他系统共享磁盘。一般情况下,就使用方面 ext2fs、ext3fs、ex4fs、ReiserFS 和 Btrfs 是最灵活的,这些文件系统都可以增长、缩小或移动,大多数是可以通过 GParted 实现的。可惜的是,XFS 和 JFS 是不能缩小的,但是可以增长和移动。
在普通的非 Linux 文件系统中,FAT 和 NTFS 可以增长、缩小和移动。用在 Macintoshes 上的 HFS 和 HFS+ 通常可以缩小和移动,但是不能增长,OS X 的 Disk Utility 有时候可以使 HFS+ 增长分区。
在 GParted 中,您可以选择 View > File System Support 来获取文件系统表格和 GParted 支持的操作。如果您要在您的 Linux 系统中尝试这一操作,那么您应该意识到各种版本支持的是不同的。如果您使用一个紧急引导磁盘,比起常规安装它可能支持不同的选项,稍后将介绍。
计划一个新的分区布局
有了当前的分区数据,以及您可以使用手边现有的文件系统进行何种操作的信息之后,您就可以开始计划您的新布局了。您应该考虑以下几个重要因素:
速度和安全性 — 改变一个分区的起点通常比改变终点更慢且更冒险,因为移动起点必须要重写分区中的许多数据,对分区来说使用较多的数据比起使用较少数据影响更大。
非 Linux 文件系统 — 尽管 GParted 及其文本模式 “远亲” GNU Parted 可以调整 NTFS、FAT、HFS 和 HFS+ 文件系统大小,在处理时您也要考虑使用本地操作系统工具而不是 Linux 工具。这对于双重引导系统上的 Microsoft? Windows? 引导分区尤其如此,因为改变一个 Windows 引导分区的起点有可能导致 Windows 无法引导。
主分区 vs. 逻辑分区 — 用于大多数 Linux 机器上的 Master Boot Record (MBR) 分区系统仅支持 4 个主 分区,其中一个是可扩展的,可以包含任何数量的逻辑 分区。有些操作系统,比如 Windows,必须从主分区引导。您的所有逻辑分区必须驻留在一个可扩展的分区中,因此必须是连续的。如果您的系统使用一个全局唯一标识符(GUID)分区表(Partition Table,GPT),而不是使用旧的 MBR 系统,这些限制将无实际意义,因为 GPT 仅支持一个分区类型。
设备 ID — 注意设备 ID,例如您的 Linux 分区使用的 /dev/sda3。如果这些 ID 发生变化,您可能需要改变您的 /etc/fstab 文件或您的引导装载程序配置(一般是 /boot/grub/menu.lst、/boot/grub/grub.conf、或者 /boot/grub/grub.cfg ),许多现代版本在这些文件中使用 Universally Unique Identifier (UUID) 而不是设备标识符。如果新的分区布局不改变任何关键设备 ID,这也没有必要的。注意主分区是从 1 到 4 进行编号的,编号系统可能有间隙,但是逻辑分区是从 5 开始编号的,不存在间隙。因此,如果您添加一个主分区,分区编号也有可能不会改变,但是如果您要添加一个逻辑分区,您所有的其他逻辑分区变化都会改变。
准备一个备份
一旦您准备进行修改,您可能想要立即实现;然而,由于重新分区会卷入危险,只要可以实现,您就应该备份关键数据,如果备份不能实现,建议您最好购买一个硬盘进行备份。即使不考虑分区调整引入的危险,有时候硬盘故障,软件问题都会导致文件系统不可用。因此,最好进行备份。
备份到任何一种存储介质,这是最方便的。您可以使用 tar 来创建一个系统备份,该文件系统将压缩到一个可记录的 DVD 上,然而,现在大多数系统的用户数据非常庞大,一个 DVD 不能存下。因此,您需要依靠其他存储介质来备份您的数据,比如,一个外部硬盘。
即使不能完全备份,您也应该备份 /etc 目录下的内容。该目录下含有关键系统配置,因此,如果您需要重新安装操作系统,保留它的副本可以加快恢复过程。