主要定义

  1. 磁盘的物理组成
    磁盘主要由圆形磁盘(多张)、机械手臂、磁头等组成。每张磁盘都有不同的磁道,半径相同的磁道组成了磁柱,沿着中心划线可将磁盘分成若干扇区,每个扇区的大小是512Bytes。
  2. 磁盘分割
    磁盘分区的重点是记录每一个分割区的起始与结束磁柱,而这个记录放在MBR(主引导记录),MBR最多提供四个分区记录,多于4个的要使用扩展分区。
  3. 文件系统
    磁盘分区完成后要进行格式化,而格式化就是给磁盘设置合适的文件系统(如:ext2、ext3),每一个分区只能指定一种文件系统,文件系统是规定存取数据的方式。磁盘最小的储存单们是扇区(sector),每个sector的大小是512个字节,但是文件系统中规定的最小存取单位并不是512个字节,文件系统中引入了逻辑区块(Block)的概念,每个Block的大小可以根据需要设成不同,在考虑Block大小时要考虑到以下两个方面:读取效率、磁盘空间,Block太大容易学浪费空间,另外一方面如果Block太小,在存取大的文件时效率会降低,所以应根据实际的需要合理的安排Block的大小。
  4. EXT2文件系统
    EXT2文件系统将文件分为两部分进行储存, 一部分保存文件的属性,另一部分保存文件的内容,前者为inode后者为Block,我们在将磁盘格式化为ext2时必须指定inode与Block的大小才行,也就是说会建立inode table 与block table两个区域。Block是记录文件内容的区域,inode记录文件相关属性及文件内容放置在哪个block,简单说inode除了记录文件属性同时还必须要有指向的功能,即指向文件内容放置的区块(Block),好让操作系统可以正确取得文件内容。Inode记录的信息包括以下:文件的拥有者与群组、文件的存取模式(read、write、execute)、文件的类型、文件状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改的时间(mtime)、文件的大小、文件类型的旗标、该文件真正内容的指针(pointer)

系统存取文件的过程
目录
当在Linux下新建 一个目录时,ext2会分配一个inode与至少一块Block给该目录。其中,inode记录该目录相关属性,并指向分配到的那块Block;而Block则是记录这个目录下相关连的文件的关联性!

    档案
当在linux下新建 一个文件时,ext2会至少分配一个inode与相对于该文件大小的Block数量给该文件。

    注意:inode本身并不记录文件名,只记录文件的相关属性,至于文件名则是记录在目录所属的block区域!另外文件与目录的关连性是通过目录的block区域记录文件的相关连接实现的。所以当我们读取一个档案的内容时,我们的linux会先由根目录取得该档案上层目录所在的inode,再由该目录所记录的文件关连性(在该目录所属的block区域)取得该档案的inode,最后经由inode提供的block指向,取得最终的档案内容。以下为例子:

一块分区在ext2下会被格式化为inode table和block area 两个区域,以上图的方式来表达比较容易理解。读取文件的流程为:

  1. 操作系统根据根目录的相关资料可取得/etc这个目录所在的inode,并前往读取/etc这个目录的相关属性。
  2. 根据/etc的inode资料,可以取得/etc这个目录底下所有档案的关连数据是放在哪一个block当中,并前往该block读取档案的关连性内容;
  3. 根据上步可知目标文件的inode所在地,并前往该inode;
  4. 由上个步骤inode,可以读取目标文件的所有属性,并前往inode所指向的block区域,取得文件内容。
    注:目录最大的功能就是提供文件的关连性,在关连性里面,最主要的是文件名与inode对应的数据。

更多内容参考 :http://www.cnblogs.com/ggjucheng/archive/2012/08/22/2651641.html

Linux学习日记之磁盘与档案系统的更多相关文章

  1. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始

    我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...

  2. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

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

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

  4. Linux知识体系之磁盘与档案系统管理

    硬盘的物理组成:由许许多多的圆形硬盘盘所组成.宜居硬盘盘能够容纳的数据量,而有所谓的单碟或者多碟. 首先,硬盘里一定会有所谓的磁头(Head)在进行该硬盘上面的读写动作,而磁头是固定在机械手臂上的,机 ...

  5. Linux 学习日记 1

    这是我第一次系统地学习Linux,希望通过这个学习日记收获一些东西把-- @_@ Grub - 启动管理器   在启动时让用户选择要启动的系统.(但是windows比较霸道--重装windows后会将 ...

  6. Linux学习日记——字符处理

    (菜鸡学习日记 各种使用命令只列举了常用几种,发现错误望指正) 一.管道 在Linux 中,管道就是一个固定大小的缓冲区,大小为一页4K.它是一种通信的机制,可以使用管道符“ | ” 来连接进程,连接 ...

  7. LINUX学习之二磁盘篇

    1.Linux系统中,每个设备都被当成一个文件来对待.文件系统的最小单位是区块(Block) 设备 设备在Linux中的文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 / ...

  8. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  9. Linux学习日记-(一)

    一.为什么学习Linux 大学时开始接触Linux,最开始学习的是RedHat(小红帽),感觉Linux好像很久不见的老朋友,用起来很舒服(虽然我们用的是DotNet).很喜欢它的命令模式,让我能接触 ...

随机推荐

  1. 问题记录:JavaFx 鼠标滑轮滚动事件监听!

    问题描述: 在listview的item里面添加鼠标拖拽排序功能.代码如下: setOnMouseDragged(event -> { //设定鼠标长按0.3秒后才可拖拽 防止误操作 isCan ...

  2. CSS-用伪类制作小箭头(轮播图的左右切换btn)

    先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代 ...

  3. SQL 同时查看2个表

    1.要想上下查看2个表,一定要2个表显示的字段数量一致,格式一致 2.格式不一致就统一转换为字符串 -- to_char(s.saleid,'999999999') ,-- to_char(s.upd ...

  4. 将一张表的数据,拷贝到另一张表中sql

    两张表的字段一样 create table 目标表 as  select * from 原表;

  5. unity之自制玻璃啤酒瓶shader

    客户的要求如下 步骤: 1.进行玻璃瓶效果分析 效果如下:高光,类次表面散射(里层通透而外层较为暗淡),外层白色勾勒轮廓. 高光:unity内部提供光滑度参数,越光滑则高光效果越明显,啤酒瓶材质是属于 ...

  6. mac机快捷键操作

    1. 屏幕最大和缩小:command+ctrl +f 2.切换应用:comand+tab, 3.大小写转换:comand + 空格 4.切换到下/上一个标签页:同时按 ⌘-Option 和向右/左箭头 ...

  7. mySql 远程连接(is not allowed to connect to this MySQL server)

    如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL serve ...

  8. js构造函数的方法与原型prototype

    把方法写在构造函数内的情况我们简称为函数内方法,把方法写在prototype属性上的情况我们简称为prototype上的方法 函数内的方法: 使用函数内的方法我们可以访问到函数内部的私有变量,如果我们 ...

  9. 我的页面定制CSS代码(SimpleGamboge皮肤)

    我的页面定制CSS代码,针对博客园SimpleGamboge皮肤. 调整: 1.左上图片更换为自己的头像 2.扩大左侧栏宽度,缩小右侧主栏宽度宽度 3.扩大内容页面的评论区宽度,工具图标靠左 4.去广 ...

  10. 前端网老姚浅谈:怎么学JavaScript?

    作者:小不了链接:https://zhuanlan.zhihu.com/p/23265155来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信问我( ...