7.7 文件存放

多媒体文件非常庞大,通常只写一次而读许多次,并且倾向于被顺序访问。它们的回放还必须满足严格的服务质量标准。总而言之,这些要求暗示着不同于传统操作系统使用的文件系统布局。我们在下面将讨论某些这样的问题,首先针对单个磁盘,然后是多个磁盘。

7.7.1 在单个磁盘上存放文件

最为重要的要求是数据能够以必要的速度流出到网络或输出设备上,并且没有颤动。为此,在传输一帧的过程中有多次寻道是极度不受欢迎的。在视频服务器上消除文件内寻道的一种方法是使用连续的文件。通常,使文件为连续的工作做得并不十分好,但是在预先精心装载了电影的视频服务器上它工作得还是不错的,因为这些电影后来不会再发生变化。

然而,视频、音频和文本的存在是一个复杂因素,如图7-3所示。即使视频、音频和文本每个都存储为单独的连续文件,从视频文件到音频文件,再从音频文件到文本文件的寻道在需要的时候还是免不了的。这使人想起第二种可能的存储排列,使视频、音频和文本交叉存放,但是整个文件还是连续的,如图7-19所示。此处,直接跟随第1帧视频的是第1帧的各种音频轨迹,然后是第1帧的各种文本轨迹。根据存在多少音频和文本轨迹,最简单的可能是在一次磁盘读操作中读入每一帧的全部内容,然后只将需要的部分传输给用户。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

阅读 ‧ 电子书库
图 7-19 每部电影在一个连续文件中交叉存放视频、音频和文本

这一组织需要额外的磁盘I/O读入不必要的音频和文本,在内存中还需要额外的缓冲区空间存放它们。可是它消除了所有的寻道(在单用户系统上),并且不需要任何系统开销跟踪哪一帧在磁盘上的什么地方,因为整部电影存放在一个连续文件中。以这样的布局,随机访问是不可能的,但是如果不需要随机访问,这点损失并不严重。类似地,如果没有额外的数据结构和复杂性,快进和快倒也是不可能的。

在具有多个并发输出流的视频服务器上,使整部电影成为一个连续文件的优点就失去了,因为从一部电影读取一帧之后,磁盘可能不得不从许多其他电影读入帧,然后才能返回到第一部电影。同样,对于一部电影既可以读也可以写的系统(例如用于视频生产或编辑的系统)来说,使用巨大的连续文件是很困难的,因而也是没有用的。