文件系统的功能规划

我们在规划文件系统的时候,需要考虑到以下几点:

  • 第一点,文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。
  • 第二点,文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。
  • 第三点,如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层。
  • 第四点,文件应该用文件夹的形式组织起来,方便管理和查询。
  • 第五点,Linux 内核要在自己的内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用。

image.png

image.png

文件系统相关命令行

  • fdisk -l
  • mkfs.ext3
  • mkfs.ext4

前面我们讲过,Linux 里面一切都是文件,那从哪里看出是什么文件呢?要从 ls -l 的结果的第一位标识位看出来。

  • - 表示普通文件;
  • d 表示文件夹;
  • c 表示字符设备文件,这在设备那一节讲解;
  • b 表示块设备文件,这也在设备那一节讲解;
  • s 表示套接字 socket 文件,这在网络那一节讲解;
  • l 表示符号链接,也即软链接,就是通过名字指向另外一个文件,例如下面的代码,instance 这个文件就是指向了 /var/lib/cloud/instances 这个文件

文件系统相关系统调用

当使用系统调用 open 打开一个文件时,操作系统会创建一些数据结构来表示这个被打开的文件, 文件描述符 fd(File Descriptor)。

在 Open 函数中,有一些参数:

  • O_CREAT 表示当文件不存在,创建一个新文件;
  • O_RDWR 表示以读写方式打开;
  • O_TRUNC 表示打开文件后,将文件的长度截断为 0。

总结时刻

image.png