linux——学习笔记(鸟哥的私房菜)——基础文件——第二章之主机规划与磁盘分区

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

2.1 Linux与硬件的搭配

    2.1.1 认识计算机的硬件配备

         1.打游戏:因为现在一般的三维(3D)计算机游戏所需要的3D光影运算太多了,所以显示适配器与CPU资源都会被耗用的非常多! 当然就需要比较高级的配备啰,尤其是在显示适配器、CPU(例如Intel的 I5, I7 系列的) 及主板芯片组方面的功能

            2.效能比,性价比

           3.支持度:并非所有的产品都会支持特定的操作系统,这牵涉到硬件开发商是否有意愿提供适当的驱动程序之故。 因此,当我们想要购买或者是升级某些计算机组件时,应该要特别注意该硬件是否有针对您的操作系统提供适当的驱动程序

    2.1.2 选择与Linux搭配的主机配备

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

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

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

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

                       Linux硬件支持的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware

   2.1.3 各硬件装置在Linux中的档名

         『在Linux系统中,每个装置都被当成一个档案来对待』 举例来说,SATA接口的硬盘的文件名即为/dev/sd[a-d],其中, 括号内的字母为a-d当中的任意一个,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd这四个档案的意思

           这种中括号 [ ] 型式的表示法在后面的章节当中会使用得很频繁,请特别留意
         另外先提出来强调一下,在Linux这个系统当中,几乎所有的硬件装置档案都在/dev这个目录内, 所以你会看到/ dev/sda, /dev/sr0等等的档名喔   

            更多Linux核心支持的硬件装置与档名,可以参考如下网页:https://www.kernel.org/doc/Documentation/devices.txt       

   2.1.4 使用虚拟机学习  

              Virtualbox 官网 (https://www.virtualbox.org)

               Virtualbox 官网教学 (https://www.virtualbox.org/manual/ch01.html)

     Fedora 教学 http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/ part-Virtualization-   Virtualization_Reference_Guide.html

2.2 磁盘分区               

     2.2.1 磁盘连接的方式与装置档名的关系

             1. 本身:SATA接口的硬盘的文件名即为/dev/sd[a-d]        虚拟机:/dev/vd[a-p]

              早期磁盘第一个扇区里面含有的重要信息我们称为MBR (Master Boot Record) 格式

             由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。 因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition table)! 这两种分割格式与限制不太相同啦

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

            分割表其实目前有两种格式喔

           1.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

            分割表就只有64 bytes而已,最多只能容纳四笔分割的记录

                  其实所谓的『分割』只是针对那个64 bytes的分割表进行设定而已!

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

                  这四组分割信息我们称为主要(Primary)或延伸(Extended)分割槽

                  分割槽的最小单位『通常』为磁柱(cylinder)

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

           为啥要分割啊?          

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

     既然第一个扇区所在的分割表只能记录四笔数据, 那我可否利用额外的扇区来记录更多的分割信息?  可以的

           https://en.wikipedia.org/wiki/Extended_boot_record

 

磁碟分割表的作用示意图

          如上图右下方那个区块有继续分割出五个分割槽, 这五个由延伸分割继续切出来的分割槽,就被称为逻辑分割槽(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 分割表除了上述的主分割、延伸分割、逻辑分割需要注意之外,由于每组分割表仅有 16bytes 而已,因此可纪录的信息真的是相当有限的! 所以,在过去 MBR 分割表的限制中经常可以发现如下的问题:

         2.GUID partition table, GPT 磁碟分割表

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

 

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

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

  • 操作系统无法抓取到 2.2T 以上的磁盘容量!
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅 446bytes,无法容纳较多的程序代码
  • 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 啦! 你说有没有够大了?

         1.BIOS 搭配 MBR/GPT 的开机流程   

             这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序了!

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

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

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

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

         2.UEFI BIOS 搭配 GPT 开机的流程

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

比较项目 传统 BIOS UEFI
使用程序语言 汇编语言 C 语言
硬件资源控制 使用中断 (IRQ) 管理
不可变的内存存取
不可变得输入/输出存取
使用驱动程序与协议
处理器运作环境 16 位 CPU 保护模式
扩充方式 透过 IRQ 链接 直接加载驱动程序
第三方厂商支持 较差 较佳且可支持多平台
图形化能力 较差 较佳
内建简化操作系统前环境 不支持 支持

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

             1.目录树结构:

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

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

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

2.3 安装Linux前的规划

      2.3.1 选择适当的distribution

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

      2.3.3 主机硬盘的主要规划

      2.3.4 鸟哥的两个实际案例

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章