前言
环境:centos7.9
我们知道,计算机使用硬盘存储数据,硬盘是无关于计算机操作系统的,即不管你安装Windows还是Linux也好,硬盘硬盘的分区方式、接口类型都是与你安装的操作系统无关的。
本篇我们来讲解一些关于硬盘的基础知识,如硬盘的分区方式、硬盘的接口联系,以及Linux操作系统下硬盘的命名规则等。
关于硬盘分区这里有一篇更好的文章:https://www.eassos.cn/jiao-cheng/ying-pan/mbr-vs-gpt.php
磁盘和硬盘的区别是什么
之前一直不太理解磁盘和硬盘是什么含义,一直绝对硬盘就是磁盘,反正就是计算机存储数据一个盘,百度了一下得知:硬盘是磁盘中的一种,软盘也是磁盘。硬盘和磁盘的区别为:硬盘属于磁盘的一种,硬盘由磁盘组装而成。圆形的磁性盘片被装在一个盒子里密封起来,即可称之为硬盘。这样做的目的是为了防止磁盘表面划伤而导致数据丢失。硬盘内部结构由固定面板、控制电路板、盘头组件、接口及附件等极大部分组成,而盘头组件是构成硬盘的核心,封装在硬盘的净化腔体内,包括浮动磁头组件、磁头驱动机构、盘片及主轴驱动机构、前置读写控制电路等。
反正,我觉得没必要去纠结这两个名词,下文提到的磁盘硬盘大家可以联想到是一个意思就行了。
Linux系统磁盘分区相关知识
1、物理硬盘是不能被直接使用的,要在该硬盘上划分出分区后,才能够使用。
2、磁盘分区有主分区、扩展分区和逻辑分区之分,一块磁盘最多可以有4个主分区,其中一个主分区的位置可以用一个扩展分区替换,在这个扩展分区内可以划分多个逻辑分区;
3、如果规划的分区数量超过4个,则分区组合为3primary+1extend或2p+1e或1p+1e;
4、一块磁盘最多只能有一个扩展分区,扩展分区不能直接使用,必须在扩展分区上划分逻辑分区,然后格式化创建文件系统,之后才能存取数据。
硬盘的分区方式
我们最常见的硬盘的分区方式有两种:MBR、GPT。
硬盘分区方式之MBR分区
MBR的全称是Master Boot Record,即主引导记录,它是存在于硬盘上的第1个扇区,而且这是一个特殊的启动扇区,这个扇区包含了已安装的操作系统的一些相关信息,并用一段代码来启动操作系统,这一小段代码就是Bootloader,我们称bootloader为主引导程序;
我们知道一个扇区占512字节,下面我们来看下这个硬盘上的第1个扇区都保存了哪些信息:
1、bootloader主引导程序,446字节,一个扇区512字节,现在已经有446字节被引导程序占用了,还剩66字节了;
2、分区表(Disk Partition Table),分区表信息,占66字节。
分区表保存了硬盘的分区信息,比如这块硬盘有多少个分区等消息都保存在分区表中,操作系统通过读取分区表内的信息,就能够知道该硬盘的分区信息了;
每个分区需要占用16字节大小,保存有文件系统标识,起始柱面,磁头号,扇区号,起始扇区位置(4字节),分区总扇区数目(4字节)等内容(66/16=4,这也是为什么MBR方案最多分4个主分区的原因);
分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内划分一个或多个逻辑分区后才能使用;
逻辑分区的分区信息是保存在扩展分区内而不是保存在分区表中的,这样就可以突破MBR分区只能保存4个分区的限制了。
所以,采用MBR分区方案有如下特点:
1、最多只能分4个分区,最多只能有1个扩展分区,可以没有扩展分区;
2、所以MBR分区只能这样分区:4个都是主分区或者3个主分区+1个扩展分区,然后在这个扩展分区里面再分n个逻辑分区;
2、操作系统只能安装在主分区上,所以必须保证至少要有1个主分区;
3、扩展分区必须格式化为逻辑分区才能使用,一个扩展分区可以格式化为n个逻辑分区;
4、若是MBR分区的其硬盘容量最大只能支持2TB,但兼容性好,Linux下使用fdisk工具对2TB的硬盘进行分区,因为超过2TB的硬盘,fdisk无法分区的 。
MBR分区小结
1、一个扇区占512字节,而MBR分区方案使用硬盘的第一个物理扇区中的64个字节作为分区表的空间来保存硬盘分区信息,每个分区的信息要占16个字节。所以,MBR分区表最多只能保存4个分区的分区信息。
2、MBR分区方案中,有三种类型的分区:主分区、扩展分区和逻辑分区。扩展分区与逻辑分区是为了突破分区表中只能保存4个分区的限制而出现的。
3、MBR分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内划分一个或多个逻辑分区后才能使用。逻辑分区的分区信息保存在扩展分区内而不是保存在MBR分区表内,这样,就可以突破MBR分区表只能保存4个分区的限制。
4、16个字节的分区信息保存有分区活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、起始扇区位置(4个字节)、分区总扇区数目(4个字节)等内容。这里最重要的是:分区的起始扇区位置与分区的总扇区数,都是用4个字节表示的。
5、一般每个扇区的容量是512字节,4个字节的扇区能表示的最大容量是2TB,由4可知,在MBR分区表中,分区的起始位置不能大于2TB,分区的最大容量,也不能大于2TB。所以,对2TB以上容量的物理硬盘,不适合使用MBR分区方案。
如果你一个普通用户,对技术细节不是那么感兴趣,那其实关于MBR分区方案你需要记住的只有两点:
1、本来MBR分区表只能保存四个分区的信息,但通过扩展分区与逻辑分区的使用,MBR突破了这个限制。
2、由于MBR分区表中,表示地址的参数是只有4个字节,所以导致MBR分区方案中,分区的起始位置不能大于2TB,分区的最大容量,也不能大于2TB。所以,对2TB以上容量的物理硬盘,不适合使用MBR分区方案。
硬盘分区方式之GTP分区
1、支持无限多个主分区(但操作系统可能会限制,如Windows系统最多128个分区);
2、单个分区最大支持18EB的容量(1EB=1024PB,1PB=1024TB);
3、Windows7 64位以后支持gtp
常用硬盘的接口类型、IDE、SATA、SCSI、SAS
IDE硬盘接口,我们称之为并口;IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,,是用传统的 40-pin 并口数据线连接主板与硬盘的,接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。其接口如下图所示:
SATA接口,我们称之为串口;SATA接口类型,其英文名称为:Serial Advanced Technology Attachment。使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。其接口如下图所示:
SCSI接口类型
其英文名称为:Small Computer System Interface。SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。其特点为:传输速率高、读写性能好、可连接多个设备、可支持热插拔,但是价格相对来说比较贵。
SAS接口类型
其英文名称为:Serial Attached SCSI。其可以向下兼容SATA。具体来说,二者的兼容性主要体现在物理层和协议层的兼容。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在SAS的环境中,从接口标准上而言,SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制;在协议层,SAS由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。其中串行SCSI协议(SSP)用于传输SCSI命令;SCSI管理协议(SMP)用于对连接设备的维护和管理;SATA通道协议(STP)用于SAS和SATA之间数据的传输。因此在这3种协议的配合下,SAS可以和SATA以及部分SCSI设备无缝结合。其传输速率比SATA要快很多。具体如下展示
Linux磁盘分区命名及编号方式
在Linux中,一切皆文件,而设备其实是系统中的一种特殊文件,这些特殊文件存放在/dev/目录下,不同的设备对应不同的名称,如下:
1、系统的第一块IDE接口的硬盘称为 /dev/hda;
2、系统的第二块IDE接口的硬盘称为 /dev/hdb;
3、系统的第一块SCSI接口的硬盘称为 /dev/sda;
4、系统的第二块SATA接口的硬盘称为 /dev/sdb;
一块硬盘可以划分多个不同的分区,为了表示不同的分区,通常会用数字进行编号,如下:
1、系统的第一块IDE接口的硬盘的第1个分区称为 /dev/hda1;
2、系统的第一块IDE接口的硬盘的第5个分区称为 /dev/hda5;
3、系统的第二块SCSI接口的硬盘的第1个分区称为 /dev/sdb1;
4、系统的第二块SATA接口的硬盘的第5个分区称为 /dev/sdb5;
需要注意的是:在对分区编号时,数字1-4只能留给主分区或扩展分区使用,逻辑分区(在扩展分区基础上建立)编号只能从编号5开始。
从Cent7开始,不管是IDE接口还是SCSI接口还是SATA接口,其命名一致为sdx开头,如:/dev/sda2,其含义表示如下:
s=硬盘接口类型(sata/scsi),d=disk(硬盘),a=第1块硬盘(b为第二块,以此类推),2=表示该硬盘的第2个分区
在对Linux系统设置了分区之后,还要在分区上创建文件系统才能安装系统,这个在安装时由系统自行完成创建。
买一块硬盘要考虑的因素
1、寻道时间:是指硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值,它一定程度上体现硬盘读取数据的能力,是影响硬盘内部数据传输率的重要参数,单位为毫秒(ms)。
2、硬盘的转速:转速(Rotationl Speed),是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。转速的快慢是标示硬盘档次的重要参数之一,它是决定硬盘内部传输率的关键因素之一,在很大程度上直接影响到硬盘的速度。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions Per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。
3、硬盘接口类型:磁头读取到数据后,通过数据线进行传输,所以一个好的硬盘接口类型也能大大提高数据传输速率。
Linux对分区的基本要求
1、至少要有一个根/分区,用来存放系统文件及程序,其大小至少在5GB以上;
2、要有一个swap交换分区,它的作用相当于windows里的虚拟内存,swap分区的大小一般为物理内存容量的1.5倍(内容<8GB),但当系统物理内存大于8GB时,swap分区大小配置为8GB -16GB即可,太大无用,浪费磁盘空间;swap交换分区并不是必须的,但大多数情况下应该设置。
3、/boot 分区,这时Linux系统引导分区,用于存放系统引导文件,如Linux内核等,所有的文件总大小一般只有几十MB,并且以后也不会增大太多,因此boot分区可以是设置为100-200MB,这个分区也不是必须的。
4、/home分区,如果是多个用户的话,为了保护用户的数据,给/home单独一个分区;
5、/usr分区,用来放户安装的软件;
分区和挂载点的概念
我们知道,一块硬盘想要使用,必须先进行分区,分区完之后就要进行格式化成一个指定类型的文件系统,这样才能真正使用了,就能存放数据了,这是windows中的概念,在Linux系统中优点区别,Linux中也要对一块新的硬盘进行分区,分区的时候需要把分区与Linux的某个目录进行关联,我们称之为挂载,被挂载的目录称之为挂载点,比如,分了一个boot分区,把这个分区挂载到boot目录下,这样boot目录就能使用了
企业生产场景中Linux分区方案
方案1:针对网站集群架构中的某个节点服务器分区,该服务器上的数据有多份(其他节点也有)且数据不太重要,建议的分区方案如下:
/boot 设置为100-200MB;
swap 设置为物理内存的1.5倍,但当物理内存大于或等于8GB时,配置为8-16GB即可;
/ 剩余硬盘空间都分给根分区(/usr、/home、/var等分区都和/ 根分区共用一个分区,这相当于在windows中只有一个C盘,所有数据和系统文件当放在一起)
方案2:针对数据库及存储角色的服务器分区,该服务器业务有大量重要的数据,建议分区方案如下:
/boot 设置为100-200MB;
swap 设置为物理内存的1.5倍,但当物理内存大于或等于8GB时,配置为8-16GB即可;
/ 大小设置为50-200GB,只存放系统相关文件,不存放网站等业务数据;
/data 剩余硬盘空间大小,存放数据库及网页业务等重要数据资源,当然data的名称也可以换成别的名字;
本方案其实是把重要数据单独分区,便于备份和管理。
方案3:针对大网站或门户级别企业的服务器分区,建议如下:
/boot 设置为100-200MB;
swap 设置为物理内存的1.5倍,但当物理内存大于或等于8GB时,配置为8-16GB即可;
/ 大小设置为50-200GB,只存放系统相关文件,不存放网站等业务数据;
剩余硬盘空间大小保留,不再进行分区,将来分配给不同部门使用,由他们根据自己的需求再划分。
这种分区方案更灵活,比较合适业务线较多、需求不明确的大企业使用。
除了以上建议的三种分区/boot、swap、/ 根,还可以有额外的分区,如 /home分区、/usr分区、/var分区,为什么要使用这些创建这些分区呢,因为,即使不创建这些额外的分区,Linux安装完成后,该有的home目录、usr目录、var目录还是会有,只不过,这些目录是挂载在/根分区下的,这样问题就来了,当根分区坏了的时候要重装系统了怎么办,就因为home目录是挂载在根分区下的,你想要的安装系统就必须安装在根分区,那么所有的家目录里的用户数据就会丢失,所以,分一个home分区并挂载到home目录下是很有必要的做法,同理/usr分区、/var分区也是同样的道理。
挂载点
挂载点,就是Linux下访问磁盘分区的入口,即如果要往/boot分区(/dev/sda1)写入数据,就必须要通过这个分区的挂载点/boot入口来写入数据,也可以理解为,一个分区创建好后,想要使用这个分区就必须格式化它并创建文件系统,然后把这个分区与一个目录进行挂联,这种管联就叫做挂载,这个目录就叫做挂载点,以后直接往这个挂载点目录写入数据即可。
boot分区大小
以上说的boot分区大小在100-200M之间,但是我们在安装centos 7.9操作系统的时候,系统自动分区默认会给1024M,为什么给这么大呢,我们来看看官网怎么说的:
RHEL 7还创建了500 MiB / boot分区,但是在7.3中已更改为1024 MiB,因为发行说明指出:
在以前的Red Hat Enterprise Linux 7版本中,/ boot分区的默认大小设置为500 MB。这可能导致在具有多个内核和附加软件包(例如,安装的kernel-debuginfo)的系统上出现问题。在这种情况下,/ boot分区可能已满或几乎已满,从而阻止了系统升级,并且需要手动清理以释放更多空间。
在Red Hat Enterprise Linux 7.3中,/ boot分区的默认大小增加到1 GB,并且在新安装的系统上不再出现这些问题。请注意,使用先前版本进行的安装将不会调整其/ boot分区的大小,并且可能仍需要手动清理才能升级。
所以,boot分区给多大的空间,个人觉得可以根据自己的磁盘大小已经结合官网的建议来分配大小,如果磁盘小的分配300M-500M,如果磁盘大的,分配1024M也不为过。