Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1830611
  • 博文数量: 237
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-30 10:33
文章分类

全部博文(237)

文章存档

2011年(1)

2007年(59)

2006年(177)

我的朋友

分类: BSD

2006-06-23 10:32:47

OpenBSD全能服务器安装手册之系统安装篇

--分区概念的相关介绍

分区

安装openbsd时最困难的是确定如何分区你的硬盘,当你不知道分区如何工作时,选择一个分区布局是很棘手的。不像很多安装程序提供了华丽的菜单和图形工具,openbsd安装程序认为你会使用低级磁盘管理工具。

分区是一块硬盘逻辑上的一部分,不同的分区可以用不同的方法来处理,甚至可以有不同的文件系统或不同的操作系统安装在他们上面。我们将讨论单个操作系统和多重操作系统安装的分区。

注:用一张纸记下关于你分区的一些东西,从记录你的硬盘容量开始(这是你用来划分分区的总的空间大小),到记录下你想要划分分区的大小和分区放置顺序。这将使你的openbsd安装更加容易。

 

为什么分区?

分区看起来可能使人厌烦,但为什么你要费心于它?很多商业操作系统允许你在整个硬盘上简单的仅有一个大的分区,给你一个单个的80-gig分区。分区的优点是什么?

不同的操作系统有不同的分区类型和硬盘布局需求。一个微软的操作系统不能认出openbsd的磁盘格式,在使用它前,一定要先格式化它。但是openbsd能够安装大多数为现在流行的操作系统设计的分区,不要把openbsd操作系统的主要程序放在不属于他的分区上,让每个操作系统运行在磁盘上属于他们的那一块,如果你想在你的机器上安装多个操作系统,那你就必须分区。

但是当你运行一个只安装openbsd操作系统得机器时,为什么还要为划分硬盘费心?在物理级,硬盘的不同部分运行速度不同,把需要频繁存取的数据放在磁盘运行速度快的那部分,你可以提高系统性能。要实现这个安排的唯一办法就是分区。操作系统单独地控制每个分区,也意味着你可以有差别地配置每个分区或用不同的规则来设置它们。例如,Root分区是唯一需要设备节点的分区,因此你可以告诉其他分区不识别设备节点,包含用户数据的那些分区应该没有setuid程序,甚至你可能不想让这些分区包含任何程序,单独的分区使这些都变得很容易。你想要主系统配置目录不能被改变,以便于入侵者或新手不能修改它?使用单独的分区是很平常的。如果一个分区被损坏,可能性是损坏没有扩展到其他分区,你可以使用完好的分区来引导系统并尝试恢复损坏分区上的数据。最后,正确的使用分区可以提升系统的安全性,不但黑客更加难以入侵你的机器,而且你们自己的使用者也会发现偶然地损坏系统也会更加困难。在为一个硬盘分区前,考虑一下系统将被用来做什么,一个邮件服务器?一个web服务器?还是一个桌面pc?接下来我们将讨论在不同类型的服务中每个分区的需求。

 

单独openbsd电脑的分区

如果你正在安装一个openbsd专用的机器,你不用为与其他操作系统分享硬盘而操心,这简化了分区过程——你只需要操心openbsd的需求。

你主要需要考虑的分区是/root),交换空间(swap),/tmp/var/usr/home分区。如果你忘记建立任何这些分区,安装程序将会把原本属于这些分区的文件放到你的root分区,这将很快填满你的root分区。

Root

Root分区包含主系统配置文件和大多数使计算机进入单用户模式所需的unix工具。你的计算机应该快速存取root文件系统,因此,把root分区第一个放在磁盘上。由于这个分区仅仅包含那些基本工具和配置文件,因此它不需要很大。在现代的硬盘上,我发现500MBroot分区就很宽裕了。建议你的root分区不要小于50MB。(根据不同版本openbsd确切的最小空间需求,你可以使用更少的空间来勉强度日。这一句我不知道怎样表达好,就这样先凑合着吧)

如果你熟悉一些其他类unix操作系统,例如一些linux发行版,你可能习惯简单的使用一个大的root分区,并把所有的东西放在它上面,从种种原因来说,这是一个坏主意。用一个分区来安全地限制你的日志文件,一个陷入狂乱的进程或用户不能填满你的整个磁盘;然而他可以填满一个分区,这样你仍然可以在其他分区上创建和编辑文件,给你查找真正的问题所在带来便利。另外,使用一个分区,你不能控制文件在磁盘上放置的位置,这样损害了性能。对硬盘的损害会扩展到系统不相关部分的不同文件,这就意味着你从一个被损害的磁盘或文件系统问题中恢复的可能性会明显降低。

 

根分区限制

这段就不翻译了,主要是说以前的老机器上的一些504M8gb限制,现在的电脑上一般没有这些问题,例如我的电脑上op就是装在13g以后的空间中了,用起来也没什么问题。

 

交换空间

在你的驱动器上接下来的分区应该是交换空间,被虚拟内存使用的磁盘空间。当你的计算机填满它的物理内存,它将把内存中空闲不用的信息移到交换分区,如果事情进行的很好,你可能永远也不会使用到交换空间,但是如果你确实需要使用它,你需要使他更快。(注:所以要把交换分区放在第二个分区上,越靠近硬盘头部,速度越快)

那么,你需要多大的交换空间呢?这是在系统管理员之间争论了很很长时间的一件事,简短的回答是“这取决于你的系统”,一般的看法是你至少需要两倍于物理内存大小的交换空间,如果你的系统耗尽了内存,这是一个不错的规则,就像你所知道的,这是很笼统的,多一点没有害处,少一点也可以。

相反,如果你发现需要更多的交换空间,你可能需要买更多的内存。如果这不是一个选择,你可以用一个规则的文件来作为交换文件。尽管如此,如果你有一个合理的磁盘空间数量,简单的分配两倍于内存数量的磁盘空间是明智的。

你也应该考虑到以后的升级,如果你现在有500MB的内存,并计划在几个月内把它升级到3GB,可能分配6G的磁盘空间给交换分区是一个好主意。毕竟,如果你能提供3G的内存和硬件来管理他,无疑那么多的磁盘是没有争议的(注:这句话我自己都不明白,更不知道怎么表达了)

 

交换分区分割

如果你有多个磁盘,通过把交换空间分割到多个磁盘,你可以极大地提升交换空间的效率。把第一个交换分区放在root分区后面,其他交换空间放在其所在磁盘的最外边,这样分担读写在多个磁盘控制器上。然而,为了使交换分区分割更好的工作,这些磁盘必须是scsi接口的磁盘。如果你使用ide磁盘,这些磁盘需要在不同的ide控制器上。记住,ide控制器他的数据吞吐量分割到所有连接到它上面的硬盘上,如果你有两个硬盘连接到同一个ide控制器上,并且你同时存取这两个硬盘,每一个硬盘均分的速度是他们单独运行时速度的一半。在使用交换空间时的主要瓶颈就是数据吞吐速度,在你的ide总线上引起竞争不能增加速度。

 

/tmp

/tmp目录是系统范围的临时空间,如果你不单独创建一个/tmp分区,它将包含在你的root分区,这就意味着你的系统范围的临时空间将遵从root分区剩余部分一样的条件,这可能不是你想要的,特别是你计划要把root分区安装成只读时。

毕竟,/tem目录的需求是有关看法的一件事,你可以在你的home目录里用一大块空间作为临时空间。在一块现代的硬盘上,我喜欢给/tmp目录至少分配500MB空间。自动的软件安装程序经常需要把文件解压到/tmp目录,当/tmp有可能被充满但是冗长时不得不围绕这些安装程序工作。

 

/var

/var目录包含经常变化的日志文件、mail spools(邮件卷轴?)、临时性的运行文件、默认的web站点等等。如果你的服务器是一个web服务器,你的web站点日志将会放在这个分区,你可能需要为他分配1GB或更大的空间。在一个小的普通的mail/web服务器上,我经常把剩余磁盘空间的20%分配给/var,如果这个服务器只运行email或数据库,我将分配给他70%或更多的空间。或者把剩余的分区分成一个空间,把我所有其他的东西都放在/var中,如果你确实空间不足,至少要为/var分配30MB空间。(确切的最小需求依赖于因openbsd版本的不同而不同)

 

/usr

/usr目录包含操作系统程序、系统源代码、编译器和库以及其他的像这样的一些小细节。他们中的许多只有在你升级系统时才改变。

在一个现代的的硬盘上,我建议你给/usr目录分配大约6GB,这对/usr下的内容和你想要增加的包来说足够用,并且还为你想要安装的任何openbsd源程序留出了空间。如果不安装x窗口系统,至少要为/usr分配200MB,如果你需要x,那么/usr至少要有350MB

 

/home

用户把他们的文件保存在/home分区中。如果你有更多的磁盘空间,对你来说是好事,在这里分配它。在未来的几年里,/home目录会很快被各种材料填满。

无疑,/home分区被作为磁盘上的最会一个分区,它既不需要很快也不需要很大,在这个分区上只包含你需要的文件。

注:如果你把上面的这些加起来,你就会注意到完全安装openbsd(不包括x)不超过300MB。作为一时的兴趣,与winxpsolaris 9的最小安装对比一下。如果你完全安装还包括你的用户程序,将会远远超过300MB,这并不是操作系统本身有这么大,而是你特殊需要的程序占用了空间。

 

 

多个硬盘

如果你有第二块和主硬盘性能一样的硬盘,通过恰当的计划,你可以很好的使用它。首先,像swap分区那节讨论的一样,把这块硬盘最外的部分作为交换分区。使用剩余的空间把你的数据从操作系统中分离出来,通过把服务经常使用的文件存储到剩余空间划分的分区来达到这个目的。如果是一个web服务器,把第二块硬盘分区成/www或者/home,如果是一个邮件服务器,把它分区成/var/var/mail;如果是网络登陆主机,把它分区成/var/log

一般情况下,把数据从操作系统中分离出去可以提高系统性能,像其他的拇指规则一样,这也是存在争议的,尽管人们可以无止境的争论什么是“最好”的主意,但是没有一个系统管理员会告诉你这确实是一个坏主意。

如果你对你的系统没有什么主意,可以把第二块硬盘作为/usr,第一块硬盘划分成/var, /tmp, /, swap space

如果你有比主系统盘慢得多的第二块硬盘,不要操心来使用它,不但他的性能会低的可怜,而且可能比主系统盘要老的多,甚至于处在即将报废的边缘。

如果你需要安装多个操作系统,多余的硬盘是很好的,这将使这项工作变得容易的多。

 

 

安装openbsd时需要多少空间?

很显然,答案极端地依赖于你如何使用系统,然而下面的这些数据可以作为一个开始点。

(root)             100MB

/usr               250MB (no X) or 400MB (with X)

/var               25MB

/tmp               50MB

swap               32MB

对于完全的系统安装来说,这是建议的最小文件系统大小。这些数据包含足够的额外空间来允许你运行连接于internet家庭系统,但是没有更过的空间来做其他。

 

记住下面的这些事实:

这些是最小的值。硬盘空间是相当的节省的了,试着把你的系统压缩到最小的空间是无谓的努力。对于特殊目的的应用,上面的这些数值还可以再小一点,但是你应该对此非常有经验。

 

如果你计划安装大量的第三方软件,给你的/usr分区更大的空间,当然,分配多大的空间依赖于你的应用程序。

 

对一个控制很多的电子邮件或web页面(分别存储在/var/mail /var/www)的系统来说,你应该给/var分区大得多的空间,或者给这些目录分配单独的分区。

 

l  对一个会产生很多日志文件的系统来说,你仍然需要给/var分区大得多的空间,或者为/var/log创建单独的分区。

 

如果你计划从源代码重建内核和系统,你需要给/usr大得多的分区,3G是一个不错的数值。

从源代码编译一些ports会占用大量的/usr/tmp空间,这就是为什么我们反而建议你使用预先编译好的packages

 

/tmp被用来编译ports和其他的一些事情,因此,它的大小依赖于你要用它来做什么,对大多数人来说50M就足够了,但是一些大一点的应用程序需要100M或更多的/tmp空间。

 

你的第一个硬盘上的b分区被自动的分配给系统交换分区,我们建议的最小大小是32MB,但是如果你有可分配的磁盘空间,我们建议你最少把它设置为64MB,如果你有许多可分配的磁盘空间,你可以把它设置为256MB甚至是512MB。从另一方面来说,如果你使用闪存设备来当作硬盘,你可能根本就不需要交换分区。许多人遵从这样一个旧的拇指规则:交换空间两倍于内存大小。这个规则是胡说,在一个现代的系统上,这是一个很大的交换空间,很多人宁愿他的系统从来就不使用交换分区。使用多少空间应该和你的需要相符。

 

在使用crash8)的情况下,交换空间和/var被用来转存系统核心,如果这是你的一个考虑,你的交换空间应该始终比你的内存稍微大一点。在系统重启的时候,savecore(8)将尝试把交换空间中的文件保存到/var/crash的一个文件中,如果这是你优先考虑的,你的/var分区应该有足够的空间来容纳转存的文件。实际上,很少开发者想要看到你转存1GB的文件,因此如果你不计划在本地研究crash,这可能不是一个要关心的事情。

下面是一些使用单独的文件系统而不是把所有的东西都挤在一个或两个文件系统中的原因:

 

安全性:你可以把一些文件系统设置为'nosuid', 'nodev', 'noexec', 'readonly'等等,这被安装进程来完成,如果你使用上面描述的分区的话。

 

稳定性:一个对某个文件系统有写权限的用户或不良程序可以把这个文件系统填满垃圾,你运行在其他分区上的关键程序可以继续运行而不被打断。

 

速度:一个经常被写的文件系统会产生一些碎片。(幸运的是,openbsd使用的ffs文件系统不容易产生大量的碎片)

 

健全:如果你的某个文件系统因某种原因被打断,其他文件系统还会运行的很好。

大小:许多机器的引导rom在引导内核时对内核在硬盘上所处的区域有限制。在某些情况下,这个限制值非常小(在486机器上是504MB),另外一些情况下,这个限制值会大一点(例如,在386系统上有2G, 8G, 128G)。因为内核可能结束于整个root分区的任何地方,所以整个root分区应该在这个区域内。一个好的指导方针是把你的/分区放在2G之内,除非你知道你的平台可以比这个控制更多(或更少)。

对分区的一些进一步想法:

 

对于你的第一次尝试体验这个系统的时候,一个大的/分区和交换分区会更容易一些,直到你知道你需要多大的空间。对于openbsd这样需要单独的/, /tmp, /var, /usr /home分区的系统来说,这样做你将会损失一些系统默认的安全性。然而如果不这样做,你的第一次openbsd安装有可能会完不成。

 

对于一个连接与internet或被迫暴露于敌人面前的系统来说,需要一个单独的/var分区(甚至是一个单独的/var/log分区)用来记录日志。

 

一个单独的/home分区会很好,一个新版本的OS将会摸除和重载除了这个分区以外的所有其他东西。尽管这样,记着把你的配置文件备份一份。

 

为需要删除大量堆积文件的目录建立一个单独的分区来格式化或重建要比删除文件快的多。

 

如果你因为其他原因想要从源代码重建系统,源代码保存在 /usr/src,如果你不能为它建立一个单独的分区,你需要确保/usr有充足的空间。

 

一个经常被遗忘的事实是:在安装系统的时候,你不得不把你磁盘空间耗尽。因此,从现在开始你就应该找个机会购买一块小于20G的硬盘,这样将会给你带来一块没有被分配的硬盘空间的益处。如果你的一个分区空间不够用,你就可以从你没有使用的空间中重新为其分配一个分区,使用duplicate来把你现有的分区转移到一个新的分区上,改变/etc/fstab把他指向到一个新的分区上,这样你将获得更多的空间。

 

如果你把你的分区分成很接近建议的最小空间的时候,你很可能在不久的将来就后悔这样做,那时就是你升级系统的时候。

 

如果你创建很大的分区,请记住:使用fsck(8)来检查文件系统,每G文件系统空间需要1MB内存,这将很浪费时间,并且不适用于老的、更慢的系统。

 

如果你允许/var/www可写,你可能希望把它放在一个单独的分区,这样你就可以使用quotas来限制他们使用的空间,这样,如果他们填满这个分区,你的系统将没有其他的空间来被他们使用。

 

看了上面这些内容你就应该明白如何分配你的分区大小,如果不明白,那就是我翻译的太烂,还不如直接看英文版,所幸,我在这里引用了原版的英文版可供你观看。

 

 

 

 

 

 

下面就要开始分区操作了,在继续进行之前,需要先了解一些基础知识。对于以前一直使用windows的人来说,特别是对于从用电脑开始就是用win2000及其以后的版本win系统的人来说,分区很简单,只需要简单的指定那个分区的大小就可以了,但是对于大多数unix系统来说,想要分区,你必须了解一些底层的东西,要不然,只是看看unix的分区工具你就会觉的眼晕,更不用说来使用它们进行工作了。你可能会问,为什么不把这些内容也放到前面说的那些基础部分里去呢?因为我感觉,前面所说的安装包的选择和分区大小的确定,是偏向于概念性的东西,放在前面了解,有助于对整个安装进行规划,而现在讲的内容是偏向于实践性的东西,边了解边实践效果应该是最好的了。

 

    一个磁盘驱动器由一个或多个磁碟组成,每一个都用相当光滑的玻璃或者陶瓷制成,并覆盖上一层精细的金属氧化物。磁碟放在一个中心轴上面,并按照稳定 的速度转动。转动速度根据型号不同从300010000RPM(转/每分钟)。

 

磁道(track

    大家都知道,读写硬盘时,磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径的百分之一)。由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的圆周为一个磁道(Track)。如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。磁道在磁碟的表面做同心圆排列,每个磁碟表面的磁道都有一个单独的编号,磁道0是最外面的磁道,最高编号的磁道是最接近中心轴的磁道。根据硬盘规格的不同,磁道数可以从几百到数千不等。

 

扇区(Sector

    一个磁道上可以容纳数KB的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区(Sector)。一个扇区一般存放512字节的数据。扇区也需要编号,同一磁道中的扇区都有一个单独的编号,分别称为1扇区,2扇区....这里需要注意的是,硬盘在划分扇区时,和一般的软盘有一定的区别。软盘的一个磁道中,扇区号依次编排,即2号与1号相邻,3号与2号相邻,以此类推。而在硬盘的一个磁道中,扇区号是按照某个间隔跳跃着编排的。我们举一个例子来说明:在某个硬盘上,以实际存储位置而论,2号扇区并不是1号扇区后的第一个,而是第5个,3号扇区又是2号扇区后的第5个,以此类推。这个"5"就是我们说的交叉因子。当然,这个交叉因子的设定并不是绝对的,每个种类的硬盘为根据自身的情况加以变化。选择适当的交叉因子,可使硬盘驱动器读写扇区的速度与硬盘的旋转速度相匹配,提高存储数据的速度。

 

扇区(Sector)如何读写?计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅是由512个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区。

 

主引导扇区(MBR区)

    硬盘的一个扇区(001扇区)被保留为主引导扇区(即Master Boot Record,一般简称为MBR)。在主引导区内主要有两项内容:主引导记录和硬盘分区表。主引导记录是一段程序代码,其作用主要是对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。

 

柱面(cylinder)和头(head)

    硬盘一般是由一片或几片圆形薄膜叠加而成。我们所说,每个圆形薄膜都有两个""(Side),这两个面都是用来存储数据的。按照面的多少,依次称为0面、1面、2面……由于每个面都专有一个读写磁头,也常用0(head)1头……称之。按照硬盘容量和规格的不同,硬盘面数(或头数)也不一定相同,少的只有2面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(cylinder

 

chs寻址

    明白了上面这些名词的含义,就很容易理解chs寻址了,依次确定了柱面(cylinder)、头(head)和扇区(Sector),就可以找到数据在硬盘上的物理地址。chs是这三个英语单词的缩写。

 

    硬盘分区后,将会被划分为面、磁道和扇区。需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划道子,很多操作系统使用chs来寻址,需要注意的是,操作系统上用的chs也是虚拟的,并不是你硬盘物理上实际的chs数,因为,不同的硬盘包含的磁碟数目可能也不相同,比如,同是20G的硬盘,有的可能包含2碟(4head),有的可能包含3碟(6head)等等,同时,每个磁道可划分的扇区(sector)也不相同。为了方便硬件管理,操作系统采用虚拟的chs,不管你是哪一种硬盘,都采用同一的chs数值来管理,当然,一般来说,虚拟的head数和sector数是固定不变的,只有clinder随硬盘的容量而变化,比如说,openbsd3.8,每一个clinder包含的head数是固定的240,编号规则是[0-239],每个磁道划分的扇区数也是固定的63,编号规则是[1-63],只有clinder数随硬盘大小而不同,编号规则是[0-]。每种操作系统的chs规则也不尽相同,比如说windowshead200sector256(这个只是我随便写的,具体是多少,你可以查查资料),所以,在安装操作系统,特别是安装多操作系统时,最好是用操作系统自带的分区工具为其划分分区空间,不然的话就容易出错。

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