文件系统的功能规划
我们在规划文件系统的时候,需要考虑到以下几点:
- 第一点,文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。
- 第二点,文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。
- 第三点,如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层。
- 第四点,文件应该用文件夹的形式组织起来,方便管理和查询。
- 第五点,Linux 内核要在自己的内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用。
文件系统相关命令行
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。