Overview of the IIS 6.0 Metabase (IIS 6.0)
The Internet Information Services (IIS) 6.0 metabase comprises two plaintext XML files that store IIS configuration values and schema. The metabase can be edited manually, by using IIS Manager, or it can be edited programmatically. In addition, the IIS 6.0 metabase is extensible in a highly efficient manner — as your IIS deployment grows, so does the metabase. By using an inheritance model, explicit declarations of duplicate values are avoided, which reduces overhead when IIS reads configuration values from the metabase.
The metabase is a hierarchical store of configuration information and schema that are used to configure IIS. The metabase configuration and schema for IIS 4.0 and IIS 5.0 were stored in a single binary file named MetaBase.bin, which was not easy to read or edit. IIS 6.0 replaces MetaBase.bin with two XML files named MetaBase.xml and MBSchema.xml. These files are stored on your computer in the systemroot\System32\Inetsrv folder. Only users who are members of the Administrators group can view and modify these files.
The metabase configuration file, MetaBase.xml, stores most of the IIS configuration. Some IIS configuration values are also stored in the Windows registry. If a configuration value is one that you might need to configure or change, or if you can access the setting in the IIS 6.0 user interface, then the setting is typically stored in the IIS metabase.
The MetaBase.xml file is organized in a hierarchical structure, which can vary depending on the choices that are made when IIS is installed and, if needed, reconfigured. When IIS is started or restarted, the configuration settings are read from MetaBase.xml and copied into the IIS cache in-memory, which is referred to as the in-memory metabase. When IIS Manager or programmatic interfaces are used to change IIS configuration, the changes are made to the in-memory metabase and persisted to MetaBase.xml after a previously configured number of changes, or according to regular time intervals.
In physical terms, the metabase is a combination of the MetaBase.xml and MBSchema.xml files and the in-memory metabase. The IIS configuration information is stored in the MetaBase.xml file, while the metabase schema is stored in the MBSchema.xml file. When IIS is started, these files are read by the storage layer and then written to the in-memory metabase through Admin Base Objects (ABOs), as shown in Figure 4.1.
Figure 4.1 Metabase Communication Layers
The metabase configuration and schema are stored in separate nodes in the in-memory metabase. The in-memory metabase itself resides in the IIS file cache in your computer's RAM. While IIS is running, changes that are made to the in-memory metabase are periodically saved to disk. The in-memory metabase is also saved to disk when IIS is stopped.