Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2484934
  • 博文数量: 609
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-25 08:30
文章分类

全部博文(609)

文章存档

2010年(13)

2009年(39)

2008年(558)

我的朋友

分类: LINUX

2008-08-24 18:10:53

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系统,但是在实际中几乎从不这样做。相反,整个磁盘块设备被分割成更小、更容易管理的块设备。在x86系统中,这些被称作分区

分区有三种类型:主分区扩展分区逻辑分区

主分区是把自己的信息储存在MBR(主引导记录)中的分区。由于MBR非常小(512个字节),所以仅可以定义4个主分区(例如,/dev/sda1/dev/sda4)。

扩展分区是一种特殊的主分区(意味着扩展分区必须是4个可能的主分区之一),它包含着更多的分区。这种分区最初并不存在,但是由于4个主分区太少了,为了能划分更多的分区,在保持向后的兼容性的前提下扩展分区诞生了。

逻辑分区是在扩展分区内部的分区。它们的定义不在MBR中,而是在扩展分区中。

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

4.b. 设计分区方案

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

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

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

分区的数目主要根据你的系统环境来决定。例如,如果你有很多用户,你可能更希望把你的/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%
(留作它用的未分配空间:2GB)

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

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

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

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

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

fdisk是一个流行且强大的工具,用来把你的磁盘划分为分区。启动你磁盘上fdisk程序(在示例中,我们使用/dev/sda):

代码 3.1: 启动fdisk

# fdisk /dev/sda

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

代码 3.2: fdisk提示

Command (m for help): 

键入p来显示你的磁盘的当前分区配置:

代码 3.3: 分区配置示例

Command (m for help): p

Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux
/dev/sda2 15 49 264600 82 Linux swap
/dev/sda3 50 70 158760 83 Linux
/dev/sda4 71 2184 15981840 5 Extended
/dev/sda5 71 209 1050808+ 83 Linux
/dev/sda6 210 348 1050808+ 83 Linux
/dev/sda7 349 626 2101648+ 83 Linux
/dev/sda8 627 904 2101648+ 83 Linux
/dev/sda9 905 2184 9676768+ 83 Linux

Command (m for help):

这个磁盘配置包含了7个Linux文件系统(每个对应于列表中名为“Linux”的分区)及一个交换分区(列表中的“Linux swap”)。

首先,我们将把磁盘上的所有分区删除。键入d来删除一个分区。例如,要删除存在的/dev/sda1

代码 3.4: 删除分区

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

该分区就会被列入删除计划。如果你键入p,它也不会再出现了,然而除非你保存了所做的修改,否则它并没有被真正删除。如果你犯了一个错误,想不保存修改并退出,立刻键入q并回车,你分区就不会被删除。

现在,假设你真的想删除你系统中的所有分区,键入p来显示分区列表,然后键入d和要删除的分区的数字,并重复此过程。最后,当分区表中什么也没有的时候你就可以结束了:

代码 3.5: 空的分区表

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System

Command (m for help):

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

首先,我们创建一个小一点的启动分区。键入n创建一个新分区,然后键入p来选择一个主分区,接下来键入1选择第一个主分区。当提示输入第一个柱面的时候,敲回车键。当提示输入最后一个柱面的时候,输入+32M,来创建一个32M大小的分区:

代码 3.6: 创建启动分区

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

现在,当你键入p时,你应该看到如下的分区输出:

代码 3.7: 已创建的启动分区

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux

我们需要把这个分区设置成可启动的。键入a来给分区添加启动标志,然后键入1。如果你再次按p键,你就会注意到,在“Boot”那一列有个*

我们现在来创建交换分区。键入n创建一个新分区,然后键入p来告诉fdisk你创建的是主分区。接着输入2来创建第2个主分区,在本例中是/dev/sda2。当提示输入第一个柱面的时候,直接敲回车。当提示输入最后一个柱面的时候,输入+512M来创建一个512MB大小的分区。在这之后,键入t来设置分区类型,键入2选择你刚刚创建的那个分区,然后再输入82把分区类型设置成“Linux Swap”。完成以上这些步骤之后,键入p,应该显示一个与下面类似的分区表:

代码 3.8: 创建交换分区后的分区列表

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap

最后,我们来创建根分区。键入n创建一个新分区,然后键入p来告诉fdisk你创建的是主分区。接着输入3来创建第3个主分区,在本例中是/dev/sda3。当提示输入第一个柱面的时候,直接敲回车。当提示输入最后一个柱面的时候,单击回车把你磁盘上的剩余空间创建一个分区。完成以上这些步骤之后,键入p,应该显示一个与下面类似的分区表:

代码 3.9: 创建根分区后的分区列表

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
/dev/sda3 82 3876 28690200 83 Linux

键入w来保存分区布局并退出fdisk

代码 3.10: 保存并退出fdisk

Command (m for help): w

现在分区已经创建完毕,你可以继续。

4.d. 创建文件系统

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

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

ext2是经考验证明可靠的Linux文件系统,但是没有元数据日志,这意味这在启动系统时的ext2文件系统的日常检查相当耗时。现在相 当一部分的新一代的日志文件系统都可以非常迅速检查一致性,因此比那些非日志文件系统更受欢迎。当你启动系统碰巧遇到文件系统状态不一致时,日志文件系统 不会在那里耽搁很长时间。

ext3是ext2文件系统的带日志版本,提供了元数据日志模式以快速恢复数据。此外还提供了其他增强的日志模式,如完整数据日志模式和有序数据日志模式。它使用了HTree索引,在几乎所有的情况下都能保持高性能。简而言之,ext3是非常好及可靠的文件系统。

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

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

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

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

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

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

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

# mke2fs /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
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

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

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

请继续阅读。

阅读(470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~