[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]
4.a. 块设备的介绍
块设备
我们将来看看Gentoo Linux和Linux上磁盘相关方面的问题,包括文件系统、分区和块设备。然后,只有你熟悉了磁盘和文件系统的细节,你才将可以在Gentoo Linux的安装中正确的设置分区和文件系统哦。
我们将从介绍块设备开始。最为人所知的块设备很可能是Linux系统的第一个IDE驱动器,也就是/dev/hda。如果你的系统使用SCSI驱动器,那么你的第一个硬盘驱动器就是/dev/sda。
上面的块设备其实是磁盘的接口的抽象概念。用户编程时不需要担心你的驱动器是IDE、SCSI或者别的什么,也可以使用这些块设备和你的磁盘交流。程序可以简单的以一连串连续和随机存取的512字节块来定位存储。
分区
虽然理论上是可以用整个磁盘来放置你的Linux系统,但是实际的操作几乎很少如此。反而,整个磁盘将会被分为几个更小更方便管理的块设备。在x86系统上,它们被称作为分区。
分区分为三种:主分区、扩展分区和逻辑分区。
一个主分区是在MBR(主引导记录)上有其记录信息的分区。因为MBR很小(512字节),所以只能定义三个主分区(比如/dev/hda1到/dev/hda4。
一个扩展分区是一种特别的主分区(也就是扩展分区必须是四个可能主分区中的一个),它能包含更多的分区。这样的一个分区实际上并不存在,但是因为四个分区实在太少,为扩展分区表而又不会失去向后兼容能力,就引入了这个概念。
一个逻辑分区是扩展分区里的一个分区。它们的定义不是放在MBR里,但是在扩展分区里声明的。
高级存储
x86的LiveCD提供了对EVMS和LVM2的支持。EVMS和LVM2可以增加对你的分区设置的灵活性。在这个安装说明中,我们将集中于“常规”分区,但是了解可以支持EVMS和LVM2也是很有用的。
4.b. 设计分区表
默认的分区策略
如果你对为你的系统设计一个分区策略没什么兴趣的话,你可以使用我们在这本书里介绍的分区策略:
| 分区 | 文件系统 | 大小 | 描述 |
| /dev/hda1 | ext2 | 32M | 启动分区 |
| /dev/hda2 | (swap) | 512M | 交换分区 |
| /dev/hda3 | ext3 | Rest of the disk | 根分区 |
如果你感兴趣于一个分区应该多大,或者你需要多少分区,继续读下去。否则从使用fdisk对你的磁盘分区继续。
多少?多大?
分区的数量主要根据你的环境所定。比如说,如果你有多个用户,你将会愿意使/home单独出来,这样不仅增加了安全性还方便备份。如果你安装Gentoo是用作邮件服务器,你的/var应该单独出来,因为它里面存储了所有的邮件。然后文件系统的选择将会提高系统的性能。游戏服务器将有一个单独的/pot,因为绝大多数的游戏服务器都安装在此,原因同/home的一样:安全性和备份。
就同你看到的,这很大程度上取决于你要达到的目标。单独的分区或者卷有如下优点:
但是,多分区也有一个很大的缺点:如果没有合理配置,你可能导致在一个系统里导致一个分区过多的剩余空间而另一个分区没有空间。
作为分区的一个样例,我们给你看看一个示范笔记本(包含网站服务器、邮件服务器、gnome……)上20Gb磁盘的分区表:
代码 1: 文件系统使用样例 |
Filesystem Type Size Used Avail Use% Mounted on
/dev/hda5 ext3 509M 132M 351M 28% /
/dev/hda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/hda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/hda8 ext3 1011M 483M 477M 51% /opt
/dev/hda9 ext3 2.0G 607M 1.3G 32% /var
/dev/hda1 ext2 51M 17M 31M 36% /boot
/dev/hda6 swap 516M 12M 504M 2% <not mounted>
(还有2Gb的未分区空间留作后用)
|
这里/usr用的很充分(使用了83%),但是一旦所有的软件都已经安装了,/usr就不会继续增长下去了。对于/var来说,人们可能认为分配的空间太多了。但是,Gentoo是在/var/tmp/portage里编译所有的软件,因此你至少应该让/var在不编译大软件的情况下留有1G的剩余空间,而在编译KDE和OpenOffice.org时则需要3G的剩余空间才可以对你不会造成问题。
4.c. 使用fdisk对磁盘分区
下面的部分将会解释怎样创建前面提到的样例分区表,也就是:
| 分区 | 描述 |
| /dev/hda1 | 启动分区 |
| /dev/hda2 | 交换分区 |
| /dev/hda3 | 根分区 |
根据你自己的意愿来改变你的分区表。
查看当前分区布局
fdisk是用来对磁盘进行分区的很流行和强大的一个工具。在你的系统中输入fdisk(在我们的例子中,我们将使用/dev/hda):
代码 2: 开始fdisk |
# fdisk /dev/hda
|
一旦进入fdisk后,你将会看到如下的提示符:
代码 3: fdisk提示符 |
Command (m for help): |
输入p来查看你硬盘上的当前分区设置:
代码 4: 一个分区配置的样例 |
Command (m for help): p
Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 49 264600 82 Linux swap
/dev/hda3 50 70 158760 83 Linux
/dev/hda4 71 2184 15981840 5 Extended
/dev/hda5 71 209 1050808+ 83 Linux
/dev/hda6 210 348 1050808+ 83 Linux
/dev/hda7 349 626 2101648+ 83 Linux
/dev/hda8 627 904 2101648+ 83 Linux
/dev/hda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
这个已分区的磁盘配置用来放置七个Linux文件系统(每个都有一个相对应的分区,以“Linux”出现)和一个交换分区(以“Linux swap”出现)。
删除所有分区
首先,我们将从这个磁盘上删掉所有已有的分区。输入d来删掉一个分区。比如,删掉已有的分区/dev/hda1:
代码 5: 删除一个分区 |
Command (m for help): d Partition number (1-4): 1 |
这个分区已经准备删除。在你输入p以后将不再出现,但是直到你做的这些修改保存了,它才回被真正删除掉。如果你犯了点小失误,不想保存任何修改就退出,立即输入q并输入enter,你的分区就不会删除了。
现在,假设你确实要删掉你系统上所有的分区,重复的输入p来列出分区然后输入d和标号来删掉分区。最后,你将会得到一个什么都没有的分区表:
代码 6: 一个空的分区表 |
Disk /dev/hda: 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来选择第一个主分区。当提示第一个扇区时,点击enter。当提示最后的扇区时,输入+32M来创建一个大小为32Mbyte的分区。
代码 7: 创建启动分区 |
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): (Hit Enter) Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M |
现在,当你输入p时,你应该可以看到如下的分区:
代码 8: 已创建的启动分区 |
Command (m for help): p
Disk /dev/hda: 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/hda1 1 14 105808+ 83 Linux
|
我们需要这个分区可以启动。输入a在这个分区上切换可启动标签。如果你再输入p,你将会注意到在“Boot”栏有一个*。
创建交换分区
现在我们来创建交换分区。要做这个,输入n创建一个新分区,然后输入p来告诉fdisk你需要一个主分区。然后输入2来创建第二个主分区,在这里也就是/dev/hda2。当提示第一个扇区时,点击enter。当提示最后一个扇区时,输入+512M来创建一个大小为512MB的交换分区。做完这些之后,输入t来设定分区类型,2来选择你刚才创建的分区,然后输入82将分区类型设置为“Linux Swap”。完成这些步骤后,输入p应该可以看到类似如下的分区表:
代码 9: 创建一个交换分区后的分区表 |
Command (m for help): p
Disk /dev/hda: 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/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
|
创建根分区
最后,让我们来创建根分区。要做这个,输入n创建一个信分区,然后输入p来告诉fdisk你需要一个主分区。然后输入3来创建第三个主分区,在这里也就是/dev/hda3。当提示第一个扇区时,点击enter。当提示最后一个扇区时,点击enter来创建一个使用磁盘剩下所有剩余空间的分区。完成这些步骤后,输入p应该可以看到类似如下的分区表:
代码 10: 创建根分区后的分区表 |
Command (m for help): p
Disk /dev/hda: 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/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
/dev/hda3 82 3876 28690200 83 Linux
|
保存分区表
输入w保存分区表和退出fdisk。
代码 11: 保存并退出fdisk |
Command (m for help): w
|
现在你的分区已经创建完成,你可以从创建文件系统继续。
4.d. 创建文件系统
简介
现在分区已创建完成,该到给它们文件系统的时候了。如果你并不关心要选择什么样的文件系统,对本书中的默认设置很满意的话,从给分区创建文件系统继续。否则,继续读下去,学习已有文件系统的相关知识……
文件系统?
Linux内核支持各种各样的文件系统,我们着里将解释ext2、ext3、ReiserFS、XFS和JFS,因为这些文件系统在Linux系统中很常见的。
ext2是一个可靠的真正的文件系统,但不支持元数据日志功能,这意味着启动时的日常文件系统检查将会消耗比较多的时间。现在已经有了很多新一代的日志文件系统可供选择,它们在稳定性检查时非常快,在和同等的非日志文件系统比较中越来越受到大家的喜爱。在启动系统时碰巧文件系统处于不稳定状态时,日志式文件系统可以防止出现长时间的延迟。
ext3就是ext2文件系统的日志式版本,提供了用于快速恢复的元数据日志功能和其他的增强日志模式(如全数据和顺序数据日志)。ext3是一个很好的可靠的文件系统,它有一个额外的杂乱b-tree检索选项,使得在几乎任何情况下都可以有很高的性能。一句话,ext3确实是个很优秀的文件系统。
ReiserFS是一个基于B*-tree的文件系统,在处理小文件(小于4k的文件)时,相比较ext2和ext3来说,有极其优秀的表现,常常是它们的10到15倍的性能表现。ReiserFS调整能力极强,也由元数据日志功能。对于高于2.4.18版本的内核来说,ReiserFS是一个可靠和有用的文件系统,可以同时用于多种用途和如大文件系统、小文件很多、大文件和包含极大量文件的文件夹等极端例子中。
XFS是一个具有稳定和对可伸缩性加强的元数据日志功能的文件系统。我们只在使用高端SCSI和/或纤维通道存储(fibre channel storage)和不稳定电源供应这些情况下推荐使用这个。因为XFS在RAM中进行了强劲的流量缓冲,设计不合理的程序(那些在往磁盘写入文件时没有进行合理预测危险的程序,现在很多程序都属于此类)在系统不稳定时会对数据处理失去控制。
JFS是IBM的高性能的日志式文件系统。它最近在商品应用中已经准备就绪,但是在主动或者被动注释这一点上都没有足够的轨道记录。
给分区创建文件系统
要对一个分区或者卷创建文件系统,对于每一个文件系统来说都有一些工具:
| 文件系统 | 创建命令 |
| ext2 | mke2fs |
| ext3 | mke2fs -j |
| reiserfs | mkreiserfs |
| xfs | mkfs.xfs |
| jfs | mkfs.jfs |
比如,我们要将启动分区(在我们例子中是/dev/hda1)设为ext2文件系统,而根分区(在我们的例子中是/dev/hda3)为ext3文件系统,你可以使用:
代码 12: 给分区创建文件系统 |
# mke2fs /dev/hda1 # mke2fs -j /dev/hda3 |
现在为你新创建的分区(或者扩展卷)创建文件系统。
激活交换分区
mkswap是用来初始化交换分区的命令:
代码 13: 创建交换分区标识 |
# mkswap /dev/hda2
|
使用swapon来激活这个交换分区:
代码 14: 激活交换分区 |
# swapon /dev/hda2
|
现在已经创建并激活交换空间了。
4.e. 挂载
现在你的分区已经初始化并都使用了一个文件系统,该到挂在这些分区的时候了。使用mount命令来做这个。当然不要忘了给每个你创建的分区创建必要的挂载文件夹。作为一个例子,我们来挂载根分区和启动分区:
代码 15: 挂载分区 |
# mount /dev/hda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda1 /mnt/gentoo/boot |
注释: 如果你要你的/tmp为一个单独的分区,确认在挂载后修改它的权限:chmod 1777 /mnt/gentoo/tmp。对于/var/tmp也应该如此。 |
我们也需要挂载proc文件系统(一个和内核的虚拟接口)到/proc。我们首先创建挂载点/mnt/gentoo/proc,然后挂载上这个文件系统:
代码 16: 创建挂载点 /mnt/gentoo/proc |
# mkdir /mnt/gentoo/proc # mount -t proc none /mnt/gentoo/proc |
现在从安装Gentoo安装文件继续。
[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]