6.6 Crosscutting Issues ■ 391
as a single virtual “disk.” In a RAID disk array, the logical unit is configured as a
particular RAID layout, such as RAID 5. A physical volume is the device file
used by the file system to access a logical unit. A logical volume provides a level
of virtualization that enables the file system to split the physical volume across
multiple pieces or to stripe data across multiple physical volumes. A logical unit
is an abstraction of a disk array that presents a virtual disk to the operating sys-
tem, while physical and logical volumes are abstractions used by the operating
system to divide these virtual disks into smaller, independent file systems.
Having covered some of the terms for collections of blocks, the question
arises, Where should the file illusion be maintained: in the server or at the other
end of the storage area network?
The traditional answer is the server. It accesses storage as disk blocks and
maintains the metadata. Most file systems use a file cache, so the server must
maintain consistency of file accesses. The disks may be direct attached—found
inside a server connected to an I/O bus—or attached over a storage area network,
but the server transmits data blocks to the storage subsystem.
The alternative answer is that the disk subsystem itself maintains the file
abstraction, and the server uses a file system protocol to communicate with storage.
Example protocols are Network File System (NFS) for UNIX systems and Com-
mon Internet File System (CIFS) for Windows systems. Such devices are called
network attached storage (NAS) devices since it makes no sense for storage to be
directly attached to the server. The name is something of a misnomer because a
storage area network like FC-AL can also be used to connect to block servers. The
term filer is often used for NAS devices that only provide file service and file stor-
age. Network Appliances was one of the first companies to make filers.
The driving force behind placing storage on the network is to make it easier
for many computers to share information and for operators to maintain the shared
system.
Asynchronous I/O and Operating Systems
Disks typically spend much more time in mechanical delays than in transferring
data. Thus, a natural path to higher I/O performance is parallelism, trying to get
many disks to simultaneously access data for a program.
The straightforward approach to I/O is to request data and then start using it.
The operating system then switches to another process until the desired data
arrive, and then the operating system switches back to the requesting process.
Such a style is called synchronous I/O—the process waits until the data have
been read from disk.
The alternative model is for the process to continue after making a request,
and it is not blocked until it tries to read the requested data. Such asynchronous
I/O allows the process to continue making requests so that many I/O requests
can be operating simultaneously. Asynchronous I/O shares the same philosophy
as caches in out-of-order CPUs, which achieve greater bandwidth by having
multiple outstanding events.