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系统,但是在实际中几乎从不这样做。相反,整个磁盘块设备被分割成更小、更容易管理的块设备。在大多数系统中,这些被称作分区。在其他一些构架中近似的称呼为分片

4.b. 设计分区方案

默认分区方案

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

分区 文件系统 大小 描述
/dev/sda1 分区表 31.5k 分区表
/dev/sda2 (bootstrap) 800k Apple_Bootstrap
/dev/sda3 (swap) 512M 交换分区
/dev/sda4 ext3 磁盘剩余空间 root分区

注意: 有些分区叫:Apple_Driver43Apple_Driver_ATAApple_FWDriverApple_Driver_IOKitApple_Patches。如果你计划不再使用MacOS 9你可以将它们删除,因为MacOS X和Linux都不需要它们。你可以使用parted来删除这些不需要的分区,因为mac-fdisk无法删除它们。

如果你对知道一个分区究竟应该多大或者你究竟需要多少个分区感兴趣,请继续阅读。否则请跳转到Apple G5:使用mac-fdisk来给磁盘分区或跳转到IBM pSeries:使用fdisk来给磁盘分区

多少和多大?

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

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

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

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

4.c. 默认:使用mac-fdisk(Apple G5)为你的磁盘分区

现在,使用mac-fdisk创建你的分区:

代码 3.1: 启动mac-fdisk

# mac-fdisk /dev/sda

首先删除你已经清空的分区为你Linux分区预留空间。在mac-fdisk中使用d来删除这些分区。它会询问你需要删除的分区号码。

其次,使用b来创建一个Apple_Bootstrap分区。它会询问你从哪块开始。键入你第一个空余分区的号码,然后紧跟一个p。比如在这儿,是2p

注意: 这个分区并是一个“boot”分区。它根本不被Linux所用;你不需要在上面放置任何文件系统,而且永远不要挂载它。PPC用户并不需要一个额外的/boot分区。

现在按c创建一个交换分区。mac-fdisk将再一次询问你想要从那块开始你的分区。因为我们之前已经使用了2来创建Apple_Bootstrap分区,因此你现在需要键入3p。当你被询问到大小的时候,输入512M(或者你所需要的任意大小)。当被询问到名字的时候,输入swap(强制)。

键入c,来创建root分区,紧跟4p用以选择root分区从哪块开始。当被询问到大小的时候,再次输入4pmac-fdisk会将这种行为解释成“使用所有的空余空间”。当被问到名字的时候,键入root(强制)。

完成分区,键入w将分区写入到磁盘上,键入q退出mac-fdisk

注意: 为了确保一切正常,你可以再次运行mac-fdisk来检测所有的分区是否已经创建好。如果你没有看到任何你创建的分区或者你所做的改动,在mac-fdisk中你需要按i来重新初始化你的分区。注意这将重新创建分区表并移除所有的分区。

现在你的分区已经创建好了,请继续阅读创建文件系统

4.d. IBM pSeries、iSeries和OpenPower:使用fdisk来为你的磁盘分区

注意: 如果你计划使用RAID磁盘阵列来安装你的Gentoo系统而且你使用的是基于POWER5架构的硬件,你应该用iprconfig以Advanced Function格式来格式化磁盘和创建磁盘阵列。应该在安装完成后emerge iprutils

如果你拥有一个基于ipr的SCSI适配器,现在你需要启动ipr工具。

代码 4.1: 启动ipr工具

# /etc/init.d/iprinit start

接下里的部分将解释如何创建一个先前描述的分区布局示例,也就是:

分区 描述
/dev/sda1 PPC PReP启动分区
/dev/sda2 交换分区
/dev/sda3 root分区

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

查看目前的分区布局

fdisk是一个流行且功能强大的用于分割磁盘成分区的工具。在你的磁盘上启动fdisk(在我们的例子中,我们使用/dev/sda):

代码 4.2: 启动fdisk

# fdisk /dev/sda

一旦在fdisk中,你会看到像这样的一个提示符:

代码 4.3: fdisk提示符

Command (m for help):

如果你系统里还有AIX分区布局,你会得到下面的错误信息:

代码 4.4: fdisk的错误信息

  There is a valid AIX label on this disk.
  Unfortunately Linux cannot handle these
  disks at the moment.  Nevertheless some
  advice:
  1. fdisk will destroy its contents on write.
  2. Be sure that this disk is NOT a still vital
     part of a volume group. (Otherwise you may
     erase the other disks as well, if unmirrored.)
  3. Before deleting this physical volume be sure
     to remove the disk logically from your AIX
     machine.  (Otherwise you become an AIXpert).

Command (m for help):

不要担心,你可以通过按o来创建一个新的空的DOS分区表。

警告: 这样会破坏所有已安装的AIX版本

键入p用以显示你的磁盘目前的分区配置:

代码 4.5: 一个示例分区配置

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          12       53266+  83  Linux
/dev/sda2              13         233      981571+  82  Linux swap
/dev/sda3             234         674     1958701+  83  Linux
/dev/sda4             675        6761    27035410+   5  Extended
/dev/sda5             675        2874     9771268+  83  Linux
/dev/sda6            2875        2919      199836   83  Linux
/dev/sda7            2920        3008      395262   83  Linux
/dev/sda8            3009        6761    16668918   83  Linux

Command (m for help):

这个硬盘有六个Linux文件系统(System一栏标记为“Linux”)和一个交换分区(标记为“Linux swap”)。

删除所有分区

我们会先删除所有硬盘上存在的分区。键入d来删掉一个分区。举个例子,删掉一个存在的分区/dev/sda1

注意: 如果你不想删除所有的分区,就只删掉那些你希望删除的分区。现在作者建议先将你的系统备份一下以避免不必要的损失。

代码 4.6: 删除一个分区

Command (m for help): d
Partition number (1-4): 1

这个分区已列入删除的进度表。如果你键入p它也不会出现,但是它还没有被删除,到你保存改动后它才会被删除。如果你犯了错想要取消掉未保存的改动,立即键入q并按回车,你的分区将不会被删除。

现在假设你很想删除你系统上的所有分区,重复键入p来显示分区列表和键入d和分区的号码来删除它。最终,你会得到一个空白的分区表:

代码 4.7: 一个空白的分区表

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

现在内存中的分区表已经空了,我们已经准备开始创建分区了。我们会使用之前讨论过的分区模式。当然,如果你不想要同样的分区模式,不要完全照抄如下的指南!

创建PPC PReP启动分区

我们首先创建一个小的PReP启动分区。键入n来创建一个新的分区,然后键入p来选择一个主分区,紧接着键入1来选择第一个主分区。当碰到要填写第一个柱面时,按回车键。遇到要填写最后一个柱面时,输入+7M来创建一个大小为7M的分区。在这之后,键入t设置分区类型,1用来选择你刚创建的分区,然后键入41来设置分区为“PPC PReP Boot”。最终,你需要将PReP分区标为可启动。

注意: PReP分区必须小于8M!

代码 4.8: 创建PReP启动分区

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
      e   extended
      p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6761, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-6761, default
6761): +8M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 41
Changed system type of partition 1 to 41 (PPC PReP Boot)

Command (m for help): a
Partition number (1-4): 1
Command (m for help):

现在,当你键入p时,你会看到如下的分区信息:

代码 4.9: 创建启动分区

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1  *            1           3       13293   41  PPC PReP Boot

Command (m for help):

创建交换分区

让我们现在开始创建交换分区吧。首先键入n来创建一个新的分区,然后按p告知fdisk你想要一个主分区。接着按2来创建第二个主分区,我们例子中使用/dev/sda2。当遇到填写第一个柱面时,按回车。遇到填写最后一个柱面时,输入+512M来创建一个512M大小的分区。在这之后,键入t来设置分区类型,2来选择你刚刚键入的磁盘分区,接着键入82来设置分区类型为“Linux Swap”。在完成这些步骤后,键入p应该可以看到近似以下的分区表:

代码 4.10: 创建一个交换分区后的分区列表

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           3       13293   41  PPC PReP Boot
/dev/sda2               4         117      506331   82  Linux swap

Command (m for help):

创建root分区

最后,我们来创建root分区。首先键入n来创建一个新的分区,随后键入p来告诉fdisk你想要一个主分区。接着输入3来创建第三个主分区,我们例子中使用/dev/sda3。当遇到填写第一个柱面时,按回车。到遇到填写最后一个柱面时,按回车来创建一个使用余下所有磁盘上剩余空间的分区。在完成这些步骤后,键入p应该可以近似于如下的分区表:

代码 4.11: 创建好root分区后的分区列表

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           3       13293   41  PPC PReP Boot
/dev/sda2               4         117      506331   82  Linux swap
/dev/sda3             118        6761    29509326   83  Linux

Command (m for help):

保存分区布局

保存分区布局和退出fdisk,键入w

代码 4.12: 保存和退出fdisk

Command (m for help): w

现在你的分区已经创建好了,请继续阅读创建文件系统

4.e. 创建文件系统

介绍

至此你的分区都创建好了,是时候在上面放置文件系统了。如果你不介意选择什么文件系统而且对本手册中默认使用的文件系统满意,请继续看将文件系统应用到分区上。否则就继续阅读以了解可用的文件系统……

文件系统

注意: 有几种文件系统是可以使用的。ext2, ext3 and ReiserFS的支持是安装CD的内核内建的。JFS和XFS是通过内核模块支持的。

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似乎对各种各样的硬件问题显得不够宽容。

应用文件系统到分区上

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

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

例如,将root分区(本例中的/dev/sda4)设为ext3,你应该使用:

代码 5.1: 应用一个文件系统到分区上

# mke2fs -j /dev/sda4

现在在你新建的分区(或逻辑卷)上创建文件系统。

重要: 如果你的/选择使用ReiserFS,并且你将使用yaboot作为你的引导程序的话,不要改变ReiserFS的默认块大小,就像配置引导程序里所解释的。

激活交换分区

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

代码 5.2: 创建一个交换分区签名

# mkswap /dev/sda3

要激活交换分区,使用swapon

代码 5.3: 激活这个交换分区

# swapon /dev/sda3

现在创建和激活之前命令中提及的交换分区。

4.f. 挂载

现在你的分区已经初始化好,而且也有了文件系统,是时候来挂载这些分区了。使用mount命令。不要忘记创建为每个你创建的分区必要的挂载目录。这里有个例子,我们创建了一个挂载点,并挂载root分区:

代码 6.1: 挂载分区

# mkdir /mnt/gentoo
# mount /dev/sda4 /mnt/gentoo 

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

请继续阅读安装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开发人员

Pieter Van den Abeele
Gentoo PPC开发人员

Joe Kallar
Gentoo SPARC开发人员

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
编辑

Xavier Neys
编辑

Joshua Saddler
编辑

Gerald J. Normandin Jr.
审校

Donnie Berkholz
审校

Ken Nowack
审校

Lars Weiler
投稿

Tobias Scherbaum
编辑

杨珂
译者

沈辰俊
译者

叶宝泰
译者

张乐
译者

余雷
译者

王国辉
译者

娄东斌
译者

贾震
译者

杨小广
译者

余鈺炜
译者

陈代焱
译者

范华
译者

陈永骥
译者

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.