标签(空格分隔): linux
linux所有的东西都是以文件的形式去存储的。接下来我们来认识下linux中设备锁对应的文件名称
各设备在linux中的命名
设备 | linux中的文件名称 |
---|---|
SATA接口的硬盘 | /dev/sd[a-d] |
所有的硬件设备都在/dev里面下图是截图:
磁盘分区
系统安装肯定是在磁盘上的,然而磁盘也是需要分区的比如C,D,E盘,那linux分区的文件名又是什么? 如何进行磁盘分区?磁盘分区有哪些限制?目前的 BIOS 与 UEFI 分别是啥?MSDOS 与 GPT 又是啥?我们带着疑问来瞅瞅。
首先我们来从磁盘的角度来分析下,1.现有的磁盘一般是SATA/SAS接口其中主流是SATA,那么人家设备名叫什么,我们根据上面的截图知道人家叫/dev/sd[a-d].2.那磁盘有好几个怎么命名,比如有两个SATA接口的磁盘,一个usb的磁盘,那是按照内核侦测到磁盘的顺序,比如SATA1,SATA5,USE1那么人家就应该这么对照先/dev/sda /dev/sdb /dev/sdc这个顺序下来的。
3.如果是虚拟机呢,虚拟机人家的命名是/dev/vda-p。
磁盘的分区角度:讲完了磁盘我们讲讲磁盘的分区,为啥要分区,分区是根据什么来分的,又有哪两种形式。分区方式对应的涉及点。主引导记录,开机管理程序,分区表。
我们来看下实际上所有的分区都是以磁盘的来规划的,那么磁盘呢它的结构我们知道,就以一个盘来说,有磁头,盘面,扇区,其中在同一个距离中心点的扇区组成磁道,而存在多磁盘的时候,每个盘同一个磁道则在立体角度组成柱面,以现在主流的家用笔记本来说。
磁盘分区的话有两种形式:一般家用是以MBR(主引导记录),第一个扇区存放的就是这玩意,但是随着硬盘的扩大,现在的磁盘大小有的甚至超过2TB(MRB就不好使了),所以后来又出现了GPT(GUID partition table)分区表的形式。
MBR与GPT:MBR是以柱面作为分区的最小单位,而GPT甚至诞生了64bit的分区表,所以人家可以以扇区作为分区单位。
MBR的分区格式与限制:
格式:第一扇区存放MBR,包括主引导管理程序(用于开机管理程序)446Byte,还有就是传统的分区表64Byte。(可分4个区其中拓展分区最多一个)
限制:1.分区表总容量小才64B,受分区表的大小限制所以只能划分4个主partition,但可以通过拓展分区来进行。原理就是在其他分区的前几个扇区做分区记录(逻辑分区)。
MRB分区只有四个,延伸分区最多一个,可在延伸分区上做逻辑分区,延伸分区本身不能做格式化,只能记录。而且从5开始。
举个例子:现有一个磁盘,先分成6个分区,请问我们可以怎么分?在linux上怎么表示
第一种:P(主分区)+P+P+E,因为6个分区,而分区数量最多为4个,所以只能在拓展分区上做手脚,E分为三个分区。在硬盘上的标识就是 /dev/sda1,/dev/sda2,/dev/sda3,/dev/sda5,/dev/sda6,/dev/sda7 (4为拓展分区本身仅提供逻辑分区使用)
第二种:P+E
2.1)分区表MRB在第一扇区,如果第一扇区损坏则难以修复。
2)开启启动管理程序才456B所以人家能存放的程序码不多。
3)每条记录才16B,所以人家在分区上能做的记录也不多,所以才有2.2TB的硬盘人家木法使用。
GPT
随着现行技术的发展的磁盘越来越大,2.2T可能对于有些计算机或者说服务端来说是远远不够大。虽然可以利用磁盘阵列可以组装,或者利用分区机制,但是可能会分上几十个分区,实在是太麻烦,所以才有了GPT的出现。
扇区有512Bytes也有4KB的大小,GPT统一用LBA(logical block address)逻辑块位址,来划分。每个逻辑块为了兼容统一用512Byte作为默认大小。
GPT的划分是前面34,后面33用来备份。
其中LBA0:存放MBR其中446Byte是第一阶段开机管理程序,剩下的是一个GPT的标识(兼容原先的分区表的位置),能识别GPT分区表的才能识别。
LBA1:存放了分区表位置和大小,还有就是CRC32检测码(检查是否损坏)。
LBA2-LBA33:32个分区存放分区具体分区表,其中一个记录用到128Byte,一个LBA可以记录4比分区记录,每条记录记录起始/结束位置 用了64bit(扇区号码),所以对于单一分区来说,最大的容量限制为 264*512Byte(每个LBA都有一个起始结束位置)=233TB,人家总共能分4*32=128个区。
最后的33个区就是前面的记录备份了。具体结构如下图所示。
而并不是所有的操作系统与硬件都能识别GPT分区,这个需要开机的检测程序有关,开机检测程序又分为BIOS UEFI两种。另外开机管理程序,grub并不认识GPT,需要grub2才能识别。