Concepts and Terminology for Disks and Filesystems

This case study uses the terminology from the most excellent IRIX Admin: Disks and Filesystems IRIS InSight book by Susan Ellis, Dany Galgani, and Gloria Ackley, which you'll find at the above link and also in eoe.books.IA_DiskFiles. Refer to the "Logical Volume Concepts" chapter for some good pictures.

Here we will summarize the terminology from that InSight book and fill in many additional assumptions and facts that are relevant to this case study.

This document ignores efs. This document ignores lv, which is an obsolete efs-based logical volume scheme.

Disks and Partitions

A physical disk device that sits on a bus (usually a SCSI bus) and has one bus ID is called a disk. Each hard drive inside your SGI is one disk. A disk array is an external device which may contain many hard drives, but looks like one disk (has one ID) to a connected SGI machine. Internally the array may have many of the concepts we'll describe below (striping, plexing, etc.) but to the SGI, it's just one disk (usually a really fast one). A disk enclosure or disk vault is an external device which also contains disk drives, but merely acts as an extension of your SCSI bus; each disk drive has a separate ID to the SGI machine, and thus is a different disk.

You divide a disk into partitions with fx. You can see how a disk is partitioned with prtvtoc or fx.

XLV Logical Volumes

Although you can access a partition directly, video disk I/O often demands more storage or bandwidth than one disk partition can deliver. In this case you use XLV to group many partitions together into a logical volume using xlv_make. Here is the key example picture, stolen outright from the IRIX Admin: Disks and Filesystems IRIS InSight book:

Your disks, divided into partitions, appear at the bottom of this diagram. Like a file, a partition is an addressible object: it has a size, and you can think of reading or writing at any offset (or address) from zero up to its size. The lower three layers of XLV work by taking a group of addressible objects (partitions or other XLV addressible objects) and making them look like one addressible object. Each layer maps the address range of underlying objects into its own address range.

At the lowest layer of XLV, you group one or more partitions together into an addressible object called a volume element.

At the next layer up, you concatenate the address range of one or more volume elements into the address range of a plex, as is done within the data subvolume in the diagram above. This performs a function very similar to multipartition volume elements, but one level higher. For example, if you are using striping and you want to create a volume that is larger than any individual striped volume element, you can concatenate several volume elements together into a plex by mapping them contiguously into the plex's address range.

Then you specify one or more plexes for a logical subvolume. The plex (also called the mirror) is the level of redundancy. The diagram above includes a logical subvolume (the log subvolume in this case) with two plexes, meaning anything written to the logical subvolume will be replicated in each plex for reliability. For our purposes, a logical subvolume's address range is the same as that of each of its plexes. If you have a logical subvolume with more than one plex, XLV sometimes lets you use plexes with "holes" in their address range that do not map to any volume element, but this is beyond the scope of this document.

The logical subvolume is the highest level of addressible object in XLV. A logical volume is a collection of separately addressed subvolumes, consisting of a data subvolume, an optional real-time subvolume, and an optional log subvolume. These subvolumes are like three different files: they have independent sizes and address ranges and are not logically concatenated, striped, or replicated. We'll describe the purpose of these subvolumes below.

This document makes the following simplifying assumptions about your XLV setup:

Accessing Partitions and Logical Volumes

When you access disks from IRIX tools or your program, you access either partitions or logical volumes. There are two ways you can access either of these objects: This document assumes that your application accesses one filesystem or one raw device file to do its video I/O.

XFS Filesystems

An XFS filesystem has three separately addressed sections: a log section, a data section, and an optional real-time section. Here is more on the three sections: If you need to stripe disks together to get enough bandwidth to read and write uncompressed video, you want to create striped volume elements in either the data or real-time subvolumes of your XLV logical volume, since that is where your file data will get stored when you create an XFS filesystem on the XLV logical volume.