一、各硬件装置在Linux中的文件名

因为在Linux中,所有东西都是一个文件,其中就包括了硬件设备,所以各硬件设置在Linux中的文件名如下图所示(更多Linux内核支持的硬件设备与文件名可以到 https://www.kernel.org/doc/Documentation/devices.txt查看):

二、硬盘分区

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

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

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

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

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

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

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

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

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

2、为何要分区?

1)、数据的安全性

因为每个分区的数据是分开的,所以,当你需要将某个分区的数据重新整理时,比如要重新安装系统的时候,可以将Windows系统的C盘重新安装系统,可以将里面的数据移动到其他分区,那么C盘在重新安装系统的时候并不会影响到其他分区,所以善于使用分区,可以让你的数据更安全。

2)、系统的性能考虑

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

3、分区表只能记录4个组数据,那怎么解释一块硬盘可以分区成十几块

在windows/Linux系统中,我们是通过刚刚谈到的扩展分区(Extended)的方式来处理的。

扩展分区(Extended)的想法是:既然第1个扇区所在的分区表只能记录4笔数据,那我可否利用额外的扇区来记录更多的分区信息?

扩展分区(Extended)的目的是:使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化,扩展分区(Extended)继续切出来的分区被称为逻辑分区,如下图所示:

上述的分区在Linux中的装置文件名分别为:

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

因为前面4个号码是保留给Primary或都Extended使用的,所以逻辑分区的装置号就是由5号开始,这个知识点在MBR方式的分区表中是个很重要的特性。

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

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

提示:

  • 实际上,分区是个很麻烦的东西,因为它是以柱面为单位的【连续】磁盘空间,且扩展分区又是个类似独立的磁盘空间,所以在分区的时候我们要特别注意,如果扩展分区被破坏,所有逻辑分区将会被删除。
  • 由于第一个扇区所记录的分区表与MBR是很重要的,所以只要读取硬盘都会先由这个扇区先读起,因此,如果整块硬盘的第一块扇区(就是MBR与分区表所在的扇区)有损坏,那这个硬盘 大概就没有用了,因为系统如果找不到分区表,那么就不知道如何读取柱面区间。

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

  • 操作系统无法使用2.0TB以上的磁盘容量
  • MBR仅有一个区块,若被破坏后,经常无法或很难恢复
  • MBR内的存放启动引导程序的区块仅446bytes,无法存储较多的程序代码

5、GPT(GUID partition table)磁盘分区表

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

与MBR分区表仅使用第一个512字节区块来记录不同,GPT使用了34个LBA区块来记录分区信息。同时与过去MBR仅有一个区块,被干掉就死光光的情况不同,GPT除了前面34个LBA外,整个磁盘的最后34个LBA也拿来作为另一个备份,详细结构如下图所示:

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

  • LBA0(MBR兼容区块)

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

  • LBA1(GPT表头记录)

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

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

从LBA2区块开始,每个LBA都可以记录4组分区记录,所以在默认的情况下,总共可以有4x32=128组分区记录,因为每个LBA有512字节,因此每组记录用到128字节的空间,除了每组记录所需要的标识符与相关的记录之外,GPT在每组记录中分别提供了64位来记载开始/结束的扇区号码,因此,GPT分区表对于单一分区来说,它的最大容量限制就会在

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

提示:

  • fdisk这个老牌的软件并不支持GPT
  • 第一版grub不支持GPT,只有grub2以后的版本才支持
  • 要使用GPT,得要运行类似的gdisk、parted命令才行

6、启动流程中的BIOS与UEFI启动检测程序

1)、BIOS搭配MBR/GPT的启动流程

CMOS:记录各项硬件参数且嵌入在主板上的存储器

BIOS:是一个写入到主板上的一个固件(也可称为是写入到硬件上的一个软件程序)

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

这个启动引导程序的目的是在加载(load)内核文件,由于启动引导程序是操作系统在安装的时候所提供的,所以它会认识硬盘内的文件系统格式,因此就能够读取内核文件,然后接下来就是内核文件的工作,启动引种程序与BIOS也功成圆满,将之后的工作就交给了操作系统。

简单的描述整个启动流程到操作系统之前的过程应该是这样的:

  • BIOS:启动主动执行的固件,会认识第一个可启动的设备
  • MBR:第一个可启动设备的第一个扇区内的主引导记录块,内含启动引导代码
  • 启动引导程序(boot loader):一个可读取内核文件来执行的软件
  • 内核文件:开始启动操作系统

注意:如果你的分区表为GPT格式的话,那么BIOS也能够从LBA0的MBR兼容区块读取第一阶段的启动引导程序代码,如果你的启动引导程序能够支持GPT的话,那么使用BIOS同样可以读取到正确的操作系统内核,换句话说,如果启动引导程序不懂GPT,例如Windows XP,那么自然就无法读取内核文件,就会无法启动操作系统。

2)、多重引导

由于LBA0仅提供第一阶段的启动引导程序代码,因此如果你使用类似grub的启动引导程序的话,那么就得要额外的划分出一个“BIOS boot”的分区,这个分区才能够放置其他开机过程所需的程序,在CentOS当中,这个分区通常占用2MB左右的空间。

BIOS与MBR都是硬件本身会支持的功能,至于启动引导程序(Boot loader)则是操作系统安装在MBR上面的一个软件。由于MBR仅有446字节,因此这个启动引导程序(Boot loader)是非常小而高效,这个启动引导程序(Boot loader)的主要任务有:

  • 提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能
  • 加载内核文件:直接指向可使用的程序区段来启动操作系统
  • 转交其他启动引导程序:将启动管理功能转交给其他启动引导程序负责

上面前2点好理解,但是第3点有点难度,那是因为我们的计算机系统里面可能具有两个以上的启动引导程序(多个操作系统),虽然我们的硬盘只有一个MBR,但是启动引导程序除了可以安装在MBR之外,还可以安装在每个分区的启动扇区(boot sector)。

举例来说,计算机里面只有一块硬盘,但是分成了4个分区,其中第一、第二分区 分别安装了Windows和Linux系统,你要在开机的时候选择使用Windows还是Linux启动,假设MBR内安装的是可同时认识Windows与Linux操作系统的启动引导程序,那么这个开机选择流程如下图所示:

从上图可看出, MBR的启动引导程序提供两个选项,选项一(M1)可以直接加载Windows的内核文件来开机,选项二(M2)则是将开机管理工作交给第二个分区的启动扇区(boot sector),当用户在开机的时候选择选项二时,那么整个开机管理工作就会交给第二分区的启动引导程序,当第二个启动引导程序启动后,该启动引导程序内仅有一个启动选项,因此就能够使用Linux的内核文件来启动,这就是多重引导的工作情况。将上图总结可知:

  • 每个分区都拥有自己的启动扇区(boot sector)
  • 图中的系统分区为第一及第二分区
  • 实际可启动的内核文件是放置到各分区中的
  • 启动引导程序可直接指向或间接将管理权转交给另一个管理程序
  • 启动引导程序只会认识自己的系统分区内的可启动的内核文件,以及其他启动引导程序而已

注意:如果要安装多重引导,最好先安装Windows在安装Linux

  • Linux在安装的时候,你可以选择将启动引导程序安装在MBR或各别分区的启动扇区,而且Linux的启动引导程序可以手动设置选项,所以你可以在Linux的启动引导程序里面加入Windows启动的选项
  • Windows在安装的时候,它的安装程序会主动地覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会,而且它没有 让我们自己选择选项的功能

因此,如果先安装Linux在安装Windows的话,那么MBR的启动引导程序就只会有WIndows的选项,而不会有Linux的选项(因为原本在MBR内的Linux的启动引导程序就会被覆盖掉)。如果出现这种问题,只能使用各种办法来处理MBR的内容即可,比如利用Linux的恢复模式来修复MBR等。

3)、UEFI BIOS搭配GPT启动的流程

UEFI主要是想要取代BIOS这个固件接口,因此我们也称UEFI为UEFI BIOS。UEFI使用C语言来编写而BIOS使用汇编语言来编写,因此如果开发者够厉害,甚至可以在UEFI启动阶段就让该系统了解TCP/IP而直接上网,根本不需要进入操作系统。

基本上,传统BIOS与UEFI的差异可以使用下表来说明:

过去,因此骇客(Cracker)经常借由BIOS启动阶段来破坏系统,并取得系统的控制权,因此UEFI加入了一个所谓的安全启动(secure boot)功能,这个功能代表着即将启动的操作系统必须要被UEFI所验证,否则就无法顺利启动,在某些时刻,你可能要将UEFI的安全启动(Secure boot)功能关闭才能够顺利进入Linux。

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

由于UEFI已经解决了BIOS的1024柱面的问题,因此你的启动引导程序与内核可以放置在磁盘开始的前2TB位置内即可,加上之前提到的BIOS boot以及UEFI支持的分区,基本上你的 /boot 目录几乎都是 /dev/sda3之后的号码。这样启动还是没有问题的,所以要注意,与以前熟悉的分区情况已经不同, /boot 不在是 /dev/sda1 。

6、Linux安装模式下,磁盘分区的选择

1)、目录树结构(directory tree)

所谓的目录树结构(directory tree)就是以根目录为主,然后向下呈现为分支状的目录结构的一种文件架构。

整个目录树最重要的就是那个 根目录(root directory),这个根目录的表示方法为一条斜线 “/”,所有的文件都与目录树有关,Linux内的所有数据都是以文件的形式来呈现的。

目录树的呈现方式如下图:

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

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

上图我们假设我的硬盘分为两个分区,分区1挂载的是根目录,分区2则是挂载到 /home这个目录,当我的数据放置到 /home内的各层目录时,数据是放置到分区2中的,如果不是放在 /home下面的目录,那么数据就会被放置在分区1中(因为上图我们假设只有两个分区,所以数据不在 /home下面的目录中就必定在 分区1中)。

三、CentOS 7.x的安装(CentOS7默认的是使用xfs作为文件系统)

1、界面介绍

2、软件安装包的选择

对于初学者的我们来说,我们要选择带GUI的界面、兼容性程序库、开发工具即可,选择如下图即可:

3、分区

1)、各分区说明

2)、不使用GPT的创建分区

3)、使用GPT分区表的创建分区

a、如果我们使用GPT分区表,我们在安装系统的时候,先按下键盘的 TAB 键, 然后在下面输入 “inst.gpt”  这个关键词,然后在直接按回车键确认,让其在继续走下去即可。

b、跟不使用GPT分区表一样,选择 “标准分区”,然后在分区的时候要设置LVM的数据

  • 设置类型更改为 “LVM”
  • 点击进去之后,大小策略要设置成“Fixed”,这样才能进行大小的修改设置
  • 其他的以此类推即可,如下图所示:

4)、之后进入到一个界面,这里需要我们先设置root密码和创建一个我们登录所使用的用户账号和密码,如图所示:

5)、最后一步,当系统自动安装完成后会出现一个让我们重启,我们直接重启即可,这一步之后,我们的CentOS就正式安装完成

6)、重启好后,我们要对那个协议进行同意,否则无法使用Linux系统

《Linux运维学习日记》第二篇:Linux的安装[CentOS 7.X]相关推荐

  1. 详解Linux运维工程师打怪升级篇

    详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼 ...

  2. 阿里云官方学习课程推荐-Linux运维学习路线 从事云计算运维相关工作必备技能

    阿里云官方学习课程推荐-Linux运维学习路线 从事云计算运维相关工作必备技能 目前越来越多的企业需要依赖于IT技术发布产品与服务,尤其是电子商务最为明显,它凸显了IT技术在现代企业中的重要性.当企业 ...

  3. linux系统运维费用,一般Linux运维学习的费用是多少?Linux学习

    随着IT 互联网技术的发展,Linux逐渐成为中高端服务器的主要操作系统,并且目前地位不可替代.Linux运维工程师是一位"复合型人才",他集成了网络.系统.数据库.开发和安全等工 ...

  4. linux学习项目,[ Linux运维学习 ] 路径及实战项目合集

    我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. ...

  5. 兄弟连Linux运维学习笔记

    最新经典linux运维兄弟连Linux运维学习笔记... --------------- 全程1.5倍播放.加油我一定可以学完Linux ---------------------- Unix与Lin ...

  6. Linux运维学习路线图

    关注"尚硅谷"微信公众号,输入"Linux"获取Linux全运维学习资料 一.Linux基础知识 Linux简介与安装 Linux常用命令 Vim编辑器 Lin ...

  7. linux下软件包清理,Linux运维知识:如何清理Linux系统中的孤立、无用的软件包

    本文主要向大家介绍了Linux运维知识的如何清理Linux系统中的孤立.无用的软件包,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 在Linux下安装软件,通常会自动安装一些 ...

  8. linux常见系统目录,Linux系统中常见目录有哪些?linux运维学习中心

    Linux系统中常见目录有哪些?随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,市场对于Linux运维人才的需求也是逐渐增加.L ...

  9. linux如何使用eth0网卡,Linux运维学习之如何取出网卡eth0的ip地址?

    Linux运维基础学习中,关于awk了解多少呢?咱们今天就来简单了解下如何取出网卡eth0的ip地址. hostname -I awk处理: 方法一: [root@oldboy files]# ifc ...

最新文章

  1. 【caffe】create_cifar10.sh在windows下解决方案
  2. 机器学习入门:线性回归及梯度下降
  3. pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!
  4. html5列表去掉符号,从Python字符串中删除不在允许列表中的HTML标记
  5. Scala变量介绍及入门示例
  6. Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数
  7. Activiti之H2
  8. thinkphp3.2.3 自动验证 正则验证
  9. BZOJ 2440 【中山市选2011】 完全平方数
  10. 如何基于云通讯构建企业移动信息化竞争力
  11. java从入门到精通 答案_java从入门到精通练习题答案.doc
  12. 从零开始学_JavaScript_系列(13)——CSS2(新窗口打开,背景图片填充,底文字,小提示,CSS选择器整理)
  13. 牛顿插值法 matlab程序计算方法,(最新整理)牛顿插值法matlab程序
  14. k8s基本概念及使用
  15. 金沙滩51单片机数码管
  16. linux nodejs 采集器,前端工程师通过nodejs链接linux,并上传代码进行半自动化更新,省去ssh+ftp的链接工具-前端黑科技-SegmentFault思否...
  17. python自动下载高品质无损歌曲
  18. ThreadLocal的短板,我TTL来补
  19. 计算机显示器桌面变小,电脑显示器显示变小怎么办
  20. 英语四六级及考研语法(学习方法)

热门文章

  1. 勇敢开创新模式,娃哈哈奶茶大步往前
  2. python paramiko详解_python paramiko模块讲解
  3. 图片加载之Glide使用总结
  4. layui table中时间格式的问题
  5. 华为nova6se会搭载鸿蒙,华为nova6se支持无线充电吗 nova6全系标配40W超级快充
  6. nginx反向代理的三种方式
  7. flannel网络的安装和删除
  8. 轻轻松松学CSS:position
  9. 在你的设备被路由器管理员拉进了黑名单该怎么办
  10. 想要自制动漫视频?Python教你把普通视频变成动漫视频