一、磁盘连接方式与设备文件名的关系

计算机常见的磁盘接口有两种,分别是IDE与SATA接口,目前主流接口已经是SATA接口了。

一个IDE扁平电缆可以连接两个IDE设备,通常主机又都会提供两个IDE接口,因此最多可以接到四个IDE设备。也就是说,如果已经有了一个光盘设备了,那么最多就只能再接三块IDE接口的磁盘。这两个IDE接口通常被称为IDE1(primary)和IDE2(secondary),而每条扁平电缆上的IDE设备可以被区分为Master(主设备)和Slave(从设备)。

IDE/Jumper

Master

Slave

IDE1(Primary)

/dev/hda

/dev/hdb

IDE2(Secondary)

/dev/hdc

/dev/hdd

再说SATA接口,由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。但是与IDE接口不同的是,SATA/USB接口的磁盘根本就没有一定的顺序,要根据LInux内核检测到的磁盘的顺序来决定它的设备文件名。例如:

如果PC上面有两个SATA磁盘以及一个USB磁盘,而主板上有留个SATA插槽。这两个SATA磁盘分别安插在主板上的SATA1和SATA5插槽上。由于是使用检测到的顺序来决定设备文件名,并非与实际插槽代号有关,因此设别文件名如下:

SATA1插槽上的文件名:/dev/sda

SATA5插槽上的文件名:/dev/sdb

USB磁盘(开机完成后才被系统识别):/dev/sdc 二、磁盘的第一个扇区

盘片上可细分出扇区与柱面两种单位,其中每个扇区的大小为512bytes。磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要信息,分别是

主引导分区(Master Boot Record,MBR):可以安装引导假造程序的地方,有446bytes.

分区表(partition table):记录整块磁盘分区的状态,有64bytes. MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道程序放在那里并且该如何进行开机。

三、磁盘分区表

在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启示与结束。假设硬盘设备文件名为/dev/hda,那么这这个分区在linux系统中的设备文件名分别为:/dev/hda1,/dev/hda2,/dev/hda3,/dev/hda4.当操作系统为Windows时,那么第一个到第四个分区的代号应该就是C,D,E,F。由于分区表就只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主(Primary)或扩展(Extend)分区。

所谓的“分区”只是针对哪个64bytes的分区表进行设置而已

硬盘默认的分区表仅能写入四组分区信息

这四组分区信息称为主或扩展分区

分区的最小单位为柱面 分区表只有记录四组数据的空间,并不意味着一块磁盘最多只能分区出四个分区。可以利用额外的扇区来记录更多的分区信息。扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。hda1-hda4前面四个号码都是保留给主或扩展分区用的,所以逻辑分区的设备名称号就只能从5号开始。

主分区和扩展分区最多可以有四个(硬盘限制)

扩展分区最多只能有一个(操作系统限制)

逻辑分区是由扩展分区持续切割出来的分区

能够被格式化后作为数据访问的分区为主分区与逻辑分区。扩展分区无法被格式化

逻辑分区的数量由操作系统决定。Linux系统中,IDE硬盘做多有59个逻辑分区(5号-63号),SATA硬盘则有11个逻辑分区(5号-15号) 四、开机流程与主引导分区(MBR)

开机涉及到CMOS与BIOS,CMOS是记录各项硬件且嵌入在主板上面的存储器,BIOS则是一个写入到主板的韧体(韧体就是写入到硬件上的一个软件程序)。BIOS就是在开机的时候计算机系统会主动执行的第一个程序。BIOS会去分析计算机里面有哪些存储设备,以硬盘为例,BIOS会一句用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446bytes的硬盘容量里面会放置最近本的引导加载程序,此后就是MBR内的引导加载程序的工作了。

引导加载程序的目的是加载内核文件,由于引导加载程序是操作系统在安装的时候所提供的,所以它会识别硬盘里的文件系统格式,因此就能够读取内核文件,再接下来就是内核文件的工作。

BIOS->MBR->引导加载程序(Boot loader)->内核文件。这就是开机流程了。

BIOS和MBR都是硬件本身会支持的功能,Boot loader则是操作系统安装在MBR上面的一套软件,MBR一共才446bytes,所以boot loader非常小,它的主要任务是:

提供菜单:用户可以选择不同的开机选项,这也是多重引导的功能

载入内核文件:直接指向可开机的程序区段来开始操作系统

转交其他loader:将引导加载功能转交给其他loader负责 引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区(boot sector)。多系统的根据可以说就在这里。如果想要安装多重引导,最好先安装windows再安装linux。因为:

Linux在安装的时候,可以选择将引导家在程序安装在MBR或个别分区的启动扇区,而且Linux的loader可以手动设置菜单,所以可以再Linux的boot loader里面加如windows的开机选项

Windows在安装的时候,它的安装程序会主动覆盖掉MBR以及自己所在分区的启动扇区,没有选择的机会,而且它没有让用户自己选择菜单的功能。 五、Linux磁盘分区的选择

整个Linux最重要的地方就是在于目录树结构,以根目录为主,然后向下呈现分支状的目录结构的一种文件结构。使用挂载(mount)结合目录树结构域磁盘内的数据。所谓挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下;也就是说,进入该目录就可以读取该分区的意思。

所以开始分区的时候,只要分出根目录“/"和”Swap"即可,swap最好为物理内存的1.5-2倍之间。

linux磁盘第一个扇区分析,Linux磁盘分区相关推荐

  1. linux磁盘第一个扇区分析,[转]Linux中如何读写硬盘上指定物理扇区

    读指定物理扇区: dd  if=  of=   skip=  bs=512 count=1 写指定物理扇区: dd   if=   of=   seek=  bs=512 count=1 实例: 我们 ...

  2. SD卡的第一个扇区分析

    SD卡是硬盘的一种,硬盘包括机械硬盘固态硬盘等等,采购了一块SanDisk的32GB硬盘,FAT32格式,扇区大小512字节.由于厂商的硬盘大小和电脑计算不同,电脑计算出来29.7GB,以29.7GB ...

  3. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析

    本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关注AM335xStarterKit开发板),在必要时穿插其他相关内容. 在linux-3.8.1/a ...

  4. linux ptrace 内核源码分析,Linux ptrace详细分析系列(一)

    原标题:Linux ptrace详细分析系列(一) 本文为看雪论坛优秀文章 看雪论坛作者ID:有毒 备注:文章中使用的Linux内核源码版本为Linux 5.9,使用的Linux版本为Linux ub ...

  5. linux nmon 进程io,Linux服务器用iotop命令分析服务器磁盘IO情况

    Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. 如果会systemtap, 或者blktrace这些事 ...

  6. linux彻底卸载multipath,深度分析LINUX环境下如何配置multipath

    首先介绍一下什么是多路径(multi-path)?先说说多路径功能产生的背景,在多路径功能出现之前,主机上的硬盘是直接挂接到一个总线(PCI)上,路径是一对一的关系,也就是一条路径指向一个硬盘或是存储 ...

  7. linux日记的监控与分析,linux下apache日志监控与分析——webalizer与awstat

    (一)   Webalizer 从webalizer官网(http://www.webalizer.org/)我们可以看到对其做的如下说明,从中我们可以对webalizer有一个简单的了解 The W ...

  8. linux ptrace 内核源码分析,linux 3.5.4 ptrace源码分析分析(系列一)

    ptrace是linux系统中为了调试专门设立的一种系统调用.要想调试调试一个进程,有两种方式: PTRACE_TRACEME和PTRACE_ATTACH.这两种方式的主要区别可以概括为: PTRAC ...

  9. 【linux kernel】基于ARM64分析linux内核的链接脚本vmlinux.lds.S

    文章目录 一.导读 二.链接器是什么 三.链接脚本 四.linux内核的链接脚本 4-1 头文件包含描述 4-2 参数设置和宏定义描述 4-3 SECTIONS内容分析 五.linux内核的" ...

最新文章

  1. NLP进阶之(七)膨胀卷积神经网络
  2. Linux基础知识99问(一)
  3. Linux_系统进程管理
  4. java 反编译 手游_Java反编译器(DJ Java Decompiler)
  5. object getkey java_Java S3Object.getKey方法代码示例
  6. 完美使用application cache几点心得
  7. 纯CSS3实现打火机火焰动画
  8. Java库转oc_急急急!各位大神:一段JAVA代码转成OC代码。
  9. WPF-005:关于使用PageFunction导航中KeepAlive的使用
  10. 高校后勤管理系统java代码_《高校后勤管理系统的设计与实现》论文笔记二
  11. 4个终于被破译的世界级密码
  12. 求求你学学医疗保险小知识吧
  13. win10问题:无任何操作,2分钟后电脑就自动休眠
  14. 嵌入式文件服务器,嵌入式文件服务器
  15. 拥挤城市怎么在电脑上玩 拥挤城市电脑版玩法教程
  16. 【Docker系列】Docker的网络
  17. 数学建模微分方程导弹问题matlab求解,数学建模之微分方程(符实现例题和MATLAB源码)...
  18. 从动网论坛的衰落谈技术与运营的关系
  19. 存储服务器怎样还原阵列信息,raid5数据恢复的方法
  20. Python系列 之 email模块 - 发送邮件

热门文章

  1. 如何在 ASP.Net Core 中使用 Autofac
  2. WeihanLi.Npoi 1.10.0 更新日志
  3. Azure WAF 导致网站无法登录 AAD 的解决办法
  4. [C#.NET 拾遗补漏]06:单例模式最佳实践
  5. 你需要了解操作系统发展历程
  6. 程序员羽化之路--假如需要一百万个对象
  7. 利用AppMetrics对Web进行监控教程
  8. .NET Core 3.1通用主机原理及使用
  9. 特意向大家推荐.NET技术圈一些优秀开发者的公众号
  10. ASP.NET Core SignalR:集线器Hub