Linux中设备的文件名
linux秉持着万物皆是文件的思想,各类硬件设备也被当成文件对待,以下是常用设备的文件名
中括号 [ ] 表示设备的序列名,比如/dev/sd[a-p],就表示有多个同类型的设备,他们的文件名分别是 /dev/sda, /dev/sdb, ...... .dev/sdp
总之,我们可以先理解为,访问这些文件就等于访问对应的设备了
磁盘组成
要想了解磁盘分区,我们得先了解磁盘的组成
物理结构:
- 盘片:就是上图中左边的圆盘,就是我们的盘片了
- 主轴马达:上图中右边的侧面图,每一个长方形就是一个盘片(侧面),然后通过一个像棍子一样的东西串在一起,这个棍子就是主轴马达了,盘片会跟着主轴旋转
- 机械臂:上图中右边的侧面图,蓝色的部分就是机械臂了,就像个夹子一样,可以进行伸缩运动,简单来说就是靠近主轴和远离主轴
- 磁头:上图中右边的侧面图,红色的部分就是磁头了,相当与是位于机械臂的末端,像是夹住盘片一样,我们就是通过这个来访问磁盘的
逻辑结构:
- 磁道:上图中左边的俯视图,黄色的部分就是磁道了,它就是一个圆圈,当然盘片不止一个磁道,这里黄色的部分是最外圈磁道
- 扇区:上图中左边的俯视图,绿色的部分就是扇区了,简单来说就是一个磁道被划分得到的就是扇区啦
- 柱面:这个立体图不好画,柱面就是多个盘片的同一位置的磁道的组合就是柱面了,举个例子就是我们用过的卷纸,卷纸的一圈其实就像是一个柱面,或者说卷纸用完后留下的那个轴就像是一个柱面
磁盘连接的方式与设备名的关系
由于SATA/USB/SAS等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式(参考上图的设备名)
所以SATA/USB接口的磁盘根本就没有一定的顺序,那如何决定他的设备文件名呢?这个时候就得要根据 Linux核心侦测到磁盘的顺序 了
简单来说就是,我们找到谁谁的名字顺序就靠前,这个与实际插槽的代号没关系
这里是个例题
磁盘分区
磁盘分区有两种不同的格式
MSDOS(MBR)分区表格式
这种格式下,磁盘的第一个扇区很重要,存放着 开机管理程序纪录区与分区表,通常是512字节
- 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446Bytes
- 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes
由于分区表所在区块仅有64 Bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的柱面号码
举个例子,我们将磁盘分成4个分区,如下所示
假设磁盘的设备名是 /dev/sda1, 那么这些分区名就是 /dev/sda[1-4]
书里写得很好,我就直接照搬了
这里说一下主要分区和延伸分区,主要分区就是以为着整个就是一个分区,延伸分区是利用额外的扇区来存储分区记录,简单来说,就是延伸分区可以进一步分为逻辑扇区,数量不限,这样我们实际的分区数量就突破4个了
如下是一个例子,我们可以看到总共有1个主要分区和1个延伸分区,延伸分区又细分为5个逻辑扇区,而这些逻辑扇区的分区记录就是在延伸分区使用的那个扇区中(图中的小黑块)
那这些分区的命名又是怎样的呢:
我们可以看到逻辑分区的数字编号是从5开始,这是因为前4个编号要留给主要分区或延伸分区,逻辑分区是无法使用的
这里是关于MBR分区的特性的总结:
MBR磁盘空间整合
磁盘空间整合,只是对于主分区和逻辑分区而言,延伸分区无法被格式化,也就无法存储数据
- 只需要记住同类型的可以直接整合(合并)---相当于删掉原来的分区,然后新增一个分区,这样就能达到类似合并的效果了
- 不同类型的,其实也就是逻辑分区和主分区的合并,这时候只能删掉原来的延伸分区(所有的逻辑分区都会被删除),然后再新建分区(总体的思路还是从不同类型转换到同类型)
MBR分区的限制
GUID partition table, GPT 磁盘分区表
LBA 逻辑区块位址
过去默认的扇区大小是512字节,为了相容所有的磁盘,因此在扇区的定义上,大多使用 LBA来处理
GPT 将磁盘所有区块以此LBA(默认为 512Bytes喔!)来规划,而第一个 LBA 称为LBA0(从 0 开始编号)
GPT格式
与MBR仅使用第一个512Bytes区块来纪录不同,GPT使用了 34个LBA区块 来纪录分区信息!GPT除了前面 34个LBA之外,整个磁盘的最后33个LBA也拿来作为另一个备份(34个区块中,只有后33块是关于分区记录的)
如下图所示,GPT分区表的结构
- LBA0:MBR 相容区块,基本与MBR模式下的第一个扇区一致,开机管理程序仍是446字节,不同的是原本的分区表的纪录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意
- LBA1:GPT 表头纪录,这个部份纪录了分区表本身(包含备份)的位置与大小, 以及放置了分区表的检验机制码(CRC32)
- LBA2-33:实际纪录分区信息处,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 4x32=128 笔分区纪录
GPT分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在,当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用喔
挂载
目录树结构
目录树架构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构
比如我们要访问 mydata 文件,就要通过 /home/dmtsai/mydata 这个路径
Linux内的所有数据都是以文件的形态来呈现的,它使用的也是目录树架构
但我们的文件数据都是放在磁盘分区中的,如何结合目录树的架构与磁盘内的数据,这个就是挂载的作用所在
文件系统与目录树的关系(挂载)
- 挂载:利用一个目录当成进入点,将磁盘分区的数据放置在该目录下;也就是说,进入该目录就可以读取该分区的意思
- 挂载点:那个进入点的目录我们称为“挂载点”
判断文件所在分区
假设有以上这个例子,分区1被挂载到 根目录 下,分区2被挂载到 home目录 下
要判断文件所在的分区,通过 反向追踪 即可,也就是说,从当前文件往上找进入点,谁先被找到,文件就在这个进入点所对应的分区下
结合我们给的例子,当我想要知道/home/vbird/test这个文件在哪个partition时,由 test-->vbird-->home-->/,我们先找到 home目录 这个进入点,所以这个文件在分区2中
标签:分区,扇区,分区表,Linux,GPT,磁盘,磁盘分区 From: https://www.cnblogs.com/winter-z/p/18369318