公司品牌flash网站设计,云典 wordpress,wordpress模板mip,福田企业网站推广哪里好了解了被打开的文件#xff0c;肯定还有没被打开的文件#xff0c;就是磁盘上的文件。先从磁盘开始认识
磁盘
概念
内存是掉电易失存储介质#xff0c;磁盘是永久性存储介质 磁盘的种类有SSD#xff0c;U盘#xff0c;flash卡#xff0c;光盘#xff0c;磁带。磁盘是…了解了被打开的文件肯定还有没被打开的文件就是磁盘上的文件。先从磁盘开始认识
磁盘
概念
内存是掉电易失存储介质磁盘是永久性存储介质 磁盘的种类有SSDU盘flash卡光盘磁带。磁盘是外设机械设备访问慢os也有提速的方式
磁盘物理结构 磁盘上面有盘片伺服磁头音圈马达等 盘面上会存储数据计算机只认识二进制南极和北极向磁盘写入数据本质就是改变磁盘上的正负极磁头可以读取内容
磁盘的存储结构 磁盘有一个一个圈每一个平看是一个盘面一个盘面上每一圈圆叫磁道将磁道分为了8份每一份磁道就是扇区。磁道相同的盘面合在一起是一个柱面
磁盘寻道
磁盘怎么找到数据在哪里 在电脑中运行的时候磁盘是在高速旋转高速旋转让磁头悬浮在盘面上方电脑找到地址后发送给磁头驱动磁头臂精确寻道找到数据存放的位置。读取数据时磁头会移动到盘面上读取数据读取完会回到起始位置。磁盘怎么确定数据在哪个扇区
CHS寻址
要找到一个扇区先确定在哪个面对应哪个磁头然后确定哪个磁道最后确定在哪个扇区。 磁盘结构的抽象
磁带里面的塑料带就像磁盘的盘片播放时会将磁带从一边卷到另一边。虽然是圆形的但可以将磁带抽出来就成了线性结构里面分为很多部分。磁盘虽然是圆形的也可以拉开抽象为线性结构每一块就像一个扇区访问一个扇区只需要知道下标就像给每一个扇区编了号这种寻址方式是LBA寻址。将LBA寻址转换为CHS寻址就可以找到数据扇区 磁盘管理
将数据存储到磁盘变为存储到数组找到扇区变为找到数组特定位置这样对磁盘的管理变为对数组的管理就方便了很多
一整个磁盘不好管理可以将磁盘分为几个区就可以转换为小分区的管理。 橙色部分是分区的信息电脑启动的信息不只存一份还有几个备份当启动出问题就可以拷贝过来恢复 上面的橙色部分就是BootBlock一个分区还是大可以划分为很多个快其中每个块的结构如上图。
块组 虽然磁盘的基本单位是扇区512字节但是操作系统文件系统和磁盘进行IO的基本单位是4KB8*512byte一个block块的大小所以磁盘也叫块设备
为什么不以512字节为单位
1.如果给的太小需要多次IO效率会低 2.如果操作系统和磁盘一样的大小万一磁盘基本大小编了Os的源代码要不要改硬件和软件os进行解藕
linux ext2文件系统上图是磁盘文件系统图内核内存映像有所不同磁盘是典型的快设备硬盘分区被划分一个个的block。一个block的大小是格式化的时候确定的并且不可以更改例如mke2fs的-b选项可以设定bloc大小为1024、2048或4096字节。而上图中启动快
Block Groupext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子超级块Super Block存放文件系统本身的结构信息。记录的信息主要有block和inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息Super Block的信息被损坏可以说整个文件系统结构就被破坏了GDTGroup Descriptor Tbale块组描述符描述块组属性信息包含每个块组的总体信息如数据位图的块号、索引节点位图的块号、索引节点表的起始块号、空闲数据块和 inode 的个数等。块位图Block Bitmap假设有1000个blocks就有1000个比特位和block一一对应每个bit表示一个哪个数据块被占用哪个没被占inode位图inode Bitmap同上表示inode是否空闲可用inode节点表一个大小128字节的空间所有文件inode空间的集合需要标识唯一性每一个inode块都要有一个inode编号。一般一个文件一个inode一个inode编号。存放文件属性和大小所有者最近修改时间等data blocks存放文件内容多个4kb扇区*8大小的集合保存的都是特定文件的内容
在上面的区分后linux在存储文件时内容和属性是分开存储的。文件内容属性属性存在inode内容存在data里。这样可以让一个文件的信息可追溯可管理
在每个块组内写入相关的管理数据整个分区就被写入了文件系统信息这就是格式化
文件查找
找到文件只要找到对应的inode编号就能找到该文件的inode属性合集。那么文件的内容怎么知道哪些块是这个文件的
inode中存了文件的属性和同一个块组的编号
如果一个文件特别大block数据块里不只可以放内容也可以放其他块的编号这样类似多叉树的机构节点就会存在大量的数据块就可以表示一个大文件
inode 文件属性第一串数字就是inode
找到inode编号就能找到分区里特定的bg然后有了inode属性和内容怎么知道一个文件的inode编号 。在linux里想找一个文件首先知道的是文件名但文件inode属性里并没有文件名文件名是在哪里
在linux目录下有很多文件但是同一个目录里没有重复的文件名。目录其实也是文件有自己的inode也有data blockdata里就存文件名以及文件名和inode的映射关系这两个互为key值。正因为目录也是文件所以也有自己的权限x就是进入目录w创建文件需要写入文件名r显示文件名和属性读取文件属性和内容
寻找inode编号依托的是目录结构所以相对路径和绝对路径的关键在于定位目录才能读取目录里的文件。关于目录名怎么找到自己的inode在linxu里有目录树结构保存了目录之间的关系和目录名与inode的映射关系
创建文件 先找到目录所在的分区然后找到块组在inode bitmap找到没有被占用的编号置为1然后将文件的属性写入比如权限所属组时间等将datablock映射关系建立block位图置为1。有了inode编号还需要在目录block里写入文件名编号和文件名映射关系。
删除文件 以文件名为key找到对应文件的inode将inode bitmap和block bitmap的内容修改为0无占用。再将映射关系删掉就行了。有时候删部分文件只需要修改文件大小。所以删除文件比拷贝快的多所以文件删除也是可以恢复只需要找到inode将inode bitmap恢复将映射的数据块恢复。但是如果这个inode和data block被再次占用覆盖了就找不到了
查看文件 ls找到目录显示目录的对应的文件名和文件属性 cat根据文件名找到文件inode显示文件内容
磁盘空间或者块组还有空间但文件创建失败
inode和block是固定的如果一个申请不下来就会出现这种情况