The ever increasing gap between processor and memory speeds on one side and disk systems on the other side has exposed the I/O subsystems as a bottleneck for the applications with intensive I/O requirements. Consequently, file systems, as low-level managers of storage resources, have to offer flexible and efficient services in order to allow a high utilization of disks. A storage device is typically seen by users as a contiguous linear space that can be accessed in blocks of fixed length. It is obvious that this simple uniform interface can not address the requirements of complex multi-user, multi-process or distributed environments. Therefore, file systems have been created as a layer of software that implements a more sophisticated disk management. The most important tasks of file systems are: