8磁盘知识和历史(代码片段)

author author     2022-10-29     326

关键词:

磁盘管理相关知识

虽然磁盘只能归类到I/O设备,但是他也是非常重要的一个知识来的。
机械式设备
外部存储设备:
比如:U盘,光盘,软盘,硬盘,磁带

硬盘知识:
磁盘的结构:
扇区与磁道
多个盘面,双面可存储,磁头悬浮在盘面,没有接触
这么多同心圆,官方术语叫做磁道

技术分享图片

短短时间,硬盘空间发生巨大的变化,但是速度却没有发生巨大变化
存储东西,在每一个盘面上存储,并且是在同一个磁道中存储

如果不分区,整个硬盘是一个文件系统,分区了,每个分区就可以是一个文件系统
分区是逻辑边界
分区:Partition
可以创建多个文件系统

技术分享图片

MBR

磁盘有一个叫做MBR的东西:
主引导记录(512个字节,操作系统无法识别的,是属于磁盘的空间来的)
MBR分为三段
446Byte:
BootLoader,程序,引导加载器
64Byte:
每16个字节标识一个分区,只能划分四个主分区(Windows的多个分区不是一回事),所以我们Linux只能划分4个主分区
2byte:
标记MBR是否有效
所以说系统装好了,但是MBR坏了的话,系统也是无法启动的

开机流程:

(BIOS-选择启动项_如果前面有光盘,没有的话,下一个启动项)--到了硬盘----读取硬盘的MBR---将446载入内存--BIOS控制退出----读取分区表----查找对应系统的内核---将内核读取到内存中去----内核启动自身---开机成功

所以有时候系统装好了就是启动不了系统,就可能是MBR出错了
比如你之前的MBR指向的是一个Linux系统的,你重装了window系统就不能直接使用,必须MBR重新指向

扩展分区
我们拿一个主分区,指向磁盘的另外的位置,这样就可以把没有使用的磁盘重新规划,我们把这个可以创建指针的分区叫做扩展分区(所以说扩展分区是算入主分区允许最大数量之内的)
扩展分区里面存的是一个指针
所以我们划分多个分区,有一定的限制
我们在硬盘分区中,扩展分区只能用一个,而主分区+扩展分区<=4

我们在存储的时候,是按照柱面的存储,划分分区,也是按柱面来存储的
技术分享图片

数据存储按柱面存储,划分分区也是按柱面分区的
寻道时间,所以磁头是会走动的,不是不会动(这就可能会形成了读写延迟(来源于磁盘挪过去,数据转过来))
所以7200转和5400转(所以一般转速越快,一般数据读写越快,因为错过了一个数据,转速快的话,再次读到的时间会越短)。分钟来计数的。
所以硬盘里面是真空的,避免灰尘的,如果有灰尘,在真实空气中也会烧起来的。
所以磁盘转速越快,寻道速度越快,但是发热量也会更大。

磁盘是固定角速度的,所以靠外的,读取到的数据更多
c盘存在磁盘外道,读取速度快,所以说平时有没有发现我们的D盘访问速度会比F盘会快一点。

硬盘逻辑结构(如何寻址)

文件系统是一个管理软件
对于整个磁盘来讲,存储的就是01代码而已
所以我们一定要给里面的数据给定逻辑的边界,怎么去找文件...之类的

类似图书馆
先分类,编号,建立索引 找书的时候找索引(编目)(分类 名称)
而我们实际中的硬盘也是这样的
我们找书的编目就是元数据(他不属于实际数据,就像索引并不是书,但是它也需要在硬盘有存储空间,也是很重要的一段数据),而实际数据存储又是一个空间(分成了多个磁盘块)

我们硬盘怎么知道哪些磁盘块是空闲的,哪些在使用的
我们元数据里面有一个区域,我们叫做块位图:bitmap,通过这个块位图去给我们将要存储的东西分派数据块
下图是一个目录数据(目录磁盘块)
文件名不在Inode存放,所有目录都在/,根是一个自引用的,文件名其实在目录上放的,目录是放在磁盘块的
如下图所示,目录的磁盘块
技术分享图片

\
如下图找 /var/log/messages的物理逻辑(来回来回不断的绕绕,不断地找目录的磁盘块)
所以计算机中第一次访问较长的目录,那他访问过的话,会把它载入缓存,下次访问就快了

技术分享图片

下图中的dentry叫做目录项:目录条目
技术分享图片

那我们在目录中新建一个目录呢,新建一个文件呢
比如在backup下存储一个test.txt文件,并且大小为10K,假如一个磁盘块大小只有2K
通过块位图给文档分配多个磁盘块(下图4就是块位图),通过步骤4然后分配合适的磁盘块保存testtxt文件,就有了步骤五
下图的1-5是步骤,要看明白
技术分享图片

提问:为什么删除了东西可以恢复?

因为他是将inode设置为空,但是磁盘块的数据还在那个。
所以同一个文件系统中,只是修改了目录磁盘,inode没有变,磁盘空间的数据块也是没有变的
不过下次读写的时候才会清除里面的数据,所以删了立刻恢复数据是一般可以恢复的,但是你写了数据可能就不行了
实际中,我们的硬盘也没有那么简单

虚拟机virtualbox知识和常用操作方法(代码片段)

VirtualBox基础VirtualBox磁盘Disk介绍VirtualBox的磁盘格式磁盘的操作Linux篇追加一个新的磁盘用以扩充操作系统的磁盘容量1创建新的虚拟盘2Virtualbox的Linux挂载分区21查看现在系统的磁盘空间22创建新分区23格式化和挂载新磁盘24修改启... 查看详情

基础知识点(代码片段)

...改字体颜色cat/etc/profile.d/env.sh保存的文件2018.12.121、Linux磁盘分区:最多四个分区,(主分区不可分割,扩展分区可以分逻辑分区)2、安装Centos安装步骤设置时区为shanghai,磁盘分区自己创建/50G/boot1G/data20Gswap(内存的两倍),设置... 查看详情

万字肝货|超全总结,linux常用磁盘命令文件命令!(代码片段)

... 6、文件系统和目录结构  7、终端和常用命令  8、磁盘命令  9、文件命令  10、其他常用命令  11、案例讲解1、知识引入windows桌面系统/服务器端linux服务器端mac/unixandroid/ios桌面系统:主要是面对大众用户& 查看详情

java基础知识点笔记总结(代码片段)

文章目录1.String特性2.String的字面量创建和new对象形式3.String字符串内存存储原理4.String不同拼接对比效果5.String和数组常用的混合面试题6.JVM涉及字符串内存结构7.String常用方法8.涉及到String类与其他结构之间的转换8.1常见的小错... 查看详情

前端小知识点:undefined和null区别(代码片段)

目录一、奇怪点二、历史原因三、具体区别四、代码演示五、运行结果一、奇怪点有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?二、历史原因1995年JavaScript诞生时,最初... 查看详情

8.4parted:磁盘分区工具(代码片段)

parted   对于小于2TB的磁盘可以用fdisk和parted命令进行分区,这种情况一般采用flisk命令,但对于大于2TB的磁盘则只能用parted分区,且需要将磁盘转换为GPT格式。parted[选项][设备名] -l   显示所有磁盘分区... 查看详情

py知识(每日更新)8.6(代码片段)

浏览器怎么和server端交互前端的文件有一个后缀名:htmlweb端的组成:#html一堆标签组成的内容基础的排版和样式#css描述了标签的样式#js/jq动态的效果html超文本标记语言#超文本:图片音频视频#标记:所有内容都是包裹在标签中标记(标... 查看详情

谷歌:.apk成为历史!(代码片段)

据外媒SlashGear报道,GooglePlay应用商店正在不断发展,以满足安卓用户和开发者不断增长的需求和要求。其中许多改进依赖于由人工智能和机器学习驱动的自动化系统,特别是在筛选应用程序的恶意软件或禁止内容方... 查看详情

函数基本知识点(代码片段)

递归函数functionfib(sun)if(sun===0)return0;if(sun===1)return1;returnfib(sun-2)+fib(sun-1);fib(6)//输出是8将sun=6代入函数中,所得分裂为4和5。4和5同时进行循环,实际内容(4-2=2,4-1=3)+(5-2=3,5-1=4)以此类推,直到最后为1的时候全部累加。其... 查看详情

java基础知识点笔记总结(代码片段)

文章目录1.Java跨平台性2.JVM与垃圾收集机制3.jdk,jre,jvm关系4.编译过程5.注释5.1注释分类5.2文档注释6.JavaAPI文档7.Java注意事项一8.关键字和保留字8.1关键字8.2保留字(reservedword)9.标识符和命名规则9.1标识符(identifier)9.2命名规则10.变量11... 查看详情

十年前的知识产权战争|历史上的今天(代码片段)

整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是2023年1月18日,在1896年的今天,亨利·路易斯·史密斯(HenryLouisSmith)第一次向公众展出X光机;自问世之后,X射... 查看详情

geohash基本知识及.net下计算相邻8个区域编码(代码片段)

目录一、简介二、计算方法三、GeoHash的精度四、查找相邻8个区域的Geohash编码(.NET)最近项目中需要搜索周边的POI信息,查找的过程中了解到了Geohash,这这里记录下以便自己牢记也和大家分享下。一、简介GeoHash是一种地址编码... 查看详情

java知识(花费了很长的时间进行系统性的整理和分析)将会慢慢补充其余的知识点(代码片段)

1.部署环境(1).准备jdk1.8(2).配置环境变量(3).测试是否配置成功java-version补充:打印出java1.8即可C:\\Users\\Administrator>java-versionjavaversion"1.8.0_191"Java(TM)SERuntimeEnvironment(build1.8.0_191-b12)JavaHotS 查看详情

谷粒商城-前端开发基础知识(代码片段)

目录1.ES61.1.简介1.2.let声明变量 1.4.解构表达式1.5.字符串扩展1.6.函数优化1.7.对象优化1.8.map和reduce1.9.Promise1.9.模块化 2.Vue2.1.MVVM思想2.2.Vue简介2.3.入门案例 2..4.概念2.5.指令2.6.计算属性和侦听器2.7.组件化2.8.声明周期和钩子函数2.9... 查看详情

谷粒商城-前端开发基础知识(代码片段)

目录1.ES61.1.简介1.2.let声明变量 1.4.解构表达式1.5.字符串扩展1.6.函数优化1.7.对象优化1.8.map和reduce1.9.Promise1.9.模块化 2.Vue2.1.MVVM思想2.2.Vue简介2.3.入门案例 2..4.概念2.5.指令2.6.计算属性和侦听器2.7.组件化2.8.声明周期和钩子函数2.9... 查看详情

solidity基础知识(代码片段)

Solidity基础知识官网:Solidity版本设置//SPDX-License-Identifier:MIT表示身份协议//^0.8.7表示当前代码支持0.8.7及以后solidity版本//>=0.8.7<0.8.12表示支持该范围的版本pragmasolidity0.8.7;基本数据类型//基础数据类型:booleanuint(无... 查看详情

rocketmq消费者核心配置和核心知识(代码片段)

一、RocketMQ4.X消费者核心配置consumeFromWhere配置(某些情况失效:参考https://blog.csdn.net/a417930422/article/details/83585397)这个配置基本不用改,采用默认配置即可。CONSUME_FROM_FIRST_OFFSET:初次从消息队列头部开始消费,即历史消息(还... 查看详情

py基础知识(每日更新)(代码片段)

计算机基础知识CPU:人类的大脑运算和处理问题内存:临时存储数据断电就消失了硬盘:永久存储数据图片,视频,等操作系统:是一个软件控制每个硬件之间数据交互的Python的应用和历史Python2:C,JAVA,C#源码不统一功能重复维护难度大Pyth... 查看详情