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. Django学习笔记(二)URL编写规则

    先在根目录以及每个app内添加一个空白的urls.py(此处根目录指项目同名文件夹内).程序收到用户请求时,先在根目录的urls.py查找该URL属于哪个app,再从app的urls.py找到具体的U ...

  2. 【Python开发】Python 适合大数据量的处理吗?

    Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...

  3. 【Python开发】urllib2异常处理

    一.urllib2模块回顾 urllib2模块中最重要的函数是urlopen()函数,用于获取URLs资源(Uniform Resorce Locators).urlopen函数不仅可以用于简单的情况 ...

  4. Nginx网络负载均衡,负载均衡,网络负载,网络均衡

    本节就聊聊采用Nginx负载均衡之后碰到的问题: Session问题 文件上传下载 通常解决服务器负载问题,都会通过多服务器分载来解决.常见的解决方案有: 网站入口通过分站链接负载(天空软件站,华军软 ...

  5. Java字节流文件封装

     /**  * 字节流封装方法  */ import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...

  6. 通过java 来实现对多个文件的内容合并到一个文件中

    现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...

  7. [Python3] 037 函数式编程 装饰器

    目录 函数式编程 之 装饰器 Decrator 1. 引子 2. 简介 3. 使用 函数式编程 之 装饰器 Decrator 1. 引子 >>> def func(): ... pr ...

  8. 【案例分享】在 React 框架中使用 SpreadJS 纯前端表格控件

    [案例分享]在 React 框架中使用 SpreadJS 纯前端表格控件 本期葡萄城公开课,将由国电联合动力技术有限公司,资深前端开发工程师——李林慧女士,与大家在线分享“在 React 框架中使用 ...

  9. [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)

    [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...

  10. Jconsole与Jmx 分析JVM状况(下) 转

    出处: Jconsole与Jmx 分析JVM状况(下) 线程(ThreadMXBean ) 从 Jconsole 画面取得线程画面如下: 左下角列出了所以正在运行的线程.通过点击某个线程,右下脚可以看 ...