ugh.book

(singke) #1

264 The File System


for record-based operations: reading, writing, or locking a database record-
by-record. (This might be one of the reasons that most Unix database com-
panies bypass the Unix file system entirely and implement their own.)

More than simple database support, a mature file systems allows applica-
tions or users to store out-of-band information with each file. At the very
least, the file system should allow you to store a file “type” with each file.
The type indicates what is stored inside the file, be it program code, an exe-
cutable object-code segment, or a graphical image. The file system should
store the length of each record, access control lists (the names of the indi-
viduals who are allowed to access the contents of the files and the rights of
each user), and so on. Truly advanced file systems allow users to store
comments with each file.

Advanced file systems exploit the features of modern hard disk drives and
controllers. For example, since most disk drives can transfer up to 64K
bytes in a single burst, advanced file systems store files in contiguous
blocks so they can be read and written in a single operation. Most files get
stored within a single track, so that the file can be read or updated without
moving the disk drive’s head (a relatively time-consuming process). They
also have support for scatter/gather operations, so many individual reads or
writes can be batched up and executed as one.

Lastly, advanced file systems are designed to support network access.
They’re built from the ground up with a network protocol that offers high
performance and reliability. A network file system that can tolerate the
crash of a file server or client and that, most importantly, doesn’t alter the
contents of files or corrupt information written with it is an advanced sys-
tem.

All of these features have been built and fielded in commercially offered
operating systems. Unix offers none of them.

UFS: The Root of All Evil


Call it what you will. UFS occupies the fifth ring of hell, buried deep inside
the Unix kernel. Written as a quick hack at Bell Labs over several months,
UFS’s quirks and misnomers are now so enshrined in the “good senses” of
computer science that in order to criticize them, it is first necessary to warp
one’s mind to become fluent with their terminology.
Free download pdf