第3章 主机规划与磁盘分区

事实上,要安装好一台Linux主机并不是那么简单的事情,你必须要针对distributions的特性、服务器软件的能力、未来的升级需求、硬件扩充性需求等来考虑,对于磁盘分区、文件系统、Linux操作较频繁的目录等,都得要有一定程度的了解,所以,安装Linux并不是那么简单的工作。不过,要学习Linux总得要有Linux系统存在吧?所以鸟哥在这里还是得要提前说明如何安装一台 Linux 练习机。在这一章里面,鸟哥会介绍一下,在开始安装Linux之前你应该要先思考哪些工作,好让你后续的主机维护轻松愉快。此外,要了解这个章节的重要性,你至少需要了解Linux文件系统的基本概念,所以,在你完成了后面的相关章节之后,记得要再回来这里看看如何规划主机。

3.1 Linux与硬件的搭配

虽然个人计算机各组件的主要接口是大同小异的,包括前面第0章“计算机概论”讲到的各种接口等,但是由于新的技术来得太快,Linux 内核针对新硬件所纳入的驱动程序模块比不上硬件更新的速度,加上硬件厂商针对Linux所推出的驱动程序较慢,因此你在选购新的个人计算机(或服务器)时,应该要选择已经过安装Linux测试的硬件比较好。

此外,在安装Linux之前,你最好了解一下你的Linux预计是想达成什么任务,这样在选购硬件时才会知道哪个组件是最重要的。举例来说,桌面计算机(Desktop)的用户,应该会用到 X Window系统,此时,显卡的优劣与内存的大小可就占有很重大的影响。如果是想要做成文件服务器,那么硬盘或者是其他的存储设备,应该就是你最想要增购的组件。所以说,功课还是需要做的!

鸟哥在这里要不厌其烦地再次强调,Linux对于计算机各组件/设备的分辨,与大家惯用的Windows系统完全不一样。因为,各个组件或设备在Linux下面都是一个文件。这个观念我们在第1章“Linux是什么”里面已经提过,这里我们再次强调。因此,你在认识各项设备之后,学习Linux的设备文件名之前,务必要先将Windows对于设备名称的概念先拿掉,否则会很难理解。

3.1.1 认识计算机的硬件配置

什么?学 Linux 还得要玩硬件?没错!这也是为什么鸟哥要将计算机概论搬上台面之故。我们这里主要是介绍较为普遍的个人计算机架构来设置 Linux 服务器,因为比较便宜。至于各相关的硬件组件说明已经在第0章内讲过了,这里不再重复说明。仅将重要的主板与组件的相关性图示一下,如图3-1所示。

figure_0078_0034

图3-1 个人计算机各组件的相关性

那么我们应该如何挑选计算机硬件呢?随便买买就好,还是有特殊的考虑?下面有些思考角度可以提供给大家参考:

游戏机/工作机的考虑

事实上,计算机主机的硬件配置与这台主机将来的功能是很有相关性的。举例来说,家里有小孩,或者自己仍然算是小孩的朋友大概都知道:用来打游戏的游戏计算机所需要的配置一定比办公室用的工作计算机配置更高档,为什么呢?因为现在一般的三维(3D)计算机游戏所需要的3D光影运算太多了,所以显卡与CPU资源都会被消耗得非常多。当然就需要比较高级的配置,尤其是在显卡、CPU(例如Intel的Core 2 Duo及AMD的Athlon64 X2等)及主板芯片方面的功能。

至于办公室的工作环境中,最常使用到的软件大多是办公软件(Office),最常使用的网络功能是浏览器,这些软件所需要的运算并不高,理论上目前的入门级计算机都能够运行得非常顺畅了。(例如 Intel Celeron 及 AMD 的 Sempron)。甚至很多企业都喜欢购买将显卡、主板芯片集成在一起的集成型芯片的计算机,因为便宜又好用。

性价比的考虑

并不是贵就比较好。如何兼顾省钱与计算机硬件的性能问题很重要。如果你喜欢购买最新最快的计算机零件,这些刚出炉的组件都非常贵,而且操作系统还不见得能够完整地支持。所以,鸟哥都比较喜欢购买主流级的产品而非最高档的。因为我们最好能够考虑到性价比,如果高一级的产品让你的花费多一倍,但是新增加的性能却只有 10%而已,那这个性价的比值太低,不建议。

此外,由于电费越来越高,如何“省电”就很重要。因此目前硬件评论界“每瓦性能”的单位,每瓦电力所发挥的性能越高,当然代表越省电。这也是购买硬件时的考虑之一。要知道,如果是作为服务器用,一年365天中时刻都开机,则你的计算机多花费50W的电力时,每年就得要多花 450 度电左右,如果以企业来讲,如果有一百台计算机每年得多花十万块以上的电费呢。所以这也需要考虑。

支持性的考虑

并非所有的产品都会支持特定的操作系统,这牵涉到硬件开发商是否有意愿提供适当的驱动程序。因此,当我们想要购买或者是升级某些计算机组件时,应该要特别注意该硬件是否有针对你的操作系统提供适当的驱动程序,否则,买了无法使用,那才叫郁闷!因此,针对Linux来说,下面的硬件分析就重要。

3.1.2 选择与 Linux 搭配的主机配置

由于硬件的加速发展与操作系统内核功能的增强,导致较早期的计算机已经没有能力再负荷新的操作系统了。举例来说,P-Ⅱ以前的硬件配置可能已经不再适合现在的新的 Linux distribution。而且较早期的硬件配置也可能由于保存的问题或者是电子零件老化的问题,导致这样的计算机系统反而非常容易在运行过程中出现不明的死机情况,因此在利用旧零件拼凑Linux使用的计算机系统时,真的得要特别留意呢!

不过由于Linux运行所需要的硬件配置实在不需要太高档,因此,如果有近期淘汰下来的,比P-Ⅲ 500还要新的硬件配置,不必急着丢弃。由于P-Ⅲ的硬件不算太老旧,在性能方面其实也算得上非常棒啦,所以鸟哥建议你如果有P-Ⅲ以后等级的计算机被淘汰,可以拿下来测试一下,说不定能够作为你日常生活的Linux服务器,或者是备用服务器,都是非常好用的功能。

但是由于不同的任务的主机所需要的硬件配置并不相同,举例来说,如果你的Linux主机是要作为企业内部的Mail server或者是Proxy server时,或者是需要使用到图形界面的运算(X Window内的Open GL等功能),那么你就必须要选择高档一点的计算机配置了,使用过去的计算机零件可能并不适合呢!

下面我们稍微谈一下,如果你的Linux主要是作为小型服务器使用,并不负责学术方面的大量运算,而且也没有使用 X Window 的图形界面,那你的硬件需求只要像下面这样就差不多了。

CPU

CPU只要不是老旧到会让你的硬件系统死机的都能够支持。如同前面谈到的,目前的环境中, P-Ⅲ的CPU不算太旧而且性能也不错,也就是说P-Ⅲ就非常好用了。

RAM

内存越大越好。事实上在Linux服务器中,内存的重要性比CPU还要高得多。因为如果内存不够大,就会使用到硬盘的内存交换空间(swap)。而由第0章的内容我们知道硬盘比内存的速度要慢得多,所以内存太小可能会影响到整体系统的性能。尤其如果你还想要玩 X Window的话,那内存的容量就不能少。对于一般的小型服务器来说,建议至少也要512MB以上的内存容量较佳。

Hard Disk

由于数据量与数据访问频率的不同,对于硬盘的要求也不相同。举例来说,如果是一般小型服务器,通常重点在于容量,硬盘容量大于 20GB 就够用了。但如果你的服务器是作为备份或者是小企业的文件服务器,那么你可能就得要考虑较高级的磁盘阵列(RAID)模式了。

磁盘阵列是利用硬件技术将数个硬盘整合成为一个大硬盘的方法,操作系统只会看到最后被整合起来的大硬盘。由于磁盘阵列是由多个硬盘组成,所以可以完成速度性能、备份等任务。更多相关的磁盘阵列,我们会在第15章中介绍。

VGA

对于不需要 X Window 的服务器来说,显卡算是最不重要的一个组件了。你只要有显卡能够让计算机启动,那就够了。但如果需要 X Window 系统时,你的显卡最好能够拥有 32MB 以上的内存容量,否则运行系统会很累。鸟哥曾使用一块只有 2MB 内存的显卡运行 X Window,光是按一个按钮就花费数分钟时间,真是折磨人家的耐心。

Network Interface Card

网卡是服务器上面最重要的组件了。目前新式的主板大多拥有10/100/1000Mb/s的高速网络,不过,只要好一点的10/100网卡就非常够用了!毕竟我们的带宽并没有大到Gb/s的速度。如果是小型服务器,一块 Realtek RTL8139 芯片的网卡就非常好用了,不过,如果是读取非常频繁的网站,好一点的Intel/3Com网卡应该是比较适合。

光盘、软盘、键盘与鼠标

不要旧到你的计算机不支持就好了,因为这些配置都是非必备的。举例来说,鸟哥安装好Linux系统后,可能就将该系统的光驱、鼠标、软驱等全部拔除,只有网线连接在计算机后面而已,其他的都是通过网络连接来管理的。因为通常服务器这东西最需要的就是稳定,而稳定的最理想状态就是平时没事不要去动它是最好的。

下面鸟哥针对一般你可能会接触到的计算机主机的用途与相关硬件配置的基本要求来说明一下好了。

一般小型主机且不含X Window系统

用途:家庭用NAT主机(路由器功能)或小型企业的非图形界面小型主机。

CPU:大于 P-Ⅲ 500 以上等级即可。

RAM:至少128MB,不过还是大于256MB以上比较妥当!

网卡:一般的 10/100 Mb/s 即可应付。

显卡:只要能够被Linux捉到的显卡即可,例如NVidia或ATI的主流显卡均可。

硬盘:20GB以上即可!

桌面型(Desktop)Linux系统/含X Window

用途:Linux的练习机或办公室(Office)工作机(一般我们会用到的环境)。

CPU:最好等级高一点,例如P-Ⅳ以上等级。

RAM:一定要大于512MB比较好!否则容易有图形界面停顿的现象。

网卡:普通的 10/100 Mb/s 就好了!

显卡:使用32MB以上内存的显卡!

硬盘:越大越好,最好有60GB。

中型以上Linux服务器

用途:中小型企业/学校单位的FTP/mail/WWW等网络服务主机。

CPU:最好等级高一点,可以考虑使用双核系统。

RAM:最好能够大于1GB以上,大于4GB更好!

网卡:知名的3Com或Intel等厂牌,比较稳定,性能较佳!也可选购10/100/1000 Mb/s的速度。

显卡:如果有使用到图形功能,则一张64MB内存的显卡是需要的!

硬盘:越大越好,如果可能的话,使用磁盘阵列,或者网络硬盘等的系统架构,能够具有更稳定安全的传输环境,更佳。

建议企业用计算机不要自行组装,购买商用服务器较佳:因为商用服务器已经通过制造商的散热、稳定度等测试,对于企业来说,会是一个比较好的选择。

总之,鸟哥在这里仅是提出一个方向:如果你的Linux主机是小型环境使用的,实时死机也不太会影响到企业环境的运行时,那么使用升级后被淘汰下来的零件以组成计算机系统来运行,那是非常好的回收再利用的案例。但如果你的主机系统是非常重要的,你想要更一部更稳定的Linux服务器,那基于系统的整体搭配与运行性能的考虑,购买已组装测试过的商用服务器会是一个比较好的选择。

一般来说,目前(2009)的入门计算机机种中,CPU 至少都是Intel Core的2GHz系列的等级以上,内存至少有1GB,显卡内存也有128MB以上,所以如果你是新购置的计算机,那么该计算机用来作为Linux的练习机,而且加装X Window系统,肯定是可以运行的。

此外,Linux 开发商在发布 Linux distribution 之前,都会针对该版本所默认可以支持的硬件做说明,因此,你除了可以在Linux的How-To文件去查询硬件的支持度之外,也可以到各个相关的Linux distributions网站去查询呢!下面鸟哥列出几个常用的硬件与 Linux distributions 搭配的网站,建议大家想要了解你的主机支不支持该版Linux时,务必到相关的网站去搜寻一下!

Red Hat 的硬件支持:https://hardware.redhat.com/?pagename=hcl

Open SuSE 的硬件支持:http://en.opensuse.org/Hardware?LANG=en_UK

Mandriva的硬件支持:http://hcl.mandriva.com/

Linux对笔记本电脑的支持:http://www.linux-laptop.net/

Linux对打印机的支持:http://www.openprinting.org/

显卡对XFree86/Xorg的支持:http://www.linuxhardware.org/

Linux的中文How-To(繁体):

http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware

总之,如果是自己维护的一个小网站,考虑到经济因素,你可以自行组装一台主机来架设。而如果是中、大型企业,那么主机的钱不要省,因为省了这些钱,未来主机挂点时,光是要找出哪个组件出问题或者是系统过热的问题都会气死人。而且,要注意的就是未来你的Linux主机规划的“用途”决定你的Linux主机硬件配置。这一点相当重要呢!

3.1.3 各硬件设备在Linux 中的文件名

选择好你所需要的硬件配置后,接下来得要了解一下各硬件在Linux当中所扮演的角色。这里鸟哥再次强调一下:在Linux系统中,每个设备都被当成一个文件来对待。举例来说,IDE接口的硬盘的文件名即为/dev/hd[a-d],其中,括号内的字母为a-d当中的任意一个,也即有/dev/hda,/dev/hdb,/dev/hdc,及/dev/hdd这四个文件的意思。

这种中括号【】形式的表示法在后面的章节当中会使用得很频繁,请特别留意。另外先提出来强调一下,在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内,所以你会看到/dev/hda,/dev/fd0等的文件名。

那么打印机与软盘呢?分别是/dev/lp0,/dev/fd0。好了,其他的接口设备呢?下面列出几个常见的设备与其在Linux当中的文件名,如表3-1所示。

表3-1

figure_0082_0035

需要特别留意的是硬盘(IDE、SCSI、USB都一样),每个磁盘驱动器的磁盘分区(partition)不同时,其磁盘文件名还会改变。下一小节我们会介绍磁盘分区的相关概念。需要特别注意的是磁带机的文件名,在某些不同的distribution当中可能会发现不一样的文件名,需要稍微留意。总之,你得先背一下IDE与SATA硬盘的文件名就是了。其他的,用得到再来背吧!

更多Linux内核支持的硬件设备与文件名,可以参考如下网页:

http://www.kernel.org/ pub/ linux/docs/device-list/devices.txt

3.2 磁盘分区

这一章在规划的重点是为了要安装Linux,那Linux系统是安装在计算机组件的哪个部分呢?就是磁盘。所以我们当然要来认识一下磁盘先。我们知道一块磁盘是可以被分区成多个分区(partition),以旧有的 Windows 观点来看,你可能会有一块磁盘并且将它分区成为 C:, D:, E:盘。那个 C, D, E就是分区。但是Linux的设备都是以文件的类型存在,那分区的文件名又是什么?如何进行磁盘分区,磁盘分区有哪些限制?是我们这个小节所要探讨的内容。

3.2.1 磁盘连接的方式与设备文件名的关系

由第0章提到的磁盘说明,我们知道个人计算机常见的磁盘接口有两种,分别是IDE与SATA接口,目前的主流接口已经是SATA接口了,但是老一点的主机其实大部分还是使用IDE接口。我们称可连接到IDE接口的设备为IDE设备,不管是磁盘还是光盘设备。

以IDE接口来说,由于一个IDE扁平电缆可以连接两个IDE设备,通常主机又都会提供两个IDE接口,因此最多可以接到四个IDE设备。也就是说,如果你已经有一个光盘设备了,那么最多就只能再接三块IDE接口的磁盘。这两个IDE接口通常被称为IDE1(primary)及IDE2(secondary),而每条扁平电缆上面的IDE设备可以被区分为Master(主设备)与Slave(从设备)。这四个IDE设备的文件名如表3-2所示。

表3-2

figure_0083_0036

figure_0083_0037

假设你的主机仅有一块IDE接口的磁盘,而这一块磁盘接在IDE2的Master上面,请问它在Linux操作系统里面的设备文件名是什么?

答:比较上表的设备文件名对照,IDE2的Master设备文件名为/dev/hdc。

再以SATA接口来说,由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。但是与IDE接口不同的是,SATA/USB接口的磁盘根本就没有一定的顺序,那如何决定它的设备文件名呢?这个时候就得要根据Linux内核检测到磁盘的顺序了。这里以下面的例子来让你了解。

figure_0083_0038

如果你的PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1, SATA5插槽上,请问这三个磁盘在Linux中的设备文件名是什么?

答:由于是使用检测到的顺序来决定设备文件名,并非与实际插槽代号有关,因此设备的文件名如下:

1.SATA1插槽上的文件名:/dev/sda

2.SATA5插槽上的文件名:/dev/sdb

3.USB磁盘(开机完成后才被系统识别):/dev/sdc

通过上面的介绍后,你应该知道了在Linux系统下的各种不同接口的磁盘的设备文件名了。OK!好像没问题了呦!才不是呢!问题很大呦!因为如果你的磁盘被分成两个分区,那么每个分区的设备文件名又是什么?在了解这个问题之前,我们先来复习一下磁盘的组成,因为现今磁盘的分区与它物理的组成很有关系!

3.2.2 磁盘的组成复习

我们在第0章谈过磁盘的组成(主要由盘片、机械手臂、磁头与主轴马达所组成),而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为 512bytes 那么大。假设磁盘只有一个盘片,那么盘片如图3-2所示。

figure_0083_0039

图3-2 盘片组成示意图

那么是否每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:

主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有446bytes。

分区表(partition table):记录整块硬盘分区的状态,有64bytes。

MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了!

那么分区表又是什么?其实你刚才拿到的整块硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。

更多的磁盘分区与文件系统管理,我们将在第二篇的时候深入介绍。

3.2.3 磁盘分区表(partition table)

但是硬盘总不能真的拿锯子来切割吧?那硬盘还真的是会坏掉去。那怎么办?在前一小节的图示中,我们有看到“开始与结束柱面”吧?那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图3-3所示。

figure_0084_0040

图3-3 磁盘分区表的作用示意图

假设上面的硬盘设备文件名为/dev/hda时,那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关。

P1:/dev/hda1

P2:/dev/hda2

P3:/dev/hda3

P4:/dev/hda4

上图中我们假设硬盘只有 400 个柱面,共分区成为四个分区,第四个分区所在为第 301 到 400号柱面的范围。当你的操作系统为 Windows 时,那么第一到第四个分区的代号应该就是 C, D, E, F。当你有数据要写入F盘时,你的数据会被写入这块磁盘的301~400号柱面之间。

由于分区表就只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主(Primary)或扩展(Extended)分区。根据上面的图示与说明,我们可以得到几个重点信息:

其实所谓的“分区”只是针对那个64bytes的分区表进行设置而已。

硬盘默认的分区表仅能写入四组分区信息。

这四组分区信息我们称为主(Primary)或扩展(Extended)分区。

分区的最小单位为柱面(cylinder)。

当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。

你会不会突然想到,为什么要分区啊?基本上你可以以这样的角度去思考分区:

1.数据的安全性

因为每个分区的数据是分开的。所以,当你需要将某个分区的数据重整时,例如你要重新安装Windows时,可以将C盘中其他重要数据移到其他分区,例如将邮件、桌面数据移动到D盘去,那么重装系统并不会影响到D盘。所以善用分区,可以让你的数据更安全。

2.系统的性能考虑

由于分区将数据集中在某个柱面的区段,例如图 3-3 当中第一个分区位于柱面号码 1~100号,如此一来当有数据要读取自该分区时,磁盘只会搜寻前面1~100的柱面范围,由于数据集中了,将有助于数据读取的速度与性能!所以说,分区是很重要的。

既然分区表只有记录四组数据的空间,那么是否代表我一块硬盘最多只能分区出四个分区?当然不是。有经验的朋友都知道,你可以将一块硬盘分区成十个以上的分区的。那又是如何达到的呢?在Windows/Linux系统中,我们是通过刚才谈到的扩展分区的方式来处理的。扩展分区的想法是:既然第一个扇区所在的分区表只能记录四条数据,那我可否利用额外的扇区来记录更多的分区信息?实际上如图3-4所示。

figure_0085_0041

图3-4 磁盘分区表的作用示意图

在图3-4当中,我们知道硬盘的四个分区记录区仅使用到两个,P1为主分区,而P2则为扩展分区。请注意,扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。

图3-4右下方那个区块有继续分区出五个分区,这五个由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。同时注意一下,由于逻辑分区是由扩展分区继续分区出来的,所以它可以使用的柱面范围就是扩展分区所设定的范围喔!也就是图中的101~400啦!

同样,上述分区在Linux系统中的设备文件名分别如下:

P1:/dev/hda1

P2:/dev/hda2

L1:/dev/hda5

L2:/dev/hda6

L3:/dev/hda7

L4:/dev/hda8

L5:/dev/hda9

仔细看看,怎么设备文件名没有/dev/hda3 与/dev/hda4 呢?因为前面四个号码都是保留给Primary或Extended用的。所以逻辑分区的设备名称号码就由5号开始了,这是个很重要的特性,不能忘记。

关于主分区、扩展分区与逻辑分区的特性我们作个简单的定义。

主分区与扩展分区最多可以有四个(硬盘的限制)。

扩展分区最多只能有一个(操作系统的限制)。

逻辑分区是由扩展分区持续切割出来的分区。

能够被格式化后作为数据访问的分区为主分区与逻辑分区。扩展分区无法格式化。

逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)。

事实上,分区是个很麻烦的东西,因为它是以柱面为单位的“连续”磁盘空间,且扩展分区又是个类似独立的磁盘空间,所以在分区的时候要特别注意。我们举下面的例子来解释一下好了。

figure_0086_0042

在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况,如图3-5所示,图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D盘与E盘整合成为一个新的分区?

figure_0086_0043

图3-5 磁盘空间整合示意图

答: 上图可以整合:因为上图的 D 与 E 同属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新创建一个新的分区,就能够在不影响其他分区的情况下,将两个分区的容量整合成为一个。

 下图不可整合:因为 D 与 E 分属主分区与逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分区。但如此一来会影响到所有的逻辑分区,要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。因为逻辑分区的信息都记录在扩展分区里面。

由于第一个扇区所记录的分区表与 MBR 是这么重要,几乎只要读取硬盘都会先由这个扇区先读起。因此,如果整块硬盘的第一个扇区(就是 MBR 与 partition table 所在的扇区)物理坏掉了,那这个硬盘大概就没有用了。因为系统如果找不到分区表,怎么知道如何读取柱面区间呢?下面还有一些例题你可以思考。

figure_0086_0044

如果我想将一块大硬盘“暂时”分成为4个分区,同时还有其他的剩余容量可以让我在未来的时候进行规划,我能不能分区出4个主分区?若不行,那么你建议该如何分区?

答: 由于主分区和扩展分区最多只能有 4 个,其中扩展分区最多只能有一个,这个例题想要分区出4个分区且还要预留剩余容量,因此P+P+P+P的分区方式是不适合的。因为如果使用到4个主分区,则即使硬盘还有剩余容量,因为无法再继续分区,所以剩余容量就被浪费掉了。

 假设你想要将所有的四条记录都花光,那么 P+P+P+E 是比较适合的。所以可以用的 4 个分区有3个主分区及一个逻辑分区,剩余的容量在扩展分区中。

 如果你要分区超过 4 个以上时,一定要有扩展分区,而且必须将所有剩下的空间都分配给扩展分区,然后再以扩展分区来规划扩展分区的空间。另外,考虑到磁盘的连续性,一般建议将扩展分区的柱面号码分配在最后面的柱面内。

figure_0087_0045

我能不能仅分区出一个主分区与一个扩展即可?

答:当然可以,这也是早期Windows操作系统惯用的手法。此外,逻辑分区的号码在IDE可达63号, SATA则可达15号,因此仅一个主分区与一个扩展分区即可,因为扩展分区可继续被分出逻辑分区。

figure_0087_0046

假如我的PC有两块SATA硬盘,我想在第二块硬盘分出6个可用的分区(可以被格式化来访问数据之用),那每个分区在Linux系统下的设备文件名为何?且分区类型各为何?至少写出两种不同的分区方式。

答:由于P(primary)+E(extended)最多只能有四个,其中E最多只能有一个。现在题目要求6个可用的分区,因此不可能分出四个P。下面我们假设两种环境,一种是将前四号全部用完,一种是仅花费一个P及一个E的情况:

 P+P+P+E 的环境(如图3-6 所示)

figure_0087_0047

图3-6 分区示意图

实际可用的是/dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb5,/dev/sdb6,/dev/sdb7这六个,至于/dev/sdb4这个扩展分区本身仅是提供来给逻辑分区创建使用。

P+E的环境(如图3-7所示)

注意到了吗?因为1~4号是保留给主/扩展分区的,因此第一个逻辑分区一定是由5号开始,所以/dev/sdb3,/dev/sdb4就会被保留下来没有用到了!

figure_0087_0048

图3-7 分区示意图

3.2.4 开机流程与主引导分区(MBR)

我们在计算机概论里面谈到了,没有执行软件的硬件是没有用的,除了会电人之外,而为了计算机硬件系统的资源合理分配,因此有了操作系统这个系统软件的产生。由于操作系统会控制所有的硬件并且提供内核功能,因此我们的计算机就能够认识硬盘内的文件系统,并且进一步读取硬盘内的软件文件与执行该软件来完成各项软件的执行目的。

问题是,你有没有发现,既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并且执行它的?开机时我的计算机还没有任何软件系统,那它要如何读取硬盘内的操作系统文件啊?这就得要牵涉到计算机的开机程序了!下面就让我们来谈一谈这个开机程序吧!

在计算机概论里面我们谈到那个可爱的BIOS与CMOS两个东西,CMOS是记录各项硬件参数且嵌入在主板上面的存储器,BIOS 则是一个写入到主板上的一个韧体(再次说明,韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候计算机系统会主动执行的第一个程序了。

接下来BIOS会去分析计算机里面有哪些存储设备,我们以硬盘为例,BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446bytes的硬盘容量里面会放置最基本的引导加载程序,此时BIOS就功成圆满,而接下来就是MBR内的引导加载程序的工作了。

这个引导加载程序的目的是在加载(load)内核文件,由于引导加载程序是操作系统在安装的时候所提供的,所以它会识别硬盘内的文件系统格式,因此就能够读取内核文件,然后接下来就是内核文件的工作,引导加载程序也功成圆满,之后就是大家所知道的操作系统的任务啦!

简单地说,整个开机流程到操作系统之前的动作应该是这样的。

1.BIOS:开机主动执行的韧体,会认识第一个可开机的设备。

2.MBR:第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序。

3.引导加载程序(Boot loader):一支可读取内核文件来执行的软件。

4.内核文件:开始操作系统的功能。

由上面的说明我们会知道,BIOS 与 MBR 都是硬件本身会支持的功能,至于 Boot loader 则是操作系统安装在MBR上面的一套软件了。由于MBR仅有446bytes而已,因此这个引导加载程序是非常小而完美的。这个 boot loader 的主要任务有下面这些项目。

提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能。

载入内核文件:直接指向可开机的程序区段来开始操作系统。

转交其他loader:将引导加载功能转交给其他loader负责。

上面前两点还容易理解,但是第三点很有趣喔!那表示你的计算机系统里面可能具有两个以上的引导加载程序呢!有可能吗?我们的硬盘不是只有一个 MBR 而已?但是引导加载程序除了可以安装在MBR 之外,还可以安装在每个分区的引导扇区(boot sector)。分区还有个别的启动扇区?这个特色才能造就“多重引导”的功能。

我们举一个例子来说,假设你的个人计算机只有一块硬盘,里面分成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时识别Windows/Linux操作系统的引导加载程序,那么整个流程如图3-8所示。

figure_0088_0049

图3-8 引导加载程序的工作执行示意图

在图3-8中我们可以发现,MBR的引导加载程序提供两个菜单,菜单一(M1)可以直接加载Windows的内核文件来开机;菜单二(M2)则是将引导加载工作交给第二个分区的启动扇区(boot sector)。当用户在开机的时候选择菜单二时,那么整个引导加载工作就会交给第二分区的引导加载程序了。当第二个引导加载程序启动后,该引导加载程序内(上图中)仅有一个开机菜单,因此就能够使用Linux的内核文件来开机。这就是多重引导的工作情况。我们将上图作个总结。

每个分区都拥有自己的启动扇区(boot sector)。

图中的系统分区为第一及第二分区。

实际可开机的内核文件是放置到各分区内的。

loader只会认识自己的系统分区内的可开机内核文件,以及其他loader而已。

loader可直接指向或者是间接将管理权转交给另一个管理程序。

那现在请你想一想,为什么人家经常说:“如果要安装多重引导,最好先安装 Windows 再安装Linux”呢?这是因为。

Linux在安装的时候,你可以选择将引导加载程序安装在MBR或个别分区的启动扇区,而且Linux的 loader 可以手动设置菜单(就是上图的 M1, M2),所以你可以在 Linux 的 boot loader 里面加入Windows开机的选项。

Windows在安装的时候,它的安装程序会主动覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会,而且它没有让我们自己选择菜单的功能。

因此,如果先安装Linux再安装Windows的话,那MBR的引导加载程序就只会有Windows的选项,而不会有 Linux 的选项 (因为原本在 MBR 内的 Linux 的引导加载程序就会被覆盖掉)。那需要重新安装Linux一次吗?当然不需要,你只要用尽各种方法来处理MBR的内容即可。例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)软件来安装识别Windows/Linux的管理程序,也能够利用Linux的救援模式来挽救MBR即可。

引导加载程序与启动扇区的观念是非常重要的,我们会在第 20 章分别介绍,你在这里只要先对开机需要引导加载程序和引导加载程序可以安装在MBR及启动扇区两处这两个观念有基本的认识即可,一开始就背太多东西会很混乱。

3.2.5 Linux 安装模式下,磁盘分区的选择(极重要)

目录树结构(directory tree)

我们前面有谈过Linux内的所有数据都是以文件的形态来呈现的,所以,整个Linux系统最重要的地方就是在于目录树结构。所谓的目录树结构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件结构。所以,整个目录树结构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线“/”,所有的文件都与目录树有关。目录树的呈现方式如图3-9所示。

如图3-9所示,所有的文件都是由根目录(/)衍生来的,而次目录之下还能够有其他的数据存在。图中长方形为目录,波浪形则为文件。那当我们想要取得 mydata 那个文件时,系统就得由根目录开始找,然后找到home,接下来找到dmtsai,最终的文件名为:/home/dmtsai/mydata。

我们现在知道整个Linux系统使用的是目录树结构,但是我们的文件数据其实是放置在磁盘分区当中的,现在的问题是如何结合目录树的架构与磁盘内的数据,这个时候就牵扯到“挂载”(mount)的问题。

文件系统与目录树的关系(挂载)

所谓的“挂载”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区的意思。这个操作我们称为“挂载”,那个进入点的目录我们称为“挂载点”。由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区的。至于其他的目录则可依用户自己的需求来给予挂载到不同的分区。我们以图3-10来作为一个说明。

figure_0090_0050

图3-9 目录树相关性示意图

figure_0090_0051

图3-10 目录树与分区之间的相关性

图 3-10 中假设我的硬盘分为两区,partition 1 挂载到根目录,至于 partition 2 则是挂载到/home这个目录。这也就是说,当我的数据放置在/home 内的各次目录时,数据是放置到 partition 2 的,如果不是放在/home 下面的目录,那么数据就会被放置到 partition 1。

其实判断某个文件在哪个partition下面是很简单的,通过反向追踪即可。以图3-10来说,当我想要知道/home/vbird/test 这个文件在哪个 partition 时,由test —> vbird —> home —>/,看哪个“进入点”先被查到那就是使用的进入点了。所以test使用的是/home这个进入点而不是/喔!

figure_0090_0052

现在让我们来想一想,我的计算机系统如何读取光盘内的数据呢?在Windows里面使用的是“光驱”的代号方式处理(假设为E盘时),但在Linux下面我们依旧使用目录树喔!在默认的情况下,Linux是将光驱的数据放置到/media/cdrom里头去的。如果光盘里面有个文件名为“我的文件”时,那么这个文件是在哪里?

答:这个文件最终会在如下的完整文件名中:

Windows:桌面\我的计算机\E:\我的文件

Linux:/media/cdrom/我的文件

如果光驱并非被挂载到/media/cdrom,而是挂载到/mnt这个目录时,刚才读取的这个文件的文件名会变成:

/mnt/我的文件

如果你了解这个文件名,这表示你已经知道挂载的意义了!初次接触Linux时,这里最容易搞混,因为它与Windows的分区代号完全不一样!

安装distributions时,挂载点与磁盘分区的规划

既然我们在Linux系统下使用的是目录树系统,所以安装的时候自然就得要规划磁盘分区与目录树的挂载了。实际上,在Linux安装的时候已经提供了相当多的默认模式让你选择分区的方式了,不过,无论如何,分区的结果可能都不是很能符合自己的意愿!因为毕竟每个人的“想法”都不太一样!因此,强烈建议使用“自定义安装,Custom”这个安装模式!在某些Linuxdistribution中,会将这个模式写得很厉害,叫做“Expert,专家模式”,这个就厉害了,请相信你自己,了解上面的说明后,就请自称为专家了吧!没有问题!

自定义安装“Custom”

初次接触Linux:只要分区“/”及“swap”即可。

通常初次安装Linux系统的朋友们,我们都会建议他直接以一个最大的分区“/”来安装系统。这样做有个好处,就是不怕分区错误造成无法安装的困境!例如/usr是Linux的可执行程序及相关的文件摆放的目录,所以它的容量需求蛮大的,万一你分了一块分区给/usr,但是却给得不够大,那么就伤脑筋了!因为会造成无法将数据完全写入的问题,就有可能会无法安装。因此如果你是初次安装的话,那么可以仅分成两个分区(“/与 Swap”)即可。

建议分区的方法:预留一个备用的剩余磁盘容量。

在想要学习Linux的朋友中,最麻烦的可能就是得要经常处理分区的问题,因为分区是系统管理员很重要的一个任务。但如果你将整个硬盘的容量都用光了,那么你要如何练习分区呢?所以鸟哥在后续的练习中也会这样做,就是请你特别预留一块不分区的磁盘容量,作为后续练习时可以用来分区之用。

此外,预留的分区也可以拿来作为备份之用。因为我们在实际操作Linux系统的过程中,可能会发现某些脚本或者是重要的文件很值得备份时,就可以使用这个剩余的容量分出新的分区,并用来备份重要的配置文件或者是脚本。这有个最大的好处,就是当我的Linux重新安装的时候,我的一些软件或工具程序马上就可以直接在硬盘当中找到。重新安装比较便利。为什么要重新安装?因为没有安装过Linux10次以上,不要说你学会了Linux了。

选择Linux安装程序提供的默认硬盘分区方式

对于首次接触Linux的朋友们,鸟哥通常不建议使用各个distribution所提供默认的Server安装方式,因为会让你无法得知Linux在搞什么鬼,而且也不见得可以符合你的需求。而且要注意的是,选择Server的时候,请“确定”你的硬盘数据不再需要。因为Linux会自动把你的硬盘里面的旧数据全部删掉。此外,硬盘至少需要2GB以上才可以选择这一个模式!

现在你知道 Linux 为什么不好学了吧?因为很多基础知识都得要先了解。否则连安装都不知道怎么安装。现在你知道Linux的可爱了吧!因为如果你学会了。很多计算机系统/操作系统的概念都很清晰。

3.3 安装Linux 前的规划

从前面的说明我们知道操作系统与硬件的相关性是很高的,而目前最热门的计算机硬件系统为x86 个人计算机系统。我们也讨论了一下各硬件组件在 Linux 当中的设备文件名,同时也了解到磁盘分区与每个分区在Linux目录树的关系,也简单谈论了引导加载程序的用途。接下来我们得要开始安装Linux。

安装最重要的第一件事,就是要取得 Linux distributions 的光盘数据,该如何去下载?目前有这么多的 distributions,你应该要选择哪一个版本比较好?为什么会比较好?在中国,你可以在哪里下载你所需要的 Linux distribution 呢?这都是这一小节所要讨论的!

3.3.1 选择适当的distribution

如同第 1 章“Linux 是什么”里面谈到的,事实上每个 Linux distributions 使用的都是来自于http://www.kernel.org官方网站所提供的Linux内核,各家distribution使用的软件其实也都是大同小异,最大的差别或许就是在于软件的安装模式而已。所以,你只要选择其中一套,并且玩得出神入化,那么Linux肯定可以学成的。

不过,由于近年来网络环境实在不是很安全,因此你在选择 distribution 时,特别要了解到该distribution适合的环境,并且最好选择最新的distribution较佳。以鸟哥来说,如果是将Linux定位在服务器上面的话,那么 Red Hat Enterprise Linux 及 SuSE Enterprise Linux 应该是很不错的选择,因为它的版本改动的幅度较小,并且更新支持的期限较长。

在我们这次的练习中,不想给大家太沉重的负担,所以鸟哥选择CentOS这一个号称与RHEL完全兼容的版本来练习,目前(2009/08)最新的版本是 CentOS 5.3 版,你可以选择 i386 或 x86_64 的版本来安装,请依据你的硬件来选择。如果你不知道你的硬件规格时,那么建议就直接安装i386的版本即可。因为 i386 的CentOS 5.x 是可以安装在 x86_64 的硬件中的。

你可以选择到CentOS的官方网站或中文镜像站点去下载最新的版本,由镜像站点来下载比较快。下面列出CentOS的下载点:

CentOS官方网站:http://mirror.centos.org/centos/5/isos/

你要知道的是,因为 Linux distributions 里面的软件越包越多,所以使用到的光盘(CD)越来越多了,因此目前各distribution都有提供DVD的版本。以上面的链接来说,在每个链接里面的i386版本中,你会发现有DVD版本,例如CentOS-5.3-i386-bin-DVD.iso,也有CD版本,例如CentOS-5.3- i386-bin- [1-6]of6.iso。鸟哥建议你可以下载 DVD 版本,因为只有一张,比较环保。

你所下载的文件扩展名是.iso,这就是所谓的image文件(镜像文件)。这种image文件是由光盘直接刻录成文件的,文件非常大,建议你不要使用浏览器(IE/Firefox)来下载,可以使用 FTP 客户端程序来下载,例如 Filezilla (http://filezilla-project.org/download.php)等。这样比较不需要担心断线的问题,因为可以续传。

此外,这种镜像文件可不能以数据格式刻录成为光盘/DVD的!你必须要使用刻录程序的功能,将它以“镜像文件格式”刻录成为光盘或DVD才行。切记不要使用刻录数据文件格式来刻录。

3.3.2 主机的服务规划与硬件的关系

我们前面已经提过,由于主机的服务目的不同,所需要的硬件等级与配置自然也就不一样。下面鸟哥稍微提一提每种服务可能会需要的硬件配置规划,当然,还是得提醒,每个朋友的需求都不一样,所以设计你的主机之前,请先针对自己的需求进行考虑。如果你不知道自己的考虑为何,那么就先拿一部普通的计算机来玩一玩吧!不过要记得!不要将重要数据放在练习用的Linux主机上面。

打造Windows与Linux共存的环境

在某些情况之下,你可能会想要在一台主机上面安装两套以上的操作系统,例如下面这些状况:

我的环境里面仅能允许我拥有一台主机,不论是经济问题还是空间问题。

因为目前各主要硬件还是针对Windows进行驱动程序的开发,我想要同时保有Windows操作系统与Linux操作系统,以确定在Linux下面的硬件应该使用哪个I/O端口或者是IRQ的分配等。

我的工作需要同时使用到Windows与Linux操作系统。

果真如此的话,那么刚才我们在上一个小节谈到的开机流程与多重引导的数据就很重要了。

因为需要如此你才能够在一部主机上面操弄两种不同的操作系统。

一般来说,你还可以在Windows操作系统上面安装Virtualbox (http://www.virtualbox.org/)之类的软件,让你可以在Windows系统上面“同时”使用Linux系统,就是两个操作系统同时启动。不过,那样的环境比较复杂,尤其Virtualbox环境中很多硬件都是仿真的,会让新手很难理解系统控制原理。基本上,鸟哥很不建议使用这样的方式来学习Linux!

如果你的Linux主机已经是想要拿来作为某些服务之用时,那么务必不要选择太久的硬件。前面谈到过,太老旧的硬件可能会有电子零件老化的问题。另外,如果你的Linux主机必须要全年无休地开机,那么摆放这部主机的位置也需要选择。下面再来谈一谈,在一般小型企业或学校单位中,常见的某些服务与你的硬件关系有哪些?

NAT(达到路由器的功能)

通常小型企业或者是学校单位大多仅会有一条对外的线路,然后全公司/学校内的计算机全部通过这条线路连到因特网上。此时我们就得要使用路由器来让这一条对外线路分享给所有的公司内部员工使用。那么Linux能不能达到此路由的功能呢?当然可以,就是通过NAT服务即可完成这项任务了!

在这种环境中,由于Linux作为一个内外分离的实体,因此网络流量会比较大一点。此时Linux主机的网卡就需要比较好些的配置。其他的CPU、RAM、硬盘等的影响就小很多。事实上,单利用Linux作为NAT主机来路由是很不明智的。因为PC的耗电能力比路由器要大得多。

那么为什么你还要使用 Linux 作为 NAT 呢?因为 Linux NAT 还可以额外加装很多分析软件,可以用来分析客户端的连接,或者是用来控制带宽与流量,达到更公平的带宽使用呢!更多的功能则有待后续更多的学习。你也可以参考我们在服务器架设篇当中的数据。

SAMBA(加入Windows网络上的邻居)

在你的Windows系统之间如何传输数据呢?当然就是通过网络邻居来传输。那还用问。这也是学校老师在上课过程中要分享数据给同学常用的机制了。问题是,Windows XP 的网络邻居一般只能同时分享10台客户端连接,超过的话就得要等待了,真不人性化。

我们可以使用Linux上面的SAMBA这个软件来达成加入Windows邻居的功能。SAMBA的性能不错,也没有客户端连接数的限制,相当适合于一般学校环境的文件服务器的角色呢!

这种服务器由于分享的数据量较大,对于系统的网卡与硬盘的大小及速度就比较重要,如果你还针对不同的用户提供文件服务器功能,那么/home 这个目录可以考虑独立出来,并且加大容量。

Mail(邮件服务器)

邮件服务器是非常重要的,尤其对于现代人来说,电子邮件几乎已经取代了传统的人工邮件递送了。拜硬盘价格大跌及Google/Yahoo/Microsoft公平竞争之赐,一般免费的Email邮箱几乎都提供了很不错的邮件服务,包括Web接口的传输、大于2GB以上的容量空间及全年无休的服务等。例如非常多人使用的Gmail就是一例:http://gmail.com。

虽然免费的信箱已经非常够用了,老实说,鸟哥也不建议你架设邮件服务器了。问题是,如果你是一间私人单位的公司,你的公司内传送的Email是具有商业机密或隐私性的,那你还想要交给免费信箱去管理吗?此时才有需要架设邮件服务器。CentOS 一安装完毕就提供了Sendmail及Postfix两种邮件服务器软件了!

在邮件服务器上面,重要的也是硬盘容量与网卡速度,在此情境中,也可以将/var目录独立出来,并加大容量。

Web(WWW服务器)

WWW 服务器几乎是所有的网络主机都会安装的一个功能,因为它除了可以提供 Internet 的WWW连接之外,很多在网络主机上面的软件功能(例如某些分析软件所提供的最终分析结果的界面)也都使用WWW作为显示的接口,所以这家伙真是重要到不行的。

CentOS使用的是Apache这套软件来实现WWW网站的功能,在WWW服务器上面,如果你还有提供数据库系统的话,那么CPU的等级就不能太低,而最重要的则是RAM了!要增加WWW服务器的性能,通常提升RAM是一个不错的考虑。

DHCP(提供客户端自动获取IP的功能)

如果你是个局域网管理员,你的内网共有20台以上的计算机给一般员工使用,这些员工假设并没有计算机网络的维护技能。那你想要让这些计算机在连上 Internet 时需要手动去设置 IP还是它可以自动获取IP呢?当然是自动获取比较方便啦!这就是DHCP服务的功能了!客户端计算机只要选择“自动获取IP”,其他的,就是你系统管理员在DHCP服务器上面设置一下嗌即可。这个的硬件要求可以不必很高 !

Proxy(代理服务器)

这也是经常会安装的一个服务器软件,尤其像中小学校的带宽较不足的环境下,Proxy将有效地解决带宽不足的问题!当然,你也可以在家里内部安装一个 Proxy 喔!但是,这个服务器的硬件要求可以说是相对而言最高的,它不但需要较强有力的CPU来运行,对于硬盘的速度与容量要求也很高!既然提供了网络服务,网卡则是重要的一环!

FTP

经常看到很多朋友喜欢架设FTP去进行网络数据的传输,甚至很多人会架设地下FTP网站去传输些违法的数据。老实说,FTP 传输再怎么地下化也是很容易被发现的啦!所以,鸟哥相当不建议你架设 FTP 的喔!不过,对于大专院校来说,因为经常需要分享给全校师生一些免费的资源,此时匿名用户的FTP软件功能就很需要了。对于FTP的硬件需求来说,硬盘容量与网卡好坏相关性较高。

嗌大致上我们会安装的服务器软件就是这一些 !当然啦,还是那句老话,在目前你刚接触Linux的这个阶段中,还是以Linux基础为主,鸟哥也希望你先了解Linux的相关主机操作技巧,其他的架站,未来再谈吧!而上面列出的各项服务仅是提供给你,如果想要架设某种网络服务的主机时你应该如何规划主机比较好!

3.3.3 主机硬盘的主要规划

系统对于硬盘的需求跟刚才提到的主机开放的服务有关,那么除了这点之外,还有没有其他的注意事项呢?当然有,那就是数据的分类与安全性的考虑。所谓的“数据安全”并不是指数据被网络Cracker所破坏,而是指当主机系统的硬件出现问题时,你的文件数据能否安全保存。

经常会发现网络上有些朋友在问:“我的Linux主机因为停电的关系,造成不正常的关机,结果导致无法开机,这该如何是好?”幸运一点的可以使用fsck命令来解决硬盘的问题,麻烦一点的可能还需要重新安装 Linux,另外,由于 Linux 是多用户、多线程的环境,因此很可能上面已经有很多人的数据在其中了,如果需要重新安装的话,光是搬移与备份数据就会疯掉了!所以硬盘的分区考虑是相当重要的!

虽然我们在本章的第二小节部分有谈论过磁盘分区了,但是,硬盘的规划对于Linux初学者而言,那将是造成你“头疼”的主要凶手之一。因为硬盘的分区技巧需要对于Linux文件结构有相当程度的认知之后才能够做出比较完善的规划的。所以,在这里你只要有个基础的认识即可。老实说,没有安装过十次以上的Linux系统,是学不会Linux与磁盘分区的。

无论如何,下面还是说明一下基本硬盘分区的模式。

最简单的分区方法

这个在前面已经谈过了,就是仅分出根目录与内存交换空间(/& swap)即可。然后再预留一些剩余的磁盘以供后续的练习之用。不过,这当然是不保险的分区方法(所以鸟哥经常说这是“懒人分区法”)!因为如果任何一个小细节坏掉(例如坏轨的产生),你的根目录将可能整个损毁,挽救方面较困难!

稍微麻烦一点的方式

较麻烦一点的分区方式就是先分析这台主机的未来用途,然后根据用途去分析需要较大容量的目录,以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起,那当这些读写较频繁的磁盘分区有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易。在默认的CentOS环境中,下面的目录是比较符合容量大且(或)读写频繁的目录:

/

/usr

/home

/var

Swap

以鸟哥为例,通常我会希望我的邮件主机大一些,因此我的/var通常会分个几GB的大小,如此一来就可以不担心会有邮件空间不足的情况了。另外,由于我开启SAMBA服务,因此提供每个研究室内人员的数据备份空间,所以,/home 所开放的空间也很大。至于/usr/的容量,大概只要给 2~5GB 即可!凡此种种均与你当初预计的主机服务有关!因此,请特别注意你的服务项目!然后才来进行硬盘的规划。

3.3.4 鸟哥说:关于练习机的安装建议

关于硬件方面

老实说,安装Linux是非常困难的一件事,所以在教材方面,安装(Installation)通常是在系统管理教完后才教的。那因为我们不是在大学的教室中,所以没有现成的Linux系统可以用,当然就得要自行安装一个啦!因此这里才会先跟大家介绍如何安装Linux的。虽然很多朋友都喜欢使用Virtualbox安装Linux去学习,但是Virtualbox或其他相关的虚拟化软件都是用仿真的方式去启动Linux的,新手在学习方面经常会误解。

有鉴于此,因此,鸟哥“强烈建议你,务必拥有一台独立的主机,而且内含一块仅有 Linux操作系统的硬盘”,以鸟哥自己为例,我的主机上面有一个移动硬盘,而我有两块分离的硬盘,分别安装Windows与Linux系统,要使用不同的操作系统时就抽换硬盘,如此一来,主机很单纯,而抽换也很快速,不需要对机箱拆拆装装的,很方便!提供给你作为参考。

关于硬盘分区方面

此外,在硬盘的分区方面,鸟哥也建议新手们,先暂时用/及 swap 两个分区即可,而且,还要预留一个未分区的空间!因为我们是练习机,暂时不会提供网络服务,所以只要有/及Swap提供给我们进行安装Linux的空间即可。不过,我们未来会针对系统的磁盘部分进行分区的练习以及磁盘配额(quota)的练习,因此,预留一个磁盘空间是必须要的。

举例来说,如果你有一个20GB的硬盘,那么建议你分15GB来安装Linux,512MB给Swap,另外的4GB左右不要分区,先保留下来,未来我们可以继续来练习。

关于软件方面

另一个容易发现问题的地方,在于用户经常会找不到某些命令,导致无法按照书上的说明去执行某些命令。因为无法执行命令,所以就会一直给他放在那边,不会继续往下学习。为什么会找不到命令呢?很简单。就是因为没有安装该软件啊!所以,强烈的建议新手,务必将所有的套件都安装。也就是选择“安装所有套件”就是了。

当然,上面提到的都是针对“练习机”而言。如果是你自己预计要上线的Linux主机,那就不建议按照上面的说明安装了。

3.3.5 鸟哥的两个实际案例

这里说一下鸟哥的两个实际的案例,这两个案例是目前还在运行的主机。要先声明的是,鸟哥的范例不见得是最好的,因为每个人的考虑并不一样。我只是提供相对可以使用的方案而已!

案例一:家用的小型Linux服务器,路由与文件共享中心

提供服务

提供家里的多台计算机的网络连接分享,所以需要NAT功能。提供家庭成员的数据存放容量,由于家里使用Windows系统的成员不少,所以搭建SAMBA服务器,提供网络邻居的网络驱动器功能。

主机硬件配置

CPU 使用P-III 800MHz;

内存大小为512MB的RAM;

两块网卡,控制芯片为常见的螃蟹卡(Realtek);

共有两块磁盘,一块系统盘一块数据盘。文件盘高达160GB;

显卡为以前很流行的 GeForce 2 MX,含 32MB 的内存;

安装完毕后将屏幕、键盘、鼠标、DVD-ROM等配置均删除,仅剩下网线与电源线。

硬盘分区

分成/boot、/、/usr、/var、/tmp等目录均独立;

/home独立出来,放置到那块160GB的磁盘,提供给家庭成员存放个人资料;

1GB的Swap。

案例二:提供Linux的PC集群(Cluster)计算机群

提供服务

提供研究室成员对于模式仿真的软、硬件平台,主要提供的服务并非因特网服务,而是研究室内部的研究工作分析。

主机硬件配置

利用两台双CPU(均为双核)的x86_64系统(泰安主板提供的特殊功能);

使用 Geforce 7300 显卡,内含 64MB 的内存;

使用一块硬盘作为主系统,6块磁盘组成磁盘阵列,以存储模式仿真的结果;

使用PCI-Express接口的网卡,速度为Gb/s;

共有4GB的内存容量。

硬盘分区

全部的磁盘阵列容量均给/cluster/raid目录,占有2TB的容量;

2GB的swap容量;

分出/、/usr、/var、/tmp等目录,避免程序错误造成系统的困扰;

/home也独立出来,让每个研究室成员可以拥有自己的数据存放容量。

在上面的案例中,案例一是属于小规模的主机系统,因此只要使用预计被淘汰的配置即可进行主机的架设,唯一可能需要购买的大概是网卡。而在案例二中,由于我需要大量的数值运算,且运算结果的数据非常庞大,因此就需要比较大的磁盘容量与较佳的网络系统了。以上的数据请先记住,因为下一章节在实际安装Linux之前,你得先进行主机的规划。

3.3.6 大硬盘配合旧主机造成的无法开机问题

随着时代的演变,如今个人计算机上面的硬盘容量竟然都已经高达 750GB 以上了!这么大的硬盘用起来当然是很爽快的,不过,也有一些问题的,那就是开机的问题。

某些比较旧的主板中,它们的BIOS可能找不到比较大容量的磁盘。所以,你在旧主板上面安装新的大容量磁盘时,很可能你的磁盘容量会被误判。不过,即使是这样,Linux 还是能够安装。而且能够顺利获取到完整的硬盘容量呢!为什么呢?因为当Linux内核顺利开机启动后,它会重新再去检测一次整个硬件而不理会BIOS所提供的信息,所以就能够顺利识别正确的硬盘,并且让你安装Linux。

但是,安装完毕后,可能会无法开机!为什么?前一小节里面我们不是谈到过开机流程与 MBR的内容吗?安装的时候是以光盘启动并且由光盘加载Linux内核,所以内核可以被顺利加载来安装。但是若以这样的配置来开机时,因为 BIOS 识别的硬盘是不对的,所以使用硬盘开机可能就会出现无法开机的错误了。那怎么办?

由于 BIOS 捕捉到的磁盘容量不对,但是至少在整块磁盘前面的扇区它还读得到。因此,你只要将这个磁盘最前面的容量分出一个小分区,并将这个分区与系统启动文件的放置目录摆在一起,那就是/boot这个目录。其实,重点是将启动扇区所在分区规范在小于1024个柱面以内即可。那怎么做到呢?很简单,在进行安装的时候,规划出三个扇区,分别是:

/boot

/

swap

那个/boot只要给100MB左右即可。而且/boot要放在整块硬盘的最前面。这部分你先有印象与概念即可,我们谈到第20章的开机流程时,会再加强说明的!

3.4 重点回顾

新添计算机硬件配置时,需要考虑的角度有游戏机/工作机的考虑、性价比的考虑、支持度的考虑等。

旧的硬件配置可能由于保存的问题或者是电子零件老化的问题,导致计算机系统非常容易在运行过程中出现不明的死机情况。

Red Hat 的硬件支持:https://hardware.redhat.com/?pagename=hcl

在Linux系统中,每个设备都被当成一个文件来对待,每个设备都会有设备文件名。

磁盘的设备文件名主要分为IDE接口的/dev/hd[a-d]及SATA/SCSI/USB接口的/dev/sd[a-p]两种。

磁盘的第一个扇区主要记录了两个重要的信息,分别是:(1)主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有 446bytes;(2)分区表(partition table):记录整块硬盘分区的状态,有64bytes。

磁盘的主分区与扩展分区最多可以有四个,逻辑分区的设备文件名号码一定由5号开始。

开机的流程是:BIOS→MBR→→boot loader→内核文件。

boot loader 的功能主要有提供菜单、加载内核、转交控制权给其他 loader。

boot loader 可以安装的地点有两个,分别是 MBR 与 boot sector。

Linux操作系统的文件使用目录树系统,与磁盘的对应需要有“挂载”的操作才行。

适合于新手的简单分区:建议只要有/及swap两个分区即可。

3.5 本章习题

实作题部分

请分析你的家庭计算机,以你的硬件配置来计算可能产生的耗电量,最终再以计算出来的总瓦数乘上你可能开机的时间,以推估出一年你可能会花费多少钱在你的这台主机上面。

问答题部分

一台计算机主机是否只要CPU够快,整体速度就会提高?

Linux对于硬件的要求需要的考虑是什么?是否一定要很高的配置才能安装Linux?

一部好的主机在安装之前,最好先进行规划,哪些是必定需要注意的Linux主机规划事项?

请写下下列配置在Linux中的设备文件名:

IDE硬盘

CDROM

打印机

软驱

网卡

如果你的系统经常死机,又找不到方法解决,你可以向硬件的哪个方向去搜寻?

目前在个人计算机上面常见的硬盘与主板的连接接口有哪两个?

3.6 参考数据与扩展阅读

SPFdisk:http://spfdisk.sourceforge.net/