The last of the three fundamental storage network functions is filing. In general, filing's role is to organize how data is structured in a storage address space as well as to represent it to applications and users. In practice, two types of filing products are in the market: file systems and databases. File systems are closely associated with operating systems and have very close interactions with them. Considering how much storage activity there can be within a system, it is imperative that the file system and operating system work very well together without errors. In most cases, they appear to be part of the same product, but that does not have to be the case. It is possible to use file systems that are not part of the operating system as long as the operating system supports third-party file systems. Most modern operating systems do, including most UNIX systems, Windows server systems, and Linux. Space AllocationOne way to understand the differences between filing systems (including databases) and operating systems is to separate them by the system functions they manage. Operating systems manage the sequence of processing events in the system. In other words, they schedule all work in the system and establish the proper environment for each task. Filing systems manage the placement of data in storage address spaces. In general,
One of the primary responsibilities of the filing function is space allocation. This involves figuring out what storage blocks to use when new data is being written or when data is changed or updated, as well as what to do with blocks that might be freed when objects are changed or deleted. While storing functions perform the actual operations of reading and writing data, filing functions determine what those operations should be. One of the challenges in space allocation is creating a system that provides consistent performance over an extended period of time as data objects are created, updated, and deleted. In order to achieve consistent performance, the filing system spreads data over the storage address space, providing a level of fairness to all data and its associated applications. Filing's Role in Access Control and SecurityAnother key role of filing is access control. Filing systems often have attributes or access control lists (ACLs) that determine who has the authority to access data objects. To date, storing-level processes do not have the ability to provide access control, as storing level processes have no contextual information about data objects. NOTE DAS storing products never had to have access control capabilities, because all security functions were provided by the filing system and other system security functions. However, with SANs, it has become necessary for storage subsystems to provide some amount of access control to protect data resources. One storage technology used for access control is called LUN masking, and it is described in Chapter 5, "Storage Subsystems." Access controls for storage is an area that undoubtedly will see a great deal of development in the years to come. File I/OAs described previously, storing functions work with storage address spaces made up of contiguous, fixed-length block locations. To maintain performance expectations, filing systems logically fragment this neat and orderly structure by scattering data objects throughout the address space. Fortunately, the details of this data scattering are masked from users and applications by the file system. File systems provide friendlier and more intuitive structures for accessing data, such as a directory tree and filenames. Applications are developed to access data through these structures using published interfaces that are easily invoked in the application's code. This type of data access is called file I/O. While applications are abstracted from storing-level details, they know everything about the byte structure within their data files. For example, the header information in a file might be 100 bytes and the data might be 2000 bytes. Applications today have many different types of data within their files, and it is essential that they are able to access the various discrete sections of files efficiently and accurately. Therefore, file systems allow applications to locate data within the file by its byte location or byte range within the file. Byte ranges can be expressed by the number of bytes from the beginning or end of a file as well as by offsets of bytes from these locations. For example, an application might issue a request to read 50 bytes of a file starting at the 50th byte, as shown in Figure 2-4. Figure 2-4. An Application Accesses Bytes 50 to 99 in a FileThe file system bears the responsibility of converting these byte-range requests to detailed storing data access operations.
|