Linux学习:Linux安装前的规划

 

引用:《鸟哥的Linux私房菜基础篇第三版》

磁盘分区

我们知道一块磁盘是可以被分割成多个分区的(partition),以旧有的Windows观点来看,你可能会有一颗磁盘并且将他分割成为C:, D:, E:盘对吧!那个C, D, E就是分区(partition)啰。但是Linux的装置都是以文件的型态存在,那分区的文件名又是什么? 如何进行磁盘分区?磁盘分区有哪些限制?目前的 BIOS 与 UEFI 分别是啥?MSDOS 与 GPT 又是啥? 都是我们这个小节所要探讨的内容啰。

磁盘连接的方式与装置文件名的关系

我们知道个人计算机常见的磁盘接口有两种, 分别是SATA与SAS接口,目前(2015)的主流是SATA接口。不过更老旧的计算机则有可能是已经不再流行的IDE接口喔! 以前的IDE接口与SATA接口在Linux的磁盘代号并不相同,不过近年来为了统一处理,大部分Linux distribution已经将IDE接口的磁盘文件名也仿真成跟SATA一样了! 所以你大概不用太担心磁盘设备文件名的问题了!

时代在改变啊~既然IDE接口都可以消失了,那磁盘文件名还有什么可谈的呢?嘿嘿!有啊!虚拟化是目前很常见的一项技术, 因此你在使用的机器很可能就是虚拟机,这些虚拟机使用的『虚拟磁盘』并不是正规的磁盘接口!这种情况下面,你的磁盘文件名就不一样了! 正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚拟机环境下面,为了加速,可能就会使用 /dev/vd[a-p] 这种设备文件名喔! 因此在实际处理你的系统时,可能得要了解为啥会有两种不同磁盘文件名的原因才好!

例题:

假设你的主机为虚拟机,里面仅有一颗VirtIO接口的磁盘,请问他在Linux操作系统里面的设备文件名为何?

答:

虚拟机使用 VirtIO 接口时,磁盘文件名应该是 /dev/vda 才对!

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

例题:

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

答:

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

  1. SATA1插槽上的檔名:/dev/sda
  2. SATA5插槽上的檔名:/dev/sdb
  3. USB磁盘(开机完成后才被系统检测到):/dev/sdc

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

我们在计算器概论谈过磁盘的组成主要有磁盘盘片、机械手臂、磁盘磁头与主轴马达所组成, 而数据的写入其实是在磁盘盘片上面。磁盘盘片上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区的物理量设计有两种大小,分别是 512bytes 与 4Kbytes。假设磁盘只有一个磁盘盘片,那么磁盘盘片有点像下面这样:

磁盘盘组成示意图

那么是否每个扇区都一样重要呢?其实整颗磁盘的第一个扇区特别的重要,因为他记录了整颗磁盘的重要信息! 早期磁盘第一个扇区里面含有的重要信息我们称为MBR (Master Boot Record) 格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition table)! 这两种分割格式与限制不太相同啦!

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

MSDOS(MBR) 与 GPT 磁盘分区表(partition table)

但是硬盘总不能真的拿锯子来切切割割吧?那硬盘还真的是会坏掉去!那怎办?在前一小节的图示中, 我们有看到『开始与结束磁道』吧?而通常磁盘可能有多个磁盘盘片,所有磁盘盘片的同一个磁道我们称为磁柱 (Cylinder), 通常那是文件系统的最小单位,也就是分区的最小单位啦!为什么说『通常』呢?因为近来有 GPT 这个可达到 64bit 纪录功能的分区表, 现在我们甚至可以使用扇区 (sector) 号码来作为分割单位哩!厉害了! 所以说,我们就是利用参考对照磁柱或扇区号码的方式来处理啦!

也就是说,分区表其实目前有两种格式喔!我们就依序来谈谈这两种分区表格式吧。

  • MSDOS (MBR) 分区表格式与限制

早期的 Linux 系统为了兼容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主引导记录区) 的方式来处理开机管理程序与分区表!而开机管理程序记录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512bytes 的大小 (旧的磁盘扇区都是 512bytes 喔!),所以说,第一个扇区 512bytes 会有这两个数据:

  • 主引导记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes
  • 分区表(partition table):记录整颗硬盘分割的状态,有64 bytes

由于分区表所在区块仅有64 bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。 若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么那64 bytes的记录区段有点像下面的图示:

磁盘分区表的作用示意图

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

  • P1:/dev/sda1
  • P2:/dev/sda2
  • P3:/dev/sda3
  • P4:/dev/sda4

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

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

  • 其实所谓的『分区』只是针对那个64 bytes的分区表进行配置而已!
  • 硬盘默认的分区表仅能写入四组分割信息
  • 这四组分割信息我们称为主要(Primary)或扩展(Extended)分区
  • 分区的最小单位『通常』为磁柱(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

咦!你会不会突然想到,为啥要分割啊?基本上你可以这样思考分割的角度:

  1. 数据的安全性:
    因为每个分区的数据是分开的!所以,当你需要将某个分区的数据重整时,例如你要将计算机中Windows的C盘重新安装一次系统时, 可以将其他重要数据移动到其他分区,例如将邮件、桌面数据移动到D盘去,那么C盘重灌系统并不会影响到D盘! 所以善用分区,可以让你的数据更安全。
  2. 系统的效能考虑:
    由于分区将数据集中在某个磁柱的区段,例如上图当中第一个分区位于磁柱号码1~100号,如此一来当有数据要读取自该分区时, 磁盘只会搜寻前面1~100的磁柱范围,由于数据集中了,将有助于数据读取的速度与效能!所以说,分割是很重要的!

既然分区表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分割出四个分区?当然不是啦!有经验的朋友都知道, 你可以将一颗硬盘分割成十个以上的分区的!那又是如何达到的呢?在Windows/Linux系统中, 我们是通过刚刚谈到的扩展分区(Extended)的方式来处理的啦!扩展分区(延伸分割)的想法是: 既然第一个扇区所在的分区表只能记录四笔数据, 那我可否利用额外的扇区来记录更多的分割信息?实际上图示有点像下面这样:

磁盘分区表的作用示意图

Tips

实际上扩展分区并不是只占一个区块,而是会分布在每个分区的最前面几个扇区来记载分割信息的!只是为了方便读者记忆, 鸟哥在上图就将他简化了!有兴趣的读者可以到下面的连结瞧一瞧实际扩展分区的纪录方式:
http://en.wikipedia.org/wiki/Extended_boot_record

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

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

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

  • P1:/dev/sda1
  • P2:/dev/sda2
  • L1:/dev/sda5
  • L2:/dev/sda6
  • L3:/dev/sda7
  • L4:/dev/sda8
  • L5:/dev/sda9

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

MBR 主要分割、扩展分区与 逻辑分区的特性我们作个简单的定义啰:

  • 主要分割与扩展分区最多可以有四笔(硬盘的限制)
  • 扩展分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由扩展分区持续切割出来的分区;
  • 能够被格式化后,作为数据存取的分区为主要分割与逻辑分区。扩展分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分割限制;

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

例题:

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

磁盘空间整合示意图

答:

  • 上图可以整合:因为上图的D与E同属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新建立一个新的分区, 就能够在不影响其他分区的情况下,将两个分区的容量整合成为一个。
  • 下图不可整合:因为D与E分属主分割与逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分割。 但如此一来会影响到所有的逻辑分区,要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在扩展分区里面嘛!

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

例题:

如果我想将一颗大硬盘『暂时』分割成为四个partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分割出四个Primary?若不行,那么你建议该如何分割?

答:

  • 由于Primary+Extended最多只能有四个,其中Extended最多只能有一个,这个例题想要分割出四个分区且还要预留剩余容量, 因此P+P+P+P的分割方式是不适合的。因为如果使用到四个P,则即使硬盘还有剩余容量, 因为无法再继续分割,所以剩余容量就被浪费掉了。
  • 假设你想要将所有的四笔记录都花光,那么P+P+P+E是比较适合的。所以可以用的四个partitions有3个主要及一个逻辑分区, 剩余的容量在扩展分区中。
  • 如果你要分割超过4个以上时,一定要有Extended分区,而且必须将所有剩下的空间都分配给Extended, 然后再以logical的分割来规划Extended的空间。 另外,考虑到磁盘的连续性,一般建议将Extended的磁柱号码分配在最后面的磁柱内。

 

例题:

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

答:

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

  • P+P+P+E的环境:
     

分割示意图

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

  • P+E的环境:
     

分割示意图

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

MBR 分区表除了上述的主分区、扩展分区、逻辑分区需要注意之外,由于每组分区表仅有 16bytes 而已,因此可纪录的信息真的是相当有限的! 所以,在过去 MBR 分区表的限制中经常可以发现如下的问题:

  • 操作系统无法抓取到 2.2T 以上的磁盘容量!
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅 446bytes,无法容纳较多的程序代码。

这个 2.2TB 限制的现象在早期并不会很严重。但是,近年来硬盘厂商动不对推出的磁盘容量就高达好几个 TB 的容量!目前 (2015) 单一磁盘最高容量甚至高达 8TB 了! 如果使用磁盘阵列的系统,像鸟哥的一组系统中,用了 24 颗 4TB 磁盘搭建出磁盘阵列,那在 Linux 下面就会看到有一颗 70TB 左右的磁盘! 如果使用 MBR 的话...那得要 2TB/2TB 的割下去,虽然 Linux kernel 现在已经可以通过某些机制让磁盘分区高过 63 个以上,但是这样就得要割出将近 40 个分区~ 真要命... 为了解决这个问题,所以后来就有 GPT 这个磁盘分区的格式出现了!

  • GUID partition table, GPT 磁盘分区表

因为过去一个扇区大小就是 512bytes 而已,不过目前已经有 4K 的扇区设计出现!为了兼容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。

与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分割信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!这样或许会比较安全些吧!详细的结构有点像下面的模样:

GPT 分区表的结构示意图

上述图示的解释说明如下:

  • LBA0 (MBR 相容区块)

与 MBR 模式相似的,这个兼容区块也分为两个部份,一个就是跟之前 446 bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个兼容模式仅放入一个特殊标志的分割,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘喔!

  • LBA1 (GPT 表头纪录)

这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分割 (就是前面谈到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运作!

  • LBA2-33 (实际记录分区信息处)

从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分割纪录,所以在默认的情况下,总共可以有 4*32 = 128 笔分割纪录喔!因为每个 LBA 有 512bytes,因此每笔纪录用到 128 bytes 的空间,除了每笔纪录所需要的标识符与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说, 他的最大容量限制就会在『 264 * 512bytes = 263 * 1Kbytes = 233*TB = 8 ZB 』,要注意 1ZB = 230TB 啦! 你说有没有够大了?

现在 GPT 分割默认可以提供多达 128 笔纪录,而在 Linux 本身的核心设备纪录中,针对单一磁盘来说,虽然过去最多只能到达 15 个分区,不过由于 Linux kernel 通过 udev 等方式的处理,现在 Linux 也已经没有这个限制在了! 此外,GPT 分割已经没有所谓的主、扩展、逻辑分区的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用喔!

Tips

鸟哥一直以为核心认识的设备主要/次要号码就一定是连续的,因此一直没有注意到由于新的机制的关系,分区已经可以突破核心限制的状况! 感谢大陆网友微博代号『学习日记博客』的提醒!此外,为了查询正确性,鸟哥还真的有注意到网络上有朋友实际拿一颗磁盘分区出 130 个以上的分区, 结果他发现 120 个以前的分区均可以格式化使用,但是 130 之后的似乎不太能够使用了!或许跟默认的 GPT 共 128 个号码有关!

虽然新版的 Linux 大多认识了 GPT 分区表,没办法,我们 server 常常需要比较高容量的磁盘嘛!不过,在磁盘管理工具上面, fdisk 这个老牌的软件并不认识 GPT 喔!要使用 GPT 的话,得要操作类似 gdisk 或者是 parted 指令才行!这部份我们会在第二篇再来谈一谈。 另外,开机管理程序方面, grub 第一版并不认识 GPT 喔!得要 grub2 以后才会认识的!

并不是所有的操作系统都可以读取到 GPT 的磁盘分区格式喔!同时,也不是所有的硬件都可以支持 GPT 格式喔!是否能够读写 GPT 格式又与开机的检测程序有关! 那开机的检测程序又分成啥鬼东西呢?就是 BIOS 与 UEFI 啦!那这两个又是啥东西?就让我们来聊一聊!

开机流程中的 BIOS 与 UEFI 开机检测程序

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

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

基本上,目前的主机系统在加载硬件驱动方面的程序,主要有早期的 BIOS 与新的 UEFI 两种机制,我们分别来谈谈啰!

  • BIOS 搭配 MBR/GPT 的开机流程

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

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

这个开机管理程序的目的是在加载(load)核心文件, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,开机管理程序与 BIOS 也功成圆满,将之后的工作就交给大家所知道的操作系统啦!

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

  1. BIOS:开机主动执行的firmware,会认识第一个可开机的设备;
  2. MBR:第一个可开机设备的第一个扇区内的主要启动记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
  4. 核心文件:开始操作系统的功能...

第二点要注意,如果你的分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 兼容区块读取第一阶段的开机管理程序代码, 如果你的开机管理程序能够认识 GPT 的话,那么使用 BIOS 同样可以读取到正确的操作系统核心喔!换句话说, 如果开机管理程序不懂 GPT ,例如 Windows XP 的环境,那自然就无法读取核心文件,开机就失败了!

Tips

由于 LBA0 仅提供第一阶段的开机管理程序代码,因此如果你使用类似 grub 的开机管理程序的话,那么就得要额外分割出一个『 BIOS boot 』的分区, 这个分区才能够放置其他开机过程所需的程序代码!在 CentOS 当中,这个分区通常占用 2MB 左右而已。

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

  • 提供菜单:用户可以选择不同的开机项目,这也是多重引导的重要功能!
  • 载入核心文件:直接指向可开机的程序区段来开始操作系统;
  • 转交其他loader:将开机管理功能转交给其他loader负责。

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

我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分区,其中第一、二分区分别安装了Windows及Linux, 你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的开机管理程序, 那么整个流程可以图标如下:

 开机管理程序的工作执行示意图

在上图中我们可以发现,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的内容即可。 例如利用Linux的救援模式来挽救MBR啊!

  • UEFI BIOS 搭配 GPT 开机的流程

我们现在知道 GPT 可以提供到 64bit 的寻址,然后也能够使用较大的区块来处理开机管理程序。但是 BIOS 其实不懂 GPT 耶!还得要通过 GPT 提供兼容模式才能够读写这个磁盘设备~而且 BIOS 仅为 16 位的程序,在与现阶段新的操作系统接轨方面有点弱掉了! 为了解决这个问题,因此就有了 UEFI (Unified Extensible Firmware Interface) 这个统一可扩展固件接口的产生。

UEFI 主要是想要取代 BIOS 这个固体接口,因此我们也称 UEFI 为 UEFI BIOS 就是了。UEFI 使用 C 程序语言,比起使用汇编语言的传统 BIOS 要更容易开发!也因为使用 C 语言来编写,因此如果开发者够厉害,甚至可以在 UEFI 开机阶段就让该系统了解 TCP/IP 而直接上网! 根本不需要进入操作系统耶!这让小型系统的开发充满各式各样的可能性!

基本上,传统 BIOS 与 UEFI 的差异可以用T客帮杂志汇整的表格来说明:

比较项目

传统 BIOS

UEFI

使用程序语言

汇编语言

C 语言

硬件资源控制

使用中断 (IRQ) 管理
不可变的内存存取
不可变得输入/输出存取

使用驱动程序与协议

处理器运作环境

16 位

CPU 保护模式

扩充方式

通过 IRQ 连结

直接加载驱动程序

第三方厂商支持

较差

较佳且可支持多平台

图形化能力

较差

较佳

内建简化操作系统前环境

不支援

支援

从上头我们可以发现,与传统的 BIOS 不同,UEFI 简直就像是一个低级的操作系统~甚至于连主板上面的硬件资源的管理, 也跟操作系统相当类似,只需要加载驱动程序即可控制操作。同时由于程控得宜,一般来说,使用 UEFI 接口的主机,在开机的速度上要比 BIOS 来的快上许多! 因此很多人都觉得 UEFI 似乎可以发展成为一个很有用的操作系统耶~不过,关于这个,你无须担心未来除了 Linux 之外,还得要增加学一个 UEFI 的操作系统啦!为啥呢?

UEFI 当初在发展的时候,就制定一些控制在里头,包括硬件资源的管理使用轮询 (polling) 的方式来管理,与 BIOS 直接了解 CPU 以中断的方式来管理比较, 这种 polling 的效率是稍微慢一些的,另外,UEFI 并不能提供完整的缓存功能,因此执行效率也没有办法提升。不过由于加载所有的 UEFI 驱动程序之后, 系统会开启一个类似操作系统的 shell 环境,用户可以此环境中执行任意的 UEFI 应用程序,而且效果比 MSDOS 更好哩。

所以啰,因为效果华丽但性能不佳,因此这个 UEFI 大多用来作为启动操作系统之前的硬件检测、开机管理、软件配置等目的,基本上是比较难的。 同时,当加载操作系统后,一般来说,UEFI 就会停止工作,并将系统交给操作系统,这与早期的 BIOS 差异不大。比较特别的是,某些特定的环境下, 这些 UEFI 程序是可以部分继续执行的,以协助某些操作系统无法找到特定设备时,该设备还是可以持续运作。

此外,由于过去 cracker 经常通过 BIOS 开机阶段来破坏系统,并取得系统的控制权,因此 UEFI 加入了一个所谓的安全启动 (secure boot) 机制, 这个机制代表着即将开机的操作系统必须要被 UEFI 所验证,否则就无法顺利开机!微软用了很多这样的机制来管理硬件。 不过加入这个机制后,许多的操作系统,包括 Linux ,就很有可能无法顺利开机喔!所以,某些时刻,你可能得要将 UEFI 的 secure boot 功能关闭, 才能够顺利的进入 Linux 哩! (这一点让自由软件工作者相当感冒啦!)

另外,与 BIOS 模式相比,虽然 UEFI 可以直接取得 GPT 的分区表,不过最好依旧拥有 BIOS boot 的分区支持, 同时,为了与 windows 兼容,并且提供其他第三方厂商所使用的 UEFI 应用程序储存的空间,你必须要格式化一个 vfat 的文件系统, 大约提供 512MB 到 1G 左右的容量,以让其他 UEFI 执行较为方便。

Tips

由于 UEFI 已经克服了 BIOS 的 1024 磁柱的问题,因此你的开机管理程序与核心可以放置在磁盘开始的前 2TB 位置内即可!加上之前提到的 BIOS boot 以及 UEFI 支持的分区,基本上你的 /boot 目录几乎都是 /dev/sda3 之后的号码了!这样开机还是没有问题的!所以要注意喔!与以前熟悉的分割状况已经不同, /boot 不再是 /dev/sda1 啰!很有趣吧!

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

在 windows 系统重灌之前,你可能都会事先考虑,到底系统碟 C 盘要有多少容量?而数据盘 D 盘又要给多大容量等等, 然后实际安装的时候,你会发现到其实 C 盘之前会有个 100MB 的分区被独立出来~所以实际上你就会有三个分区就是了。那 Linux 下面又该如何设计类似的东西呢?

  • 目录树结构 (directory tree)

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

目录树相关性示意图

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

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

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

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

目录树与分区之间的相关性

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

Tips

windows 也是用挂载的观念啊!鸟哥上课经常谈到的范例就是,当你拿 USB 磁盘放置到你的 windows 时,系统会检测到一个 F盘好了, 那你想要读取 USB 的数据,要去哪里啊?当然就去 F 啰!同样的这颗 USB,当你拿到学校的 windows 时,却显示的是 H 盘好了, 那你要读取 USB 的数据还是去 F 盘吗?当然不是,你会去 H 盘啊!这个『设备与磁盘分区对应的关系,就是 windows 概念下的挂载』啦! 这样说,有没有比较好理解?

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

例题:

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

答:

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

  • Windows: 桌面\我的计算机\E:\我的文件
  • Linux: /media/cdrom/我的文件

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

  • /mnt/我的文件

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

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

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

  • 自定义安装『Custom』:
    • A:初次接触Linux:只要分割『 / 』及『swap』即可:

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

    • B:建议分割的方法:预留一个备用的剩余磁盘容量!

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

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

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

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

现在你知道Linux为什么不好学了吧?因为很多基础知识都得要先了解!否则连安装都不知道怎么安装~ 现在你知道Linux的可爱了吧!因为如果你学会了,嘿嘿!很多计算机系统/操作系统的概念都很清晰, 转换到不同的信息跑道是比较容易的喔!^_^

安装Linux前的规划

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

选择适当的distribution

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

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

在我们这次的练习中,不想给大家太沉重的负担啦,所以鸟哥选择CentOS这一个号称与RHEL完全兼容的版本来练习, 目前(2015/05)最新的版本是CentOS 7.1版。不过,从 CentOS 7.0 版本开始,安装光盘已经不再提供 386 兼容版本了, 亦即仅有 64 位的硬件才能够使用该安装光盘来装系统了!旧的 32 位硬件系统已经不主动提供安装光盘了喔!

你可以选择到CentOS的官方网站去下载最新的版本,不过我们在台湾嘛!台湾有镜像站点(mirror site), 所以由镜像站点来下载比较快啊!下面列出CentOS的下载点:

CentOS 7.x 有提供完整版本 (everything) 以及大部分安装软件的 DVD1 版本,鸟哥建议如果你的网络速度够大,下载 everything 版本即可, 如果你得要使用光驱来安装的话,那直接下载 DVD 版本并且刻录到 DVD 光盘上面即可安装了。如果不想要安装,只想要看看到底开机会是什么 Linux 环境, 可以下载 LiveCD/LiveGNOME/LiveKDE 等版本来测试喔!如果想要练功,可以直接使用最小安装光盘版 (Minimal) 来安装!

不知道你有没有发现,怎么我想要下载的文件名会是 CentOS-7-x86_64-Everything-1503-01.iso 这样的格式?那个 1503 是啥东西啊? 其实从 CentOS 7 之后,版本命名的依据就跟发表的日期有关了!那个 CentOS-7 讲的是 7.x 版本,x86_64 指的是 64 位操作系统, Everything 指的是包含所有的版本,1503 指的是 2015 年的 3 月发表的版本, 01.iso 则得要与 CentOS7 搭配,所以是 CentOS 7.1 版的意思! 这样有看懂吗?

Tips

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

此外,这种映像文件可不能以数据格式刻录成为光盘/DVD的!你必须要使用刻录程序的功能, 将他以『映像文件格式』刻录成为光盘或DVD才行!切记不要使用刻录数据文件格式来刻录喔!重要重要!

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

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

  • 打造Windows与Linux共存的环境:

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

  • 我的环境里面仅能允许我拥有一部主机,不论是经济问题还是空间问题~
  • 因为目前各主要硬件还是针对Windows进行驱动程序的开发,我想要同时保有Windows操作系统与Linux操作系统, 以确定在Linux下面的硬件应该使用那个I/O port或者是IRQ的分配等等;
  • 我的工作需要同时使用到Windows与Linux操作系统。

果真如此的话,那么刚刚我们在上一个小节谈到的开机流程与多重引导的数据就很重要了。 因为需要如此你才能够在一部主机上面操弄两种不同的操作系统嘛!

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

  • NAT(达成IP分享器的功能):

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

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

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

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

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

我们可以使用Linux上面的SAMBA这个软件来达成加入Windows的功能喔!SAMBA的效能不错, 也没有客户端联机数的限制,相当适合于一般学校环境的文件服务器(file server)的角色呢!

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

  • Mail(邮件服务器):

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

虽然免费的信箱已经非常够用了,老实说,鸟哥也不建议您架设mail server了。问题是, 如果你是一间私人单位的公司,你的公司内传送的email是具有商业机密或隐私性的,那你还想要交给免费信箱去管理吗? 此时才有需要架设mail server啰。在mail server上面,重要的也是硬盘容量与网络卡速度,在此情境中,也可以将/var目录独立出来,并加大容量。

  • Web(WWW服务器):

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

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

  • DHCP(提供客户端自动取得IP的功能):

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

  • FTP:

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

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

主机硬盘的主要规划

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

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

硬盘的规划对于Linux新人而言,那将是造成你『头疼』的主要凶手之一! 因为硬盘的分割技巧需要对于Linux文件结构有相当程度的认知之后才能够做比较完善的规划的! 所以,在这里你只要有个基础的认识即可。老实说,没有安装过十次以上的Linux系统,是学不会Linux与磁盘分区的啦!

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

  • 最简单的分割方法:
    这个在上面第二节已经谈过了,就是仅分割出根目录与内存置换空间( / & swap )即可。 然后再预留一些剩余的磁盘以供后续的练习之用。不过,这当然是不保险的分割方法(所以鸟哥常常说这是『懒人分割法』)! 因为如果任何一个小细节坏掉(例如坏道的产生),你的根目录将可能整个的损毁~挽救方面较困难!
  • 稍微麻烦一点的方式:
    较麻烦一点的分割方式就是先分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起, 那当这些读写较频繁的磁盘分区有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易啊! 在默认的CentOS环境中,下面的目录是比较符合容量大且(或)读写频繁的目录啰:
    • /boot
    • /
    • /home
    • /var
    • Swap

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值