参考实践:https://blog.youkuaiyun.com/LXWalaz1s1s/article/details/115841831
磁盘设备在linux中文件名
在Linux系统中,每个设备都被当成一个文件来对待” 举例来说,SATA接口的硬盘的文件名称即为/dev/sd[a-d],其中, 括号内的字母为a-d当中的任意一个,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd这四个文件的意思。
另外先提出来强调一下,在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内, 所以你会看到/dev/sda, /dev/sr0等等的文件名。
那么打印机与软盘呢?分别是/dev/lp0, /dev/fd0!下面列出几个常见的设备与其在Linux当中的文件名:
设备 | 设备在Linux内的文件名 |
---|---|
SCSI/SATA/USB硬盘机 | /dev/sd[a-p] |
USB闪存盘 | /dev/sd[a-p] (与SATA相同) |
VirtI/O界面 | /dev/vd[a-p] (用于虚拟机内) |
软盘机 | /dev/fd[0-7] |
打印机 | /dev/lp[0-2] (25针打印机) /dev/usb/lp[0-15] (USB 接口) |
鼠标 | /dev/input/mouse[0-15] (通用) /dev/psaux (PS/2界面) /dev/mouse (当前鼠标) |
CDROM/DVDROM | /dev/scd[0-1] (通用) /dev/sr[0-1] (通用,CentOS 较常见) /dev/cdrom (当前 CDROM) |
磁带机 | /dev/ht0 (IDE 界面) /dev/st0 (SATA/SCSI界面) /dev/tape (当前磁带) |
IDE硬盘机 | /dev/hd[a-d] (旧式系统才有) |
时至今日,由于 IDE 界面的磁盘机几乎已经被淘汰,太少见了!因此现在连 IDE 界面的磁盘文件名也都被仿真成 /dev/sd[a-p] 了!此外, 如果你的机器使用的是跟网际网络供应商 (ISP) 申请使用的云端机器,这时可能会得到的是虚拟机。为了加速,虚拟机内的磁盘是使用仿真器产生, 该仿真器产生的磁盘文件名为 /dev/vd[a-p] 系列的文件名!要注意!要注意!
提问:如果你的PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1, SATA5插槽上, 请问这三个磁盘在Linux中的设备文件名为何?
答:由于根据Linux核心侦测到磁盘的顺序来决定设备文件名,并非与实际插槽代号有关,因此设备的文件名如下:
- SATA1插槽上的文件名:/dev/sda
- SATA5插槽上的文件名:/dev/sdb
- USB磁盘(开机完成后才被系统捉到):/dev/sdc
MSDOS(MBR) 与 GPT 磁盘分区表(partition table)
分区表其实目前有两种格式,MBR和GPT
MBR(Master Boot Record)分区格式
早期磁盘第一个扇区(521bytes)里面包含重要的信息MBR(Master Boot Record),其中446 bytes,安装开机管理程序的地方(这里需要去理解开机流程中的 BIOS 与 UEFI 开机检测程序);剩下的64bytes记录硬盘分区的数据,即分区表,这里的位置只够记录下四个分区。
以下的四个分区我们并不能各个区分是主分区还是扩展分区,两种都有可能;
P1:/dev/sda1
P2:/dev/sda2
P3:/dev/sda3
P4:/dev/sda4
既然第一个扇区的分区表只能记录四个分区的数据,那自然就想到用额外的扇区来 记录分区信息,这就是扩展分区的由来。
例题,看如下分区名称,为啥缺少了 /dev/sda3、 /dev/sda4呢,原因就是前面四个号都是预留给主分区和扩展分区的,逻辑分区只能从序号5开始;
P1:/dev/sda1 (主分区)
P2:/dev/sda2(扩展分区)
P3:/dev/sda5(逻辑分区)
P4:/dev/sda6(逻辑分区)
P5:/dev/sda7(逻辑分区)
主分区、扩展分区、逻辑分区的关系及区分如下;
主分区( primary)P
1)系统中必须要存在的分区,系统盘选择主分区安装
2)数字编号只能是1-4.sda1、sda2、sda3、sda4
3)主分区最多四个,最少一个。
4)能被单独格式化
扩展分区( extend)E
1)相当于一个独立的小磁盘。独立的分区表,不能独立存在。
2)有独立的分区表。
3)不能独立存在,即不能直接存放数据。必须结合逻辑分区,在扩展分区上建立逻辑分区才能存放数据
4)占用主分区的编号,最少为0个,最多为1个。(主分区+扩展分区之和最多4个)
6)不能被格式化
逻辑分区(1ogic)L
1)数字编号只能是从5开始
2)存放于扩展分区之上
3)存放任意普通数据
4)能被单独格式化
5)两个独立的逻辑分区可以支持合并成一个新的逻辑分区
6)一个扩展分区中可以有多个逻辑分区
磁盘分区方式
1)1~4个主分区
2)扩展分区至多能有一个,且 2 ≤ 扩展分区+主分区≤ 4
例题:学习以上内容后,聊聊分区策略,举例如下;博主有一块硬盘,如果我想要得到6个分区,用MBR分区格式该怎么分配;
答:首先主分区,扩展分区只能有4个,不够呀,那就需要用到扩展分区,可以分配为,P+P+P+E(E内包含3个逻辑分区L)即,P+P+P+E(L+L+L);当然也可以P+E(L+L+L+L+L) ,可以根据个人想法来实现即可
MBR分区的原理清晰后,其不足的地方也暴露的无疑,因为分区表的容量16bytes有限,始终存在以下不足:操作系统无法抓取2.2T以上的磁盘容量,个人PC可能目前来说够,但是服务器已经无法满足了;MBR仅有一块分区表,无法实现高可用,一旦被损坏,很难再救援恢复;MBR内存放的开机管理程序也只有446bytes,也是无法容纳更多的开机程序代码的;
GPT(GUID Partition Table)分区格式
基本上GPT弥补了MBR的不足,但是GPT和MBR只是分区格式方法不同。
GPT将磁盘划分为一块块的逻辑区块地址(Logical Block Address,简称LBA) 来处理,每个LBA预设计为512bytes,即一个扇区的大小;同时改进MBR之用一块扇区来标识分区表的弊端,GPT使用了前后各34个LBA来标识分区表信息(最后的34各区可以理解为备份,达到高可用),如图6.3;
LBA的标识是从0开始的,LBA0-34共35块,这里分别阐述下其含义;
LBA0 :包含两部分,一部分是类似MBR的446bytes,存储开机管理程序,第二部分则是存储一个特殊的标记,标识该磁盘为GPT格式,而看不懂GPT分区的程序则无法操作该磁盘,起到保护作用,放心,目前基本的管理程序都能识别GPT格式,所以该LBA块实际上与分区信息并无直接关联,这就是为啥不算入34LBA的原因;
LBA1 :GPT的表头,记录分区本身的位置与大小,同时记录分区在备份中最后34个LBA中的位置,方便恢复;
LBA2-34:共32块LBA,每块LBA记录4笔分区表,共支持4*32=128笔分区(即,GPT可以做128个分区,他的分区取消的扩展分区的概念,只剩下primary和logic);而每个LBA默认为512bytes,则每笔记录用到512/4=128bytes,每笔记录拿出64bytes来记录开始、结束的扇区号码,因此对一个单一分区槽而言,支持的最大容量为
两种表格分区方式的具体实践
在主机上将一个磁盘分析6个分区,案例步骤参考:https://blog.youkuaiyun.com/LXWalaz1s1s/article/details/115841831