UNIX高级环境编程(17)文件系统 < 雨后 >

时间:2016-06-02 21:33:46   收藏:0   阅读:179

来点绿色放松一下眼睛吧 :)

技术分享

 

文件系统是对文件和目录的组织集合。

 

一 设备文件

设备文件和系统的某个设备相对应。

设备驱动程序

设备的类型

设备ID

 

二 磁盘和分区

2.1 磁盘驱动器

磁盘驱动器是一种机械装置,由一个或多个高速旋转的盘片组成。通过在磁盘上快速移动读写磁头,便可获取/修改磁盘表面的磁性编码信息。

其结构见下图。

技术分享

 

技术分享

磁道:磁盘表面的信息存储在称为磁道的一组同心圆上。

扇区:磁道被划分为若干扇区。

物理块:扇区包含一系列物理块,物理块的容量一般为512字节,代表了驱动器可以读写的最小信息单位。

寻道时间:读写磁盘信息,首先,磁头要移动到相应磁道,这段时间叫做寻道时间。

旋转延迟:然后,驱动器要等待相应的扇区旋转到磁头下。

传输时间:最后,从所请求的块上传输数据。

执行上述操作所耗费的时间总量通常以毫秒为单位。

 

2.1 磁盘分区

分区:可将每块磁盘换分成一个或多个不重叠的分区。内核则将每个分区视为位于/dev路径下的单独设备。

磁盘分区可容纳任何类型的信息,通常包括:

可使用Linux专有文件/proc/swaps来查看系统中当前已激活交换区域的信息,其中包括每个交换区域的大小,以及在用交换区域的个数。

 

三 文件系统

文件系统是对常规文件和目录的组织集合。

Linux的强项之一是支持种类繁多的文件系统。

以ext2为例来介绍文件系统。

3.1 文件系统结构

逻辑块:在文件系统中,用来分配空间的基本单位是逻辑块,也就是文件系统所在物理设备上若干连续的物理块。在ext2文件系统上,逻辑块的大小为1024、2048或4096。

磁盘分区和文件系统之间的关系如下图所示

技术分享

文件系统由以下几个部分组成:

  1. 引导块:总是作为文件系统的首块。引导块不为文件系统所用,只是包含用来引导操作系统的信息。
  2. 超级块:紧随引导块之后的一个独立块,包含与文件系统相关的参数信息,包括:
    1. i节点表容量
    2. 文件系统中逻辑块的大小
    3. 以逻辑块计,文件系统的大小
  3. i节点表:文件系统中的每个文件或目录在i节点表中都对应着唯一一条记录。这条记录登记了和文件相关的各种信息。
  4. 数据块:文件系统的大部分空间都用于存放数据,以构成驻留于文件系统之上的文件和目录。

3.2 i节点

i节点维护的信息如下

ext2中的i节点和数据块指针

文件的数据块不一定连续,为了定位文件数据块,inode维护了一组指针,如下图所示:

技术分享

在ext2中,每个inode包含15个指针,其中

这样设计的意图是:

四 虚拟文件系统(VFS)

Linux所支持的各种文件系统,其实现细节均不相同。虚拟文件系统是一种内核特性,通过为文件系统操作创建抽象层来解决各种文件系统之间的差异问题。

技术分享

原理:

这样一来,程序只需要理解VFS接口,而无需过问具体文件系统的实现细节。

五 日志文件系统

如果系统突然崩溃,对文件的更新的只完成了一半,文件系统元数据也将处于不一致状态。

而系统对文件系统进行一致性检查需要遍历整个文件系统,这是一个非常耗时的操作。

日志文件系统就是为了解决这个问题。具体做法是

需要注意的是,通常日志文件系统知会确保元数据的一致性,不会记录文件数据。因此,一旦系统崩溃,可能会造成数据丢失。

六 单根目录层级和挂载点

Linux上的所有文件系统中的文件都位于单根目录树下,其他文件系统都挂载在根目录下。

挂在命令:

mount device directory

下面通过实例来说明挂载后的文件系统的层级关系。

不带任何参数来执行mount命令,可以列出当前已挂载的文件系统。

技术分享

挂载点和设备的映射关系如下

技术分享

七 虚拟内存文件系统:tmpfs

Linux支持驻留于内存中的虚拟文件系统,对于应用程序来说,此类文件系统看起来与任何其他文件系统别无二致,不过二者的重要的差别是:

挂在虚拟文件系统命令如下:

mount -t tmpfs source target
?
其中source只有在/proc/mounts中可以看到,没有其他用途。
例如:
技术分享
 
除了用于用户应用程序以外,tmpfs文件系统还有以下两个特殊用途:
  • 由内核内部挂在的隐形tmpfs文件系统,用于实现System V共享内存和共享匿名内存映射。
  • 挂在与/dev/shm的tmpfs文件系统,为glibc用以实现POSIX共享内存和POSIX信号量。
 
 
参考资料
 
《Linux/Unix系统编程手册(上册)》 第14章

原文:http://www.cnblogs.com/suzhou/p/5554199.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!