“Linux文件系统类型”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
ext2与ext3文件系统
第2行: 第2行:
 
文件系统是在一个磁盘或分区组织存储文件或数据的方法,目的是便于查询和存取文件。如Windows系统使用的FAT32或NTFS就属于文件系统的不同类型。
 
文件系统是在一个磁盘或分区组织存储文件或数据的方法,目的是便于查询和存取文件。如Windows系统使用的FAT32或NTFS就属于文件系统的不同类型。
  
文件系统是基于存储设备的,一个磁盘设备可包含一个或多个文件系统。在Linux系统中,若想进入一个文件系统,首先要挂载(mount)文件系统;为了挂载(mount)文件系统,必须指定一个挂载点;一旦文件系统被挂载,就可对该文件系统进行存取访问了。
+
[[文件:linux3-1.png]]
 +
 
 +
'''用户层''':最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。
 +
 
 +
'''VFS层''':我们知道Linux分为用户态和内核态,用户态请求硬件资源需要调用System Call通过内核态去实现。用户的这些文件相关操作都有对应的System Call函数接口,接口调用 VFS对应的函数。
 +
 
 +
'''文件系统层''':不同的文件系统实现了VFS的这些函数,通过指针注册到VFS里面。所以,用户的操作通过VFS转到各种文件系统。文件系统把文件读写命令转化为对磁盘LBA的操作,起了一个翻译和磁盘管理的作用。
 +
 
 +
'''缓存层''':文件系统底下有缓存,Page Cache,加速性能。对磁盘LBA的读写数据缓存到这里。
 +
 
 +
'''块设备层''':块设备接口Block Device是用来访问磁盘LBA的层级,读写命令组合之后插入到命令队列,磁盘的驱动从队列读命令执行。Linux设计了电梯算法等对很多LBA的读写进行优化排序,尽量把连续地址放在一起。
 +
 
 +
'''磁盘驱动层''':磁盘的驱动程序把对LBA的读写命令转化为各自的协议,比如变成ATA命令,SCSI命令,或者是自己硬件可以识别的自定义命令,发送给磁盘控制器。Host Based SSD甚至在块设备层和磁盘驱动层实现了FTL,变成对Flash芯片的操作。
 +
 
 +
'''磁盘物理层''':读写物理数据到磁盘介质。
 +
 
 +
参考文档:https://blog.csdn.net/new0801/article/details/63687127
 +
 
 +
==文件系统的作用==
 +
===如果没有文件系统===
 +
 
 +
[[文件:linux3-100.jpg]]
 +
 
 +
先看看对于操作普通文件来说,意味着什么。
 +
 
 +
 <nowiki>我们要拿着一个小本本,上面记着,文件名,文件所在扇区以及文件大小。每次要读写文件,我们要人工查询这个账本,知道我们要的文件在哪里。如果文件A所在的扇区M已经写满了,随后的一个扇区M+1被文件B占用了,我们还想接着写文件A,怎么办呢?只能从其他地方找一个空闲扇区N,然后在账本上把N记录到文件A占用的扇区项中</nowiki>。
  
 
不同操作系统使用的文件系统一般是不相同的。Linux支持十多种不同的文件系统,对于Red Hat Linux,默认使用ext3和swap文件系统。
 
不同操作系统使用的文件系统一般是不相同的。Linux支持十多种不同的文件系统,对于Red Hat Linux,默认使用ext3和swap文件系统。
  
 +
[[文件:linux3-1.png]]
 +
 +
==文件系统的类型==
 
===ext2与ext3文件系统===
 
===ext2与ext3文件系统===
 
ext是第一个专门为Linux设计的文件系统类型,称为扩展文件系统。由于在稳定性、速度和兼容性方面存在许多缺陷,现已很少使用。
 
ext是第一个专门为Linux设计的文件系统类型,称为扩展文件系统。由于在稳定性、速度和兼容性方面存在许多缺陷,现已很少使用。

2018年6月19日 (二) 13:28的版本

文件系统

文件系统是在一个磁盘或分区组织存储文件或数据的方法,目的是便于查询和存取文件。如Windows系统使用的FAT32或NTFS就属于文件系统的不同类型。

Linux3-1.png

用户层:最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。

VFS层:我们知道Linux分为用户态和内核态,用户态请求硬件资源需要调用System Call通过内核态去实现。用户的这些文件相关操作都有对应的System Call函数接口,接口调用 VFS对应的函数。

文件系统层:不同的文件系统实现了VFS的这些函数,通过指针注册到VFS里面。所以,用户的操作通过VFS转到各种文件系统。文件系统把文件读写命令转化为对磁盘LBA的操作,起了一个翻译和磁盘管理的作用。

缓存层:文件系统底下有缓存,Page Cache,加速性能。对磁盘LBA的读写数据缓存到这里。

块设备层:块设备接口Block Device是用来访问磁盘LBA的层级,读写命令组合之后插入到命令队列,磁盘的驱动从队列读命令执行。Linux设计了电梯算法等对很多LBA的读写进行优化排序,尽量把连续地址放在一起。

磁盘驱动层:磁盘的驱动程序把对LBA的读写命令转化为各自的协议,比如变成ATA命令,SCSI命令,或者是自己硬件可以识别的自定义命令,发送给磁盘控制器。Host Based SSD甚至在块设备层和磁盘驱动层实现了FTL,变成对Flash芯片的操作。

磁盘物理层:读写物理数据到磁盘介质。

参考文档:https://blog.csdn.net/new0801/article/details/63687127

文件系统的作用

如果没有文件系统

Linux3-100.jpg

先看看对于操作普通文件来说,意味着什么。

 我们要拿着一个小本本,上面记着,文件名,文件所在扇区以及文件大小。每次要读写文件,我们要人工查询这个账本,知道我们要的文件在哪里。如果文件A所在的扇区M已经写满了,随后的一个扇区M+1被文件B占用了,我们还想接着写文件A,怎么办呢?只能从其他地方找一个空闲扇区N,然后在账本上把N记录到文件A占用的扇区项中。

不同操作系统使用的文件系统一般是不相同的。Linux支持十多种不同的文件系统,对于Red Hat Linux,默认使用ext3和swap文件系统。

Linux3-1.png

文件系统的类型

ext2与ext3文件系统

ext是第一个专门为Linux设计的文件系统类型,称为扩展文件系统。由于在稳定性、速度和兼容性方面存在许多缺陷,现已很少使用。

ext2是为解决ext文件系统的缺陷而设计的可扩展、高性能的文件系统,称为二级扩展文件系统。ext2于1993年发布,在速度和CPU利用率上具有较突出的优势,是GNU/Linux系统中标准的文件系统,支持256字节的长文件名,文件存取性能极好。


ext3是ext2的升级版本,兼容ext2,在ext2的基础上,增加了文件系统日志记录功能,称为日志式文件系统,是目前Linux默认采用的文件系统。

日志式文件系统在因断电或其他异常事件而停机重启后,操作系统会根据文件系统的日志,快速检测并恢复文件系统到正常的状态,并可提高系统的恢复时间,提高数据的安全性。若对数据有较高安全性要求,建议使用ext3文件系统。

日志文件系统是目前Linux文件系统发展的方向,除了Red Hat Linux采用的ext3外,常用的还有reiserfs和jfs等日志文件系统。

swap文件系统

swap用于Linux的交换分区。在Linux中,使用交换分区来提供虚拟内存,其分区大小一般是系统物理内存的2倍。

在安装Linux操作系统时,就应创建交换分区,它是Linux正常运行所必需的,其类型必需是swap。交换分区由操作系统自行管理。

vfat文件系统

vfat是Linux对Dos、windows系统下的FAT(包括FAT16和FAT32)文件系统的一个统称。Red Hat Linux支持FAT16和FAT32分区,也能在该系统中通过相关命令创建FAT分区。

NFS文件系统

NFS即网络文件系统,用于在Unix系统间通过网络进行文件共享,用户可将网络中NFS服务器提供的共享目录,挂载到本地的文件目录中,从而实现操作和访问NFS文件系统中的内容。


ISO9660文件系统

该文件系统是光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持刻录光盘。

返回 Linux基础