Linux文件系统类型

来自CloudWiki
跳转至: 导航搜索

文件系统(了解)

文件系统是在一个磁盘或分区组织存储文件或数据的方法,目的是便于查询和存取文件。如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等日志文件系统。

现在用的系统类型是ext4

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中文件名遵循以下约定:

  • 可以使用除“/”以外的所有ASCII字符,但不能包含空格和一些对shell来说有特殊含义的字符,如:
   !  $  #  *  &  ?  \  ,  ;  <  >  [  ]  {  }  (  )  ^  @  %  |  “  ‘  `
  • 文件名区分大小写字母, 如: sample.txt、Sample.txt和SAMPLE.TXT都代表不同的文件。
  • 文件名最长可达到256个字符。
  • 文件名以句点开头,则该文件就成为隐藏文件。

文件路径

在使用Linux命令对某个文件或目录操作时,一般应指明文件或目录所在的查找路径,否则默认对当前目录中的同名文件或目录进行操作。Linux中的路径可分为绝对路径和相对路径。

  • 绝对路径 如:“/usr/bin/zip”
  • 相对路径 如果当前目录是/usr,则zip的相对路径名为“bin/zip”,而local的相对路径名则为“local”。

Linux2-51.png

例:

cd /usr/bin/zip
cd bin/zip

这里再把昨天目录的基本命令回顾一下 ~

文件的分类

Linux系统将文件大致分成四种类型:普通文件、目录文件、链接文件和设备文件。

  • 普通文件
Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-] 
  • 目录文件
就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx] 
  • 链接文件
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]
  • 设备文件
在类Unix操作系统中,设备文件或特殊文件是设备驱动程序的接口,出现在文件系统中就好像它是普通文件一样。

参考文档:https://blog.csdn.net/rong09_13/article/details/79233956

(此处可添加练习)

文件系统修复(了解)

fsck命令

格式:fsck [选项]

功能:检查文件系统并尝试修复错误。

主要选项:

-a       自动修复文件系统,不询问任何问题。
-r       采用互动模式,在执行修复时询问问题。
-t       指定检查的文件系统。
-C    显示指令执行过程。

以下命令检查/dev/sda1设备,文件系统为ext4。

[root@rhel6 ~]# fsck -C –t ext4 /dev/sda1