1、Linux系统中,每个设备都被当成一个文件来对待。文件系统的最小单位是区块(Block)

设备 设备在Linux中的文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
U盘 /dev/sd[a-p](与SATA相同)
软驱  
打印机  
鼠标  
当前CD ROM/DVD ROM  
当前鼠标  
磁带机  

2、磁盘分区

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

  个人计算机常见的磁盘接口有两种:IDE接口和SATA接口,目前主流是SATA接口。

  以IDE接口来说,一个IDE扁平电缆可以连接两个IDE设备(Master主设备和Slave从设备),主机通常提供两个IDE接口(称为IDE1(Primary),IDE2(Secondary)),因此最多可以接到4个IDE设备。(如果已经有一个光盘设备了,那么最多还能再接3块IDE接口磁盘)。

  四个设备的文件名如下表:

IDE\Jumper Master Slave
IDE1(Primary) /dev/hda /dev/hdb
IDE2(Slave) /dev/hdc /dev/hdd

  SATA/USB接口的磁盘没有固定顺序,只能根据Linux内核检测到磁盘的顺序。

  问题:如果磁盘被分区,那么每个分区的设备文件名又是什么呢?先复习下面知识再来解答!

2.2磁盘的组成

  磁盘主要由盘片、机械手臂、磁头、主轴马达组成。数据的写入是在盘面上,盘面分扇区(Sector 存储的最小单位)与柱面(Cylinder 分区的最小单位)两种单位,其中每个扇区512bytes。

  整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息,分别是:

  (1)主引导分区(Master Boot Record,MBR):可以按照引导加载程序的地方,446bytes。MBR很重要,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR的管理就非常重要了!如果MBR物理坏了,硬盘也就无用了。

  (2)分区表(Partition Table):记录整块硬盘的分区状况,64bytes。

2.3磁盘分区表

  分区的好处:数据的安全性和系统的性能

  分区表的64bytes容量中,分为四组记录区,每组记录区记录了该区段的起始与结束柱面的号码。假设上面的硬盘设备文件名为/dev/hda,那么这四个分区的文件名依次是:  

  P1:/dev/hda1

  P2:/dev/hda2

  P3:/dev/hda3

  P4:/dev/hda4

  第一扇区的64bytes分区表只能记录四条数据,所以最多只有四个主分区与扩展分区(磁盘的限制),扩展分区最多只有一个(操作系统的限制)。 

  扩展分区的目的是使用额外的扇区来记录分区信息,由扩展分区继续切出来的分区称为逻辑分区(逻辑分区设备名称号码由5开始,前四个号码保留给Primary主分区和Extended扩展分区),扩展分区本身并不能被拿来格式化。能够被格式化后作为数据访问的只有主分区和逻辑分区。

  逻辑分区的数量易操作系统而不同,在Linux中,IDE硬盘最多59个逻辑分区(5~63),SATA硬盘有11个逻辑分区(5~15)。

例题:分区的整合?扩展分区的两个逻辑分区整合为一个,需要将两个分区删除,再重新创建一个新分区(不影响其他分区)。

   一个主分区和一个逻辑分区不能整合。除非将扩展分区破坏后再重新分区(会导致所有逻辑分区被删除)。

2.4开机流程与主引导分区(MBR)

  CMOS是记录各项硬件参数且嵌入在主板上的存储器,BIOS则是一个写入到主板上的韧体(韧体,即写入到硬件上的软件程序)。BIOS就是开机时计算机系统会主动执行的第一个程序。BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR里会放置最基本的引导加载程序(Boot loader),接下来就是MBR内的引导加载程序工作了。引导加载程序的目的是加载(load)内核文件。接下来就是内核文件工作了。之后就是大家所知道的操作系统的任务啦!

  简单说来,整个开机流程到操作系统之前的动作是这样的:

  (1)BIOS:开机主动执行,认识第一个可开机的设备;

  (2)MBR:第一个可开机设备的第一扇区的MBR,内包含引导加载程序;

  (3)引导加载程序(Boot loader):一支可读取内核文件来执行的软件

  (4)内核文件:开始操作系统的功能。

  BIOS和MBR都是硬件本身会支持的功能,Boot loader则是操作系统安装在MBR上的一套软件。Boot loader的主要任务:

  (1)提供菜单:用户可选择不同的开机选项,是多重引导的重要功能;

  (2)载入内核文件:直接指向可开机的程序区段来开始操作系统;(实际的可开机内核文件是放置到各个分区内的)

  (3)转交其他loader:将引导加载功能转交个其他loader负责。(每个loader只认识自己的系统分区内的可开机内核文件以及其他loader)

  硬盘只有一个MBR,但是引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区(boot sector),每个分区都有自己的启动扇区这个特色造就“多重引导”的功能。

  总结:每个分区有一个启动扇区(boot sector),每个启动扇区有一个引导加载程序(boot loader),每个引导加载程序可以载入本区的内核文件启动操作系统或者将控制转交给其他引导加载程序。

  

LINUX学习之二磁盘篇的更多相关文章

  1. Linux学习之二-Linux系统的目录结构

    Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...

  2. Linux学习笔记(二) 文件管理

    了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...

  3. Linux学习之路—磁盘分区

    1.各硬件设备在Linux中的文件名 在Linux系统中,每个设备都被当做一个文件来对待,同时在Linux系统中,几乎所有的硬件设备文件都在/dev这个目录中. 设备 设备在Linux内的文件名 ID ...

  4. linux学习(二)——汤哥的推荐书籍

    成为一名精通 Linux程序设计的高级程序员一直是不少朋友孜孜以求的目标. 根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows程序员的 1.8 倍.Java 程序员的 2. ...

  5. Linux学习之二——档案与目录的属性和权限

    一.属性和权限的基本概念 Linux一般将档案可存取的身份分为三个类别,分别是 owner/group/others,这三种身份各有 read/write/execute 等权限. 所有的系统上的账号 ...

  6. Linux学习笔记12—磁盘管理

    一.查看磁盘或目录的容量 1.  df命令 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 参数: -I : 查看inodes使用状况 -h: 使用合适的 ...

  7. Linux学习之二十-Linux文件系统

    Linux文件系统 文件系统的定义 文件系统是操作系统的必备软件,文件系统是对一个存储设备上的数据(block)和元数据(inode)进行组织的一种机制.文件系统可以帮助用户管理磁盘空间,进行文件的快 ...

  8. linux学习(二)认识Linux

    一.Linux系统的组成 linux内核(linus 团队管理) shell:用户与内核交互的接口 文件系统:ext3.ext4等.windows 有 fat32 .ntfs 第三方应用软件 二.Li ...

  9. Linux学习日记(二)

    在linux上运行.Net程序 并安装Linux网站 一.环境 ubuntu14.10(桌面版 官网下载的最新版) jexus5.6.3 正式版 MonoDevloper (安装完后里面有个Ubunt ...

随机推荐

  1. 防火墙(入站规则)C++修改方法 以解决服务器无法连接问题

    为啥要关注防火墙 今天项目中的p2p直连遇到了问题.经过排查,发现充当服务器的一端进入listen状态后,另外的客户端一端connect失败. 错误码10060(超时). 开始时怀疑客户端connec ...

  2. 布隆过滤器(Bloom Filter)原理以及应用

    应用场景 主要是解决大规模数据下不需要精确过滤的场景,如检查垃圾邮件地址,爬虫URL地址去重,解决缓存穿透问题等. 布隆过滤器(Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的 ...

  3. 关于8086中的jmp near ptr原理

    在8086汇编语言中.jmp 0x7c41 自己跳转到自己的位置,是一个死循环代码.对应的机器指令是e9fdffe9是跳转  fdff其实应该是fffd 也就是-3的补码. 执行到e9fdff相当于把 ...

  4. 如何使用JavaScript实现前端导入和导出excel文件

    一.SpreadJS 简介 SpreadJS 是一款基于 HTML5 的纯 JavaScript 电子表格和网格功能控件,以“高速低耗.纯前端.零依赖”为产品特色,可嵌入任何操作系统,同时满足 .NE ...

  5. 线性基求交(线段树)--牛客第四场(xor)

    题意: 给你n个基,q个询问,每个询问问你能不能 l~r 的所有基都能表示 x . 思路: 建一颗线性基的线段树,up就是求交的过程,按照线段树区间查询的方法进行check就可以了. #define ...

  6. windows 安装 python 踩坑记录

    官方不建议使用 64 bit python,容易出各种问题 Unable to find vcvarsall.bat 凡是安装与操作系统底层相关的 python 扩展都会遇到这个问题,如 PIL,Pi ...

  7. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

  8. iview发布到IIS 路由问题

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...

  9. css动画之旋转翻牌效果

    1.我们先设置两个盒子大小,颜色等等,然后定位重叠在一起,最后再进行动画设置 例子如下: <style> .box { height: 300px; width: 300px; posit ...

  10. vue实现登录路由拦截

    第一步 在router.js里面 把需要判断是否登录的路由添加meta对象属性 在meta对象里面自定义一个属性值 第二步 : 在router.js里面 与const router = new Rou ...