专栏首页奕知伴解Linux 磁盘划分和分区介绍

Linux 磁盘划分和分区介绍

PC端建议访问

https://www.liuluanyi.cn

或点击底部原文阅读


物理设备的命名规则

在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。Linux系统中常见的硬件设备的文件名称如下图:

由于现在的IDE设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也很有讲究:

主分区或扩展分区的编号从1开始,到4结束; 逻辑分区从编号5开始。

国内很多Linux培训讲师以及很多知名Linux图书在讲到设备和分区名称时,总会讲错两个知识点。第一个知识点是设备名称的理解错误。很多培训讲师和Linux技术图书中会提到,比如/dev/sda表示主板上第一个插槽上的存储设备,学员或读者在实践操作的时候会发现果然如此,因此也就对这条理论知识更加深信不疑。但真相不是这样的,/dev目录中sda设备之所以是a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用iSCSI网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb这个设备就是这个道理。

第二个知识点是对分区名称的理解错误。很多Linux培训讲师会告诉学员,分区的编号代表分区的个数。比如sda3表示这是设备上的第三个分区,而学员在做实验的时候确实也会得出这样的结果,但是这个理论知识是错误的,因为分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此sda3只能表示是编号为3的分区,而不能判断sda设备上已经存在了3个分区。

下面再来分析一下/dev/sda5这个设备文件名称包含哪些信息 :

首先,/dev/目录中保存的应当是硬件设备文件;其次,sd表示是存储设备;然后,a表示系统中同类接口中第一个被识别到的设备,最后,5表示这个设备是一个逻辑分区。一言以蔽之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。考虑到我们的很多读者完全没有Linux基础,不太容易理解前面所说的主分区、扩展分区和逻辑分区的概念,因此接下来简单科普一下硬盘相关的知识。

正是因为计算机有了硬盘设备,我们才可以在玩游戏的过程中或游戏通关之后随时存档,而不用每次重头开始。硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。第一个扇区中的数据信息如下图:

现在,问题来了—第一个扇区最多只能创建出4个分区?于是为了解决分区个数不够的问题,可以将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针—一个指向另外一个分区的指针。这样一来,用户一般会选择使用3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4个)的需求。当然,就目前来讲大家只要明白为什么主分区不能超过4个就足够了。主分区、扩展分区、逻辑分区可以像下图那样来规划。

所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。

本文分享自微信公众号 - 奕知伴解(yzbjchat)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分享8点超级有用的Python编程建议

    我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,现在在这里分享一下给...

    Sam Gor
  • 简化 Pod 故障诊断: kubectl-debug 介绍

    容器技术的一个最佳实践是构建尽可能精简的容器镜像。但这一实践却会给排查问题带来麻烦:精简后的容器中普遍缺失常用的排障工具,部分容器里甚至没有 shell (比如...

    DevOps时代
  • 海思屏幕HAL代码解析

    显示屏幕(LCD)模块提供屏幕相关功能接口,调用者为上层应用模块(含 init、状态机、ui),上下文依赖关系,如图 3-7 所示。

    233333
  • Linux应急响应(四):盖茨木马

    Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件...

    Bypass
  • Linux日志安全分析技巧

    本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。

    Bypass
  • Linux最常用命令!简单易学,能解决95%以上的问题!

    r 可读权限,w可写权限,x可执行权限(也可以用二进制表示 111 110 100 --> 764)

    lyb-geek
  • linux 通过wol远程开机【转】

    转自:http://yangbajing.blog.chinaunix.net/uid-10480699-id-5179860.html

    用户3033338
  • Linux应急响应(三):挖矿病毒

    随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式。新的挖矿攻击展现出了类似蠕虫的行为,并结合...

    Bypass
  • 译 | .NET Core 3.0 对诊断的改进

    在 .NET Core 3.0 中,我们将引入一套工具,这些工具利用 .NET 运行时中的新功能,使诊断和解决性能问题变得更加容易。

    Edi Wang
  • 【Rust日报】 2019-05-08:Rust并发的实践研究

    Cloudsmith是Puppet Labs旗下的DevOps平台,目前支持Cargo。你可以把Cloudsmith作为crates.io之外的私人regist...

    MikeLoveRust

扫码关注云+社区

领取腾讯云代金券