LINUX学习之二磁盘篇
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学习之二磁盘篇的更多相关文章
- Linux学习之二-Linux系统的目录结构
Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- Linux学习之路—磁盘分区
1.各硬件设备在Linux中的文件名 在Linux系统中,每个设备都被当做一个文件来对待,同时在Linux系统中,几乎所有的硬件设备文件都在/dev这个目录中. 设备 设备在Linux内的文件名 ID ...
- linux学习(二)——汤哥的推荐书籍
成为一名精通 Linux程序设计的高级程序员一直是不少朋友孜孜以求的目标. 根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows程序员的 1.8 倍.Java 程序员的 2. ...
- Linux学习之二——档案与目录的属性和权限
一.属性和权限的基本概念 Linux一般将档案可存取的身份分为三个类别,分别是 owner/group/others,这三种身份各有 read/write/execute 等权限. 所有的系统上的账号 ...
- Linux学习笔记12—磁盘管理
一.查看磁盘或目录的容量 1. df命令 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 参数: -I : 查看inodes使用状况 -h: 使用合适的 ...
- Linux学习之二十-Linux文件系统
Linux文件系统 文件系统的定义 文件系统是操作系统的必备软件,文件系统是对一个存储设备上的数据(block)和元数据(inode)进行组织的一种机制.文件系统可以帮助用户管理磁盘空间,进行文件的快 ...
- linux学习(二)认识Linux
一.Linux系统的组成 linux内核(linus 团队管理) shell:用户与内核交互的接口 文件系统:ext3.ext4等.windows 有 fat32 .ntfs 第三方应用软件 二.Li ...
- Linux学习日记(二)
在linux上运行.Net程序 并安装Linux网站 一.环境 ubuntu14.10(桌面版 官网下载的最新版) jexus5.6.3 正式版 MonoDevloper (安装完后里面有个Ubunt ...
随机推荐
- Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares)
Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...
- python 爬虫 urllib模块 发起post请求
urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某 ...
- CDH安装前系统优化准备
参考: https://www.cnblogs.com/yinzhengjie/p/10367447.html https://www.sysit.cn/blog/post/sysit/CDH6.2. ...
- asp.net之后台使用根目录运算符
在asp.net前台,大家会经常使用根目录运算符~.这样,可以不用考虑网站的配置目录. 有时,需要在后台设置路径,同样需要使用根目录运算符.好吧,其实我每次需要使用这种方法,就需要在baidu上查找如 ...
- 什么是数据传输服务DTS
数据传输服务(Data Transmission Service) DTS支持关系型数据库.NoSQL.大数据(OLAP)等数据源间的数据传输. 它是一种集数据迁移.数据订阅及数据实时同步于一体的数据 ...
- vue第一篇(搭建vue开发环境)
1.下载node并安装 下载地址: https://nodejs.org/zh-cn/ 下载后双击文件安装 2.检查是否安装成功 node -v v10.16.0 npm -v 6.9.0 如果能正常 ...
- 04: gitlab安装与使用
1.1 gitlab安装(192.168.56.12中安装) 1.GitLab是什么? 1. GitLab实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 2. GitLa ...
- Amoeba 实现MySQL读写分离
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡. ...
- 关于Android studio调用高德地图的简单流程和要点
一,账号与Key的申请 注册成为高德开发者需要分三步: 第一步,注册高德开发者:第二步,去控制台创建应用:第三步,获取Key. 前2步都比较简单,这里说下第三步. 获取Key 1.进入控制台,创建一个 ...
- pytorch中torch.narrow()函数
torch.narrow(input, dim, start, length) → Tensor Returns a new tensor that is a narrowed version of ...