linux磁盘第一个扇区分析,Linux磁盘分区

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

计算机常见的磁盘接口有两种,分别是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倍之间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer之分行从上到下打印二叉树

1 题目 分行从上到下打印二叉树 23 5 1 4 2 3 我们打印如下 23 51 4 2 3 2 分析 之前这篇博客写了通过队列按层打印剑指offer之按层打印树节点 现在无非就是还要按照条件打印,第一次打印1个,然后第二次打印2个&…

转:char*, char[] ,CString, string的转换

转:char*, char[] ,CString, string的转换 (一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C标准之中;CString(typedef CStringT > CString&am…

虚拟机VMware安装XP系统错误解决办法

虚拟机给我的编程工作确实带了很多方便,但是虚拟机的一个最大挑战是硬件赶不上,速度太慢了。最近一直在致力于虚拟机上Win7专业版平台上SQL Server 2005Visual Studio 2012系统开发,最初还可以,但是越到后面速度越慢。最后决定重新…

[TP5填坑]关于助手函数input一不小心取不到get值的解决办法

声明:适用于懒人 常规对于这个什么鬼取不到值我也是很绝望的,通常都是看一遍手册就开始写,除非是在没事才跟你认认真真看,所以,我们这类懒人就非常尴尬了,只能动不动查手册。 tp5也出很久了,本…

【Python】猜数小游戏(文件操作)

人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary、列表List、元组Tuple差异化理解 from random import randintname input(请输入你的名字:)#输入玩家名字 #读取文件…

100ms的SQL把服务器搞崩溃了

前言一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利;前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环…

剑指offer之分行从上到下之字行打印二叉树

1 问题 分行从上到下之字行打印二叉树 比如二叉树 23 5 1 4 2 3 3 2 1 5 1 4 2 3 分行从上到下之字行打印二叉树结果如下 2 5 3 1 4 2 3 3 2 4 1 5 1 …

python中sendkeys.sendkeys_python的webbrowser模块和SendKeys模块

今天工作的时候突然遇到个问题,就尝试着按照领导所说要天马行空的想东西,于是那点scrapy的代码逐渐忘了的差不多了,想到用迅雷去下载一些东西,迅雷不知道怎么回事,但知道一点,他监控计算机浏览器&#xff0…

linux dns 动态更新时间,CentOS 7实现DNS+DHCP动态更新详解

然后再安装bind-chroot 执行/usr/libexec/setup-named-chroot.sh /var/named/chroot on 停用named,。昨天运维帮组织线下的沙龙,照着做又遇到各种问题,相信就能搞定了,最后不不知道到底什么原理实现的,man 5 dhcpd.con…

数组方法

json数据格式 <!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>无标题文档</title> <script>var json { name : leo, age : 32 };// alert( json.name )…

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责&#xff1a; 1&#xff0c;负责需求调研&#xff0c;对需求进行分析&#xff0c;编写解决方案、需求规格说明书等 2&#xff0c;根据需求制作原型&#xff0c;并负责原型展示以及客户沟通等工作 3&#xff0c;负责向技术团队精确地传达业务…

基于.NET的系统开发需要注意的问题总结

从2009年进入大学校园以来,笔者渐渐对程序设计产生了浓厚的兴趣,对程序人生产生了深度的思考。记得刚开始学的第一门计算机语言就是风靡一时的Visual Basic,时至今日,时间已过了六年有余,已初步掌握了VB,C,C++,C#,Python,T-SQL等多种语言。回头想想,一路走来,真的很…

nginx 下配置使用Thinkphp5解决跨目录活动并且设置网站根目录

由于TP5框架的一些特性规则&#xff0c;在nginx下导致跨目录的一些访问不能执行 最开始我尝试配置文件夹目录&#xff0c;导致出现各种奇葩错误&#xff0c;然后搜了以下资料发现原来只要简单的修改几个配置文件即可。 声明系统环境&#xff1a; **系统&#xff1a;Centos6.版本…

剑指offer之先序非递归打印二叉树

1 问题 先序非递归打印二叉树 比如二叉树如下 * 2* 3 5 * 1 4 2 3 * 3 2 1 5 1 4 2 3 先序原则&#xff1a;中左右打印节点&#xff0c;如果左边有节点继续要打做节点&…

如何使用CPU来加速你的Linux命令

我们都知道 grep, bzip2, wc, awk, sed等等&#xff0c;都是单线程的&#xff0c;只能使用一个CPU内核。那么如何才能使用这些内核? 要想让Linux命令使用所有的CPU内核&#xff0c;我们需要用到GNU Parallel命令&#xff0c;它让我们所有的CPU内核在单机内做神奇的map-reduce操…

linux命令行设置编码,编码样式-Linux命令行开关和参数是否有标准?

-一种全部(不带参数)。 如果有GNU风格的--all选项&#xff0c;那么-a只能是同义词&#xff0c;这将是非常令人惊讶的。 示例&#xff1a;fuser(1)&#xff0c;fetchmail(1)。如tar(1)中所示追加。 通常将它与-d配对以进行删除。-b缓冲区或块大小(带参数)。 设置临界缓冲区大小&…

关于nginx为站点绑定域名以及绑定多个域名

环境&#xff1a; 系统&#xff1a;Centos6.版本 使用lnmp一键安装包安装环境&#xff08;配置文件地址在其官网有写&#xff09; 找到nginx的conf文件&#xff0c;我的目录为&#xff1a; /usr/local/nginx/conf 随后找到&#xff1a;server_name _; 如果没有配置就是…

【6】JAVA---地址App小软件(QueryPanel.class)(表现层)

查找模块&#xff1a; 年龄可进行段查找。 其他的都是模糊匹配。 空格为无用字符&#xff0c;会屏蔽的&#xff08;除年龄&#xff09;。 &#xff08;如果在年龄中输入空格&#xff0c;会出现异常&#xff0c;当时没想到这点&#xff0c;要防护这点很容易的&#xff0c;但…

Edge 超越 Safari 成为全球第二大桌面端浏览器!Firefox 爆降致 Chrome 份额再创新高!...

桌面端StatCounter 近日发布全球桌面端浏览器 2022 年 3 月统计报告&#xff1a;微软 Microsoft Edge 浏览器桌面端市场份额从 9.61% 上升至 9.65%&#xff0c; 苹果 Safari 浏览器桌面端市场份额从 9.77% 下降至 9.56%。 这也意味着微软 Microsoft Edge 浏览器正式超越苹果 Sa…

ArcGIS Engine 10.2开发环境搭建

1、安装LicenseManager 2、安装Desktop 3、安装VS2012 4、安装Engine 5、安装ArcObject SDK for .NET