返回首页

文件系统是怎么通过路径来知道文件所在的磁盘位置?

279 2024-01-12 12:56 admin

一、文件系统是怎么通过路径来知道文件所在的磁盘位置?

简单的回答就是文件系统会将硬盘分成一个一个的“小块”(各文件系统对这个“小块”有不同的名字),并与底层磁盘位置的对应起来。当你访问一个文件时,文件系统会知道这个文件存在哪些“小块”中,并会去读取这些“小块”,硬盘会依照文件系统与硬盘位置的对应关系来访问实际存储的位置。


详细说的话了就要从硬盘的结构以及文件系统的定义来看。

硬盘

硬盘我主要介绍目前主流使用的磁碟式机械硬盘和固态硬盘。

磁碟式(机械)硬盘[1]

磁碟式的硬盘是由一个或多个磁碟堆叠而成的,在磁碟两个表面都会涂有磁性物质,这些磁性物质就是记录数据的地方。而磁头则负责读写数据的,磁头从磁碟最外圈向内运动读取数据,硬盘使用了多少个磁碟面就会有多少个磁头,所有的磁头都是连在一起一同运动的。

图片来源于维基百科

每个磁碟上会被划分成一个一个的同心圆,这个圆被称为磁道(track)。多个磁碟正反面的磁道(track)会在一个立体上形成类似与一个圆柱面的形状,被称为磁柱(cylinder)。磁道/磁柱在平面上看是一个圆,没有起始和结束,因此在此基础上会人为的把这个圆切分成等分的扇面,每个扇面在磁道/磁柱上会切分出圆弧来,这个圆弧被称为扇区(sector),这样再人为规定一个位置为起始位置,我们就能定位各个扇区的位置了。硬盘的直接操作就是传入这些参数,然后硬盘的固件会操作磁头,启动马达旋转磁碟,找到对应的数据读取。

磁道(track)、磁柱(cylinder)、磁头(head)、磁盘(platter)图片来自于维基百科
A:磁道track/磁柱cylinder,B扇面,C扇区。三个参数可以定义出数据在磁碟上的物理位置。图片来源于维基百科

当然磁碟上面不会真正的画着不同的线来区分这些,这些东西的边界都在硬盘固件中定义好了,硬盘自己知道如何去找到对应的位置。

以上每个扇区存储的数据大小有不同,但基本都在512字节。随着大容量硬盘的推出,很多磁盘开始支持4K扇区,甚至更大。而这个物理的结构与后面讲到的文件系统有很大的联系。

你肯定发现了一个问题,那就是对圆来讲,如果按照以上的划分,外圈的扇区圆弧长度会大于内圈的扇区长度,因为扇面的大小是一定的。而实际上外圈的扇区是可以存储更多的数据,因为磁性物质在盘面上分布式均匀的,内圈短的扇区能够存储那么多数据,外圈应该可以存更多才对。因此现代磁盘都采用了等密度扇区的存储方式,而弱化了扇面的概念。[2]

蓝色为人为划分的第一个扇区sector0。可以看到在磁碟直径方向上,扇区在同一角度上越往外数量越多。图片来源于维基百科

固态硬盘

固态硬盘使用了存储芯片替代了传统硬盘的机械结构,这么做有什么好处了?

  1. 芯片的读写时间非常短,不需要像硬盘一样先等待磁碟旋转到指定速度、磁头运动到指定位置再读取数据,这大大提高了数据的读取速度,减少了程序执行时的等待时间,这就是为什么固态硬盘加载操作系统和程序会大大提高执行的效率的原因。
  2. 机械硬盘由于有机械结构,而这些结构并非都是完全刚性的,它们在震动过大是会发生形变。如果这个发生在数据读取的时候,这个就会有磁碟被划伤的风险。因此机械硬盘的抗震动性一般都会弱于固态硬盘。当然,现代机械硬盘已实施了很多技术来保证硬盘的抗震动性能,并不是说机械硬盘就会在抗震性上差到哪里去,只是相对于固态硬盘而言。另一方面,固态硬盘的抗震性也不是无限的,大力总是能出奇迹的,大家应该明白。
  3. 由于减少了很多机械结构,固态比机械更加节能。

由于固态的结构并不像机械那样有圆盘和磁头等,固态的物理结构就不能像机械那样去寻址。但为了保持兼容性,不需要对上层程序进行更改,固态实际寻址的方法于机械的一模一样,程序只需要传入和机械硬盘一样的参数,固态内部的固件会将这些地址重新翻译并对应到固态内部的结构当中。这样就不需要去重新设计主板或者改变程序的算法。

文件系统

可以想象,如果靠我们直接在硬盘上存取一个文件,我们需要记住存在了什么位置,磁道号,扇面号和扇区号是多少、有几个扇区被用到了等等显然是不现实的。一个20G的硬盘,如果扇区大小是512字节,就会有多达四千多万个扇区,这对人的记忆来说可想而知是个多大的负担。因此人们设计了文件系统。

文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。[3]

我们如果要使用文件系统,必须先对硬盘进行分区(partition也可以不分区直接使用)然后格式化(format),这个格式化就是将文件系统用到的元数据(metadata)写入硬盘,元数据是依据文件系统的定义,存储的关于文件系统自身的数据,这些数据实际需要消耗存储空间的,因此分区格式化后的硬盘可用空间会变小,这是为了方便必须付出的代价。

我就说几个文件系统你就知道如何从文件系统映射到硬盘了。

FAT

FAT应该是现在使用最多,支持最广泛的文件系统了。FAT代表文件配置表(File Allocation Table),直白的讲就是描述一个文件如何存储的。目前使用最多的实际是FAT32,其中32代表寻址的长度。这个地址不是扇区地址,而是簇地址,这个簇是一个或多个连续扇区的集合,在分区的时候可以设置这个值的大小。这么做可以显著的提高文件系统支持的最大文件大小和文件系统支持的分区/硬盘大小。FAT理论上最大可以支持8T的文件或文件系统(32位只使用了28位)。

除去元数据以外,一个分区或者磁盘中所有的扇区都可以作为簇使用,每个簇在FAT中都会有一条记录。

如何寻址了?

FAT使用文件分配表来记录文件的信息,这个分配表中的每一条记录包含:

  • 链中下一个簇的地址
  • 一个特殊的簇链结束符(EOC,End Of Cluster-chain,或称End Of Chain)符号指示链的结束
  • 一个特殊的符号标示坏簇
  • 一个特殊的符号标示保留簇
  • 0来表示空闲簇

这样你在对一个文件时,只需要知道第一个簇在什么位置,就可以依次读下一个簇直到结束簇,将这个文件读完。那文件的第一个簇怎么知道了?答案就在一个特殊的文件表 — 目录表中。目录表就是我们所说的文件夹,他可以记录文件也可以记录另一个目录表(也就是子文件夹)。目录表里会定义这个文件/文件夹所在的第一个簇,你取得这个信息之后就去读这个簇,就知道文件的起始位置了。

知道了文件对应的簇的位置,也就知道文件存在哪些扇区了,就可以指示硬盘把这些数据从相应的扇区读取出来使用了。

FAT其实还有很多其他的方面没有在这里详细说,有兴趣的可以参看:

维基百科的相关条目

EXT2:

EXT2在Linux中使用,目前的版本已经进化到了EXT4,EXT2在解释你的问题时就够用了。

和FAT文件系统一样,EXT2也有元数据。

  • 实际的数据被存在数据块(block)中,每个数据块都有唯一编号。每个数据块又会对应到实际磁盘中扇区的位置。如你所想到的,这个数据块的大小是可以设置的,它的大小直接影响单个文件的大小和文件系统所能支持的最大大小。
  • 文件对应的信息存在inode中,一个文件对应一个inode,目录在linux中也是文件存在,因此单独的针对目录的inode。inode中记录这这个文件所有的inode的地址,因此只要读一下inode就可以知道这个文件所有的数据块存在什么位置。
  • superblock记录整个文件系统的整体信息。如文件系统大小,可用inode数等等。

因此当你想读一个文件时,找到它的inode就可以找到所有block的位置。

创建目录的时候也会分配一个inode和对应的block,block中就记录了这个目录下的所有文件的inode位置。

对这部分感兴趣的可以参考:

第七章、Linux 磁碟與檔案系統管理

结语

其实以上只是一个很简单的介绍。写的肯定是不全的,理解起来可能会有一定困难。感兴趣可以多善用搜索引擎去找相关的资料补充知识。

以上写出来也是为了巩固自己的知识,欢迎拍砖和找茬啊!

二、磁盘文件系统raw如何更改?

在RAW格式盘符上点右键,选“属性”,再选“安全”,将无用的用户删除,添加自己的用户名,再改一下权限即可。

若无安全选项,可以在文件夹选项(打开“我的电脑 ”—选“工具”菜单—再选“文件夹”选项)中,去掉“使用简单文件共享”前的勾,即可在NTFS格式的盘中点右键,属性菜单中显示安全选项。

三、FAT和NTFS文件系统设置与磁盘分区限制?

这两款文件系统的格式,一个是限制在fat32个字典里面,而NTFS相对来说是没有任何限制的,我们可以存4G以上的存储文件都可以,而SAT就只能是4G以下的文件存储传输。

四、磁盘存储与内存的关系是什么?

磁盘中的数据存取速度慢,跟不上CPU处理数据的速度。而内存的存取速度要快很多。磁盘中的数据先放入内存,内存再把他交给CPU来处理。这样我们使用起电脑来才会感到很快,否则,电脑像乌龟一样,就没人会使用了。内存就是一个暂时存储数据的地方。

当你关机的时候所有数据都是存在磁盘中的,当你开机运行程序,就是打开某个软件的时候,这个软件存在磁盘中的数据或文件会被调到内存中之后交给CPU执行。

比如:你用word编写文档 ,如果你不保存,你写的东西其实是在内存中存储,内存中的东西一关机就没了(断电之后内存就不能存东西了,而磁盘能,这是因为它们的存储介质不同,存储介质可以看作制作它们的材料),直到你保存了,这些文档才能存在磁盘中,等你关闭这个文档或下次开机时才能再次看见它。

当你运行的程序少时看不出内存大小的影响,运行的程序一多,内存小就周转不过来,速度就慢了,所以有时电脑速度慢也与内存小有关,这时就需要加一条内存了。

现在你该了解了吧,磁盘和内存是一个都不能少的。磁盘大了,你能装的东西就多了,内存大了你的电脑运动得就快了。没有磁盘你就不能保存任何数据,没有内存,你保存的数据就没法被处理。

五、Linux文件系统与Windows文件系统的特点与区别?

1、开放性:所谓的开放性就是Linux操作系统属于开放的系统,可以对其程序进行编辑修改。而Windows系统受到权限保护,只能微软内部进行开发以及修改。

2、价格不同:Linux系统是免费的,Windows系统是收费的。

3、文件格式不同:Windows操作系统内核是NT,而linux是shell;Windows 硬盘文件格式是fat32或NTSF,而linux需要的文件格式是ext2或ext3。

六、linux文件系统与windows文件系统的差异?

两个问题都很莫名其妙……因为根本就没问到点上。

Linux 和 Windows 的文件系统没区别,因为有区别的是他们所使用的文件系统,Linux 下面的文件系统有很多,都是兼容 POSIX 规范的 UNIX 权限系统的文件系统。

Windows 下面是部分兼容 POSIX 规范的文件系统,其中 FAT 系列的设计非常简单,不兼容 POSIX 文件系统规定,NTFS 很复杂,不过仅仅是文件系统兼容 POSIX ,但 Windows 本身不完全兼容 POSIX 规范。

如果非要说“LINUX和windows文件系统有何区别?? ”那么,一个是完全 POSIX 的,一个不是完全 POSIX 的

剩下的那个“LINUX文件有那些类”不知道你在问什么。

七、磁盘文件系统:RAW是什么意思?

看分区属性显示文件格式为 问题:打开分区出现“文件或目录损坏,看分区属性显示文件格式为RAW,可用空间和已使用空间为0 解决方法: 方法1 : 1:打开我的电脑,选工具菜单,再选文件夹选项中,点击查看标签,去掉“使用简单文件共享(推荐)”前的勾,即可 1:进“控制面板”找到“管理工具”,将其打开,在将“本地安全策略”打开,打开"本地策略"在将“安全选项”打开,在右面窗口找到“网络访问:本地帐户的共享和安全模式”后的“仅来宾”改为“经典”。 2:退出回到我的电脑,在D盘上点右键找“安全”标签,将其它帐户删掉,然后添加本计算机的用户即可。 方法2 拔该硬盘挂到其他电脑上或用WINDOWSPE等光盘版的系统引导启动后再重新正常引导rBhX[S 下面从网上搜索的资料。 问题1:我的电脑装有双硬盘,其中主盘80G分四个区(NTFS),副盘希捷40G分一个区(NTFS),最近副盘格式突然变成了RAW,无法对硬盘进行访问,因为里面数据比较重要,所以不打算格式化,请高手指点如何恢复硬盘格式而不损坏里面的数据。先谢了! 问题2:昨天重新安装的WINXP HOME SP1,不知为何,移动硬盘一插上就不对了,60G移动硬盘文件系统变成RAW格式!一点击就提示我格式化,里面有很重要的数据。请问各位高手还有没有救?真真谢谢了! 问题3:我的U盘变成了RAW格式,无法解决XP下显示格式是RAW,可用空间和已用空间都为0,在磁盘管理显示状态不可用,不知怎么回事,希望各位老大帮小弟一把,小弟给各位老大鞠躬了。 以上问题都是分区由于某种原因造成了格式变化成RAW了,具体原因可能有很多,下面有几种方法解决的方法也有几个,遇到此问题的朋友根据情况来解决吧! *方案1、2只对原系统是NTFS格式有效。Win2K和WinXP用户可以尝试。请注意! 解决方案1:系统权限的问题1(原系统是NTFS格式出现问题) 在RAW格式盘符上点右键,选“属性”,再选“安全”,将无用的用户删除,添加自己的用户名,再改一下权限即可。若无安全选项,可以在文件夹选项(打开“我的电脑”—选“工具”菜单—再选“文件夹”选项)中,去掉“使用简单文件共享”前的勾,即可在NTFS格式的盘中点右键,属性菜单中显示安全选项。 解决方案2:系统权限的问题2(原系统是NTFS格式出现问题) 进“控制面板”找到“管理工具”,将其打开,在将“本地安全策略”打开,在将“安全选项”打开,在右面窗口找到“网络访问:本地帐户的共享和安全模式”后的“仅来宾”改为“经典”,退出回到我的电脑,在变成RAW的盘上点右键找“安全”标签,将其乱码删掉,然后添加本计算机的用户即可。 解决方案3:修改盘符的方法 把RAW的盘符改一下,如果是C、D、E、F,F是RAW盘符,就把F改成E,就可以恢复了。 解决方案4:利用EasyRecovery软件 使用EasyRecovery软件,点软件左边的上数第二个按钮“Data Recovery”进入。再点右边框里第一个“Advanced Recovery”,再然后你会看到软件左边里列出你电脑的所有盘,选中那个不能用的盘,然后一路点“NEXT”,电脑会分析你那个盘里存在的数据,然后找出硬盘的文件,(甚至它会找到以前你不想要的已经删掉的文件),等全部都找到后,左边会列出那个盘找的的文件,你选择要备份的(一般已经默认全选),然后又是“NEXT”,把数据备份到另一个之前已经准备好的容量足够的盘。最后把这个盘格式化,一般电脑格式化成FAT32的。最后把备份好的数据重新移回到这个格式化了的盘就OK了。该软件会将一部分文件自动保存在一个名为“LOSTFILE”的文件夹中。 不懂E文的话最好下个中文破解版的,这个破解版跟别的软件不同,安装打开后要在软件界面那个“properties”属性里更改语言为中文才会变成中文界面。 注意:使用方案4有些风险,请小心! 这只是硬盘的主引导信息出现问题 具体方法如下: : 1、使用EasyRecovery Pro 6.06,选择数据恢复---》Advanced Recovery(选用高级选项自定义数据恢复功能); 2、选择已变为RAW格式的盘符,点击下角的高级选项; 3、在文件系统扫描中,文件系统选“NTFS",点高级扫描,选择右下角的“高级选项”,把簇大小和数据起始位置都设为0; 4、点击分区设置,使用MFT方式(这点一定不能错);然后确定; 5、点击下一步,开始扫描文件系统,然后就是等~~,要的时间比较长,要耐心。完成后就会发现找到了一个NTFS的盘符,再点击找到的盘符,开始扫描; 6、扫描完成后你就会发现所有的文件都已找到,然后点击恢复,选择一个可用的盘来存你恢复的文件就行; 7、最后格式化出问题的盘~~~把恢复的文件拷回去~~~~~~OK 一切都完好如初

八、本地磁盘文件系统可以改吗?

可以改。

,FAT32转化成NTFS格式的方法:

开始--运行,输入Convert

X:/fs:ntfs--回车。(转化

对文件、系统都没有影响。)X盘的fat32格式就转化成了NTFS格式

。X代表要转化格式的盘符(如:C、D、E、F等)

2,但是,NTFS格式不能转化成FAT32格式。要使某盘(例如D盘)的NTFS格式变成FAT32格式,必须重新将D盘

格式化。方法是:重启电脑按del进入bios设置光盘启动

按f10退出。然后放入winXP安装光盘。重启电脑,当进程到格式化分

区D时选择FAT32格式把D格掉。原NTFS格式就去掉了,取

而代之的就是FAT32格式了。

九、磁盘文件系统:RAW是什么意思?

RAW文件系统是一个没有被NT文件系统(FAT或NTFS)格式化的磁盘分区. 一般来说有这几种可能造成正常文件系统变成raw文件系统: 1、如果是刚刚重装系统了 ,发现有几个盘都是未格式化,那么,原因很可能是这几个分区的文件系统都是EXFAT。

操作系统没及时更新不支持新的文件系统 解决方法,用360修复下系统漏洞(或者直接安装EXFAT补丁)并重启电脑就行了。

2、如果点击盘符电脑会很卡,则说明这个盘符里关键区域有坏扇区难以读取,一般需要专业工具把整个盘镜像出去再去恢复数据。

3、如果是无缘无故的出现未格式化,那么很可能是文件系统结构损坏,具体哪里被破坏了需要手工分析。

4、如果是U盘或内存卡出现未格式化,需要右击我的电脑-管理-磁盘管理,看下设备状态是否良好。

如果是良好是软故障。

如果无媒体或不可读取那么是硬件故障。

十、如何更改虚拟机磁盘文件系统?

要更改虚拟机磁盘文件系统,可以按照以下步骤进行操作:

1. 在虚拟机中打开虚拟磁盘管理器。在Windows操作系统中,可以通过按下Win+R键,输入“diskmgmt.msc”并按下Enter键打开虚拟磁盘管理器。在Linux操作系统中,可以通过打开终端窗口,输入“sudo virt-manager”并按下Enter键打开虚拟机管理器,然后选择要更改文件系统的虚拟磁盘,并单击“编辑”按钮打开虚拟磁盘编辑器。

2. 在虚拟磁盘编辑器中,选择要更改文件系统的虚拟磁盘,然后单击“编辑”按钮。

3. 在虚拟磁盘编辑器中,选择“文件系统”选项卡,然后选择要更改为的文件系统类型。

4. 如果要更改虚拟磁盘的分区表,可以选择“分区表”选项卡,然后单击“编辑”按钮。在分区表编辑器中,可以更改分区表的格式、分区大小等信息。

5. 确认更改后,单击“保存”按钮,然后关闭虚拟磁盘编辑器。

6. 重新启动虚拟机,并在虚拟机中打开虚拟磁盘管理器。在虚拟磁盘管理器中,选择要更改文件系统的虚拟磁盘,然后单击“格式化”按钮,选择要使用的文件系统类型,并单击“开始”按钮进行格式化。

7. 格式化完成后,虚拟磁盘的文件系统类型就会更改为所选的文件系统类型。

需要注意的是,更改虚拟磁盘文件系统可能会导致数据丢失或损坏,因此在更改文件系统之前,请务必备份虚拟磁盘中的数据。此外,更改文件系统类型可能需要重新安装操作系统或其他应用程序,因此在更改文件系统之前,请确保您已经备份了重要数据。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片

网站地图 (共14个专题33284篇文章)

返回首页