Gentoo Logo

[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


4. 预备磁盘

内容:

4.a. 块设备介绍

块设备

我们要好好了解下Gentoo Linux以及普通Linux中有关磁盘方面的知识,包括Linux文件系统、分区和块设备。然后,一旦你熟悉了磁盘和文件的方方面面,我们将会指导你设置分区和文件系统,为你安装Gentoo Linux做好准备。

一开始我们先介绍块设备。最有名的块设备可能就是Linux系统中表示第一个IDE硬盘的/dev/sda。SCSI硬盘和Serial ATA硬盘都是/dev/sda。如果你正在使用内核里新的libata架构,即便IDE硬盘也会是/dev/sd*。如果你用的是旧的设备架构,你的第一个IDE硬盘将是/dev/hda

上面介绍的块设备代表磁盘的抽象接口。用户程序可以使用这些块设备来与你的磁盘进行交互,而不用理会你的驱动器到底是IDE、SCSI还是其他的。程序可以把磁盘当作一系列连续的、可随机访问的512字节大小的块来访问。

磁盘分区

尽管在理论上可以使用一整块磁盘来安装你的Linux系统,但是在实际中几乎从不 这样做。相反,整个磁盘块设备被分割成更小、更容易管理的块设备。在 IA64系统中,这些被称作分区

安腾系统使用EFI(Extensible Firmware Interface),可扩展固件接口,用以启动。EFI能够理解的分区表被称为GPT,或GUID分区表。能够理解GPT的分区程序叫“parted”,也是我们之后要使用的工具。另外,EFI只能认FAT文件系统,所以EFI启动分区也只能是这个文件系统,“elilo”安装的内核就放在那里。

高级存储

此IA64安装光盘提供了对EVMS和LVM2的支持。EVMS和LVM2提高了你的分区设置的灵活性。在安装指南中,我们将把精力集中在“常规”分区上,但是了解一下我们支持EVMS和LVM2也是有好处的。

4.b. 设计分区方案

默认分区方案

如果你没有兴趣为你的系统设计分区方案,你可以使用我们在本手册中使用的方案:

分区 文件系统 大小 说明
/dev/sda1 vfat 32M EFI启动分区
/dev/sda2 (swap) 512M 交换分区
/dev/sda3 ext3 剩余磁盘 根分区

如果你想知道一个分区应该多大,或者你需要多少个分区,继续阅读。否则请阅读使用parted来为你的磁盘分区来给你的磁盘分区。

多少和多大?

分区的数目主要根据你的系统环境来决定。例如,如果你有很多用户,你可能更希望把你的/home目录独立出来,因为这样做可以增加安全性,备份起来也更容易。如果你安装Gentoo用来做邮件服务器,你的/var目录应该独立出来,因为邮件都存储在/var目录中。选择一个好的文件系统将最大限度地提高你的系统性能。游戏服务器应该把/opt目录独立出来,因为大多数游戏服务端软件都安装在那。理由也与/home目录类似:安全与备份。你一定要使/usr目录保持足够大:因为它将不仅包含大部分应用程序,而且Portage树本身就需要大约500M空间,这还不包括存储在其中的各种源代码包。

正如你所看到的,这完全取决于你想要达到什么目的。独立的分区或卷有以下优点:

  • 你可以为每一个分区或卷选择最佳性能的文件系统
  • 如果一个有问题的工具不停地向一个分区或卷写文件,也不会把你整个系统的可用空间 都用完
  • 如果需要,可以减少文件系统检测的时间,因为多个检测可以并行的进行(尽管这个优势 在多磁盘系统上比多分区系统上更为明显)
  • 通过对一些分区或卷进行只读、nosuid(忽略setuid位)、noexec(忽略可执行位)等方式挂载,安全性会大大增强。

然而,多分区系统有一大缺点:如果配置的不合理,可能导致系统中一个分区有很大的空闲 空间,而另一个没有空闲空间了。SCSI和SATA还有15个分区的限制。

作为分区的例子,我们向你示范一个用于演示的有20GB磁盘的笔记本(包含网站服务器、邮件服务器、gnome……):

代码 2.1: 文件系统使用实例

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext3    509M  132M  351M  28% /
/dev/sda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext3   1011M  483M  477M  51% /opt
/dev/sda9     ext3    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>
(留作它用的未分配空间:2GB)

这里的/usr快满了(使用了83%),但是一旦所有的软件都安装好了,/usr目录就不会如此的增长了。尽管分配给/var目录的空间看似过多了,但是要记住,Portage默认使用这个分区来编译软件包。如果你想使你的/var目录保持一个合理的大小,如1GB,你需要更改/etc/make.conf文件中的PORTAGE_TMPDIR来指定一个拥有足够的空闲空间的分区,用以编译诸如OpenOffice这样巨大的软件包。

4.c. 使用parted来为你的磁盘分区

下面来解释如何创建前面说明的那个示例分区布局,即:

分区 说明
/dev/sda1 EFI启动分区
/dev/sda2 交换分区
/dev/sda3 根分区

根据你自己的喜好来改变分区布局。

查看当前分区布局

parted是一个GNU分区编辑器。启动你磁盘上parted程序(在示例中,我们使用/dev/sda):

代码 3.1: 启动parted

# parted /dev/sda

一旦启动到parted中,你将看到如下提示:

代码 3.2: parted提示

GNU Parted 1.6.22
Copyright (C) 1998 - 2005 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

Using /dev/sda
(parted)

目前有一个可用的命令是help,如果你想要看一些其余可用的命令你应该使用它。另一个命令是print用以显示你目前磁盘的分区配置:

代码 3.3: 分区配置示例

(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017    203.938  fat32                             boot
2        203.938   4243.468  linux-swap
3       4243.469  34724.281  ext3

这个特定的配置和我们之前推荐的非常相似。注意第二行(分区表的类型)是GPT。如果不是这样,则ia64系统将不能从磁盘启动。作为向导,我们将删除分区并创建新的。

删除所有分区

注意: fdisk及其他一些分区程序在你给出写入指令之前不会做出改动。与它们不同的是,parted会立即做出改动。所以一旦你开始添加和删除分区之后,你将无法全身而退……磁盘已经被改写了。

删除所有分区以及从头开始的简便方法是使用mklabel命令创建一个新的分区表,它可以确保我们使用正确的分区类型。这样完成之后,你就会有一张空白的GPT分区表了。

代码 3.4: 创建一个新的分区表

(parted) mklabel gpt
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags

现在,分区表是空的,我们就可以创建分区了。我们将使用前面讨论过的那个默认的分区布局。当然,如果你不想要相同的分区方案就不要按照下面的指令来做!

创建EFI启动分区

我们首先创建一个小的EFI启动分区。这个分区需要FAT文件系统因为ia64固件只能读取这种文件系统。我们的例子会把它设置为32M,这对于存储内核和elilo配置已经合适了。你可以预计每个ia64内核大约5M,所以这样的设置会留给你一些用于将来增长以及感受新体验的空间。

代码 3.5: 创建启动分区

(parted) mkpart primary fat32 0 32
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32

创建交换分区

现在让我们来创建交换分区吧。经典的做法是让交换分区的大小两倍于你系统中物理内存的大小。在现代系统中有着大量的物理内存,所以这种做法不是必须的了。对于大部分桌面系统来说,一个512M大小的交换分区足够了。对于服务器来说,你可以考虑再多分一点空间用以应付服务器预期的需求。

代码 3.6: 创建交换分区

(parted) mkpart primary linux-swap 32 544
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000

创建根分区

最终,我们来创建根分区吧。我们的设置使根分区占用磁盘所有剩余的空间。我们默认使用ext3文件系统,但是如果你喜欢也可以使用ext2、jfs、reiserfs或xfs文件系统。真正创建文件系统的步骤并不是在这儿,但是分区表包含了表明每个分区上的文件系统的标记,而且最好让这个标记和你实际希望使用的文件系统类型保持一致。

代码 3.7: 创建根分区

(parted) mkpart primary ext3 544 34732.890
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000
3        544.000  34732.874

退出parted

从parted中退出,请输入quit。这儿没有必要使用一个独立的步骤来保存你的分区布局,因为parted之前已经保存过了。只要你离开,parted就会提醒你更新/etc/fstab,这步在之后的向导中我们会完成。

代码 3.8: 从parted中离开

(parted) quit
Information: Don't forget to update /etc/fstab, if necessary.

现在分区已经创建完毕,你可以继续阅读创建文件系统

4.d. 创建文件系统

介绍

你的分区已经创建完了,现在可以在上面创建文件系统了。如果你并不介意选择何种文件系统,而且乐意使用本手册中所使用的默认设置,请阅读在分区上应用文件系统。否则,继续阅读本文来了解可用的文件系统……

文件系统

Linux内核支持各种各样的文件系统。我们将介绍vfat、ext2、ext3、ReiserFS、XFS和JFS,因为它们是Linux系统中使用最普遍的文件系统。

vfat是更新了可以接受长文件名的MS-DOS文件系统。它也是ia64系统上EFI固件唯一可以识别的文件系统。ia64系统上的启动分区必须是vfat,但作为你存储数据的分区,你应该使用下述文件系统的任意一个。

ext2是经考验证明可靠的Linux文件系统,但是没有元数据日志,这意味这在启动系统时的ext2文件系统的日常检查相当耗时。现在相当一部分的新一代的日志文件系统都可以非常迅速检查一致性,因此比那些非日志文件系统更受欢迎。当你启动系统碰巧遇到文件系统状态不一致时,日志文件系统不会在那里耽搁很长时间。如果你要在一个很小的硬盘(小于4G)上装Gentoo,那么你需要在创建ext2文件系统时预留足够的inode,执行此命令mke2fs -T small /dev/<device>.

ext3是ext2文件系统的带日志版本,提供了元数据日志模式以快速恢复数据。此外还提供了其他增强的日志模式,如完整数据日志模式和有序数据日志模式。它使用了HTree索引,在几乎所有的情况下都能保持高性能。简而言之,ext3是非常好及可靠的文件系统。如果你要在一个很小的硬盘(小于4G)上装Gentoo,那么你需要在创建ext2文件系统时预留足够的inode,执行此命令mke2fs -T small /dev/<device>

JFS是IBM的高性能日志文件系统。JFS是一个轻量级的、快速的和稳定的基于B+树的文件系统,在很多情况下都有很好的表现。

ReiserFS是基于B+树的文件系统,它有着非常全面的性能,特别时在处理很多小文件的时候,虽然会占用多一点CPU。ReiserFS相比其他文件系统显得受维护的不够。

XFS是一种带元数据日志的文件系统,它有一个健壮的特性集,并且对可伸缩性进行了优化。XFS似乎对各种各样的硬件问题显得不够宽容。

在分区上应用文件系统

要在分区或卷上创建文件系统,对于每种可能的文件系统都有专门的工具:

文件系统 创建命令
vfat mkdosfs
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

例如,要使启动分区(本例中的/dev/sda1)为vfat和根分区(本例中的/dev/sda3)为ext3,应该这样做:

代码 4.1: 在分区上应用文件系统

# mkdosfs /dev/sda1
# mke2fs -j /dev/sda3

激活交换分区

mkswap是初始化交换分区的命令:

代码 4.2: 创建交换分区标志

# mkswap /dev/sda2

使用swapon命令来激活交换分区:

代码 4.3: 激活交换分区

# swapon /dev/sda2

使用上面提到的命令来创建和激活交换分区。

4.e. 挂载

现在你的分区都已经初始化了,并且安装了文件系统,是时候来挂载这些分区了。使用mount命令进行挂载。别忘记为每个你创建的分区建立所需的挂载目录。作为例子,我们来挂载根分区和启动分区:

代码 5.1: 挂载根分区

# mount /dev/sda3 /mnt/gentoo

注意: 与其余一些Gentoo支持的架构不同的是,在ia64上/boot并不被挂载。原因是EFI启动分区会自动地被挂载以及每次你运行elilo命令时会被写入。因为这点,/boot分区位于根分区,而且它是elilo配置引用内核的存储位置。

注意: 如果你希望/tmp目录在一个独立的分区上,确保在挂载之后修改它的权限:chmod 1777 /mnt/gentoo/tmp。这同样适用于/var/tmp目录。

我们还需要在/proc目录上挂载proc文件系统(内核的虚拟接口)。但是,我们首先需要把我们的文件放到分区上。

请继续阅读安装Gentoo安装文件


[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


打印

查看全部

更新于2009年 7月 11日

总结: 为了能够安装Gentoo,你必须创建必要的分区。本章解释了怎样将磁盘分区,以便以后使用。

Sven Vermeulen
作者

Grant Goodyear
作者

Roy Marples
作者

Daniel Robbins
作者

Chris Houser
作者

Jerry Alexandratos
作者

Seemant Kulleen
Gentoo x86开发人员

Tavis Ormandy
Gentoo Alpha开发人员

Jason Huebel
Gentoo AMD64开发人员

Guy Martin
Gentoo HPPA开发人员

Tim Yamin
Gentoo IA64开发人员

Pieter Van den Abeele
Gentoo PPC开发人员

Joe Kallar
Gentoo SPARC开发人员

Mike Frysinger
Gentoo * 开发人员

John P. Davis
编辑

Pierre-Henri Jondot
编辑

Eric Stockbridge
编辑

Rajiv Manglani
编辑

Jungmin Seo
编辑

Stoyan Zhekov
编辑

Jared Hudson
编辑

Colin Morey
编辑

Jorge Paulo
编辑

Carl Anderson
编辑

Jon Portnoy
编辑

Zack Gilburd
编辑

Jack Morgan
编辑

Benny Chuang
编辑

Erwin
编辑

Joshua Kinard
编辑

Stuart Longland
编辑

Tobias Scherbaum
编辑

Xavier Neys
编辑

Joshua Saddler
编辑

Gerald J. Normandin Jr.
审校

Donnie Berkholz
审校

Ken Nowack
审校

Lars Weiler
投稿

张乐
译者

沈辰俊
译者

杨珂
译者

叶宝泰
译者

杨小广
译者

vivian.ye
译者

余雷
译者

陈永骥
译者

王国辉
译者

娄东斌
译者

贾震
译者

余鈺炜
译者

陈代焱
译者

范华
译者

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Edurium
Copyright 2001-2010 Gentoo Foundation, Inc. Questions, Comments? Contact us.