# Adding and removing a segment manager

This chapter discusses when to use a segment manager, what the different types of segment managers are, how to add a segment manager to a disk, and how to remove a segment manager.

## When to add a segment manager

Adding a segment manager to a disk allows the disk to be subdivided into smaller storage objects called disk segments. The `add` command causes a segment manager to create appropriate metadata and expose freespace that the segment manager finds on the disk. You need to add segment managers when you have a new disk or when you are switching from one partitioning scheme to another.

EVMS displays disk segments as the following types:

- Data: a set of contiguous sectors that has been allocated from a disk and can be used to construct a volume or object.

- Freespace: a set of contiguous sectors that are unallocated or not in use. Freespace can be used to create a segment.

- Metadata: a set of contiguous sectors that contain information needed by the segment manager.

## Types of segment managers

There are seven types of segment managers in EVMS: DOS, GPT, S/390, Cluster, BSD, MAC, and BBR.

### DOS Segment Manager

The most commonly used segment manager is the DOS Segment Manager. This plug-in provides support for traditional DOS disk partitioning. The DOS Segment Manager also recognizes and supports the following variations of the DOS partitioning scheme:

- OS/2: an OS/2 disk has additional metadata sectors that contain information needed to reconstruct disk segments.

- Embedded partitions: support for BSD, SolarisX86, and UnixWare is sometimes found embedded in primary DOS partitions. The DOS Segment Manager recognizes and supports these slices as disk segments.

### GUID Partitioning Table (GPT) Segment Manager

The GUID Partitioning Table (GPT) Segment Manager handles the new GPT partitioning scheme on IA-64 machines. The Intel Extensible Firmware Interface Specification requires that firmware be able to discover partitions and produce logical devices that correspond to disk partitions. The partitioning scheme described in the specification is called GPT due to the extensive use of Globally Unique Identifier (GUID) tagging. GUID is a 128 bit long identifier, also referred to as a Universally Unique Identifier (UUID). As described in the Intel Wired For Management Baseline Specification, a GUID is a combination of time and space fields that produce an identifier that is unique across an entire UUID space. These identifiers are used extensively on GPT partitioned disks for tagging entire disks and individual partitions. GPT partitioned disks serve several functions, such as:

- keeping a primary and backup copy of metadata

- replacing msdos partition nesting by allowing many partitions

- using 64 bit logical block addressing

- tagging partitions and disks with GUID descriptors

The GPT Segment Manager scales better to large disks. It provides more redundancy with added reliability and uses unique names. However, the GPT Segment Manager is not compatible with DOS, OS/2, or Windows®.

### S/390 Segment Manager

The S/390 Segment Manager is used exclusively on System/390 mainframes. The S/390 Segment Manager has the ability to recognize various disk layouts found on an S/390 machine, and provide disk segment support for this architecture. The two most common disk layouts are Linux Disk Layout (LDL) and Common Disk Layout (CDL).

The principle difference between LDL and CDL is that an LDL disk cannot be further subdivided. An LDL disk will produce a single metadata disk segment and a single data disk segment. There is no freespace on an LDL disk, and you cannot delete or re-size the data segment. A CDL disk can be subdivided into multiple data disk segments because it contains metadata that is missing from an LDL disk, specifically the Volume Table of Contents (vtoc) information.

The S/390 Segment Manager is the only segment manager plug-in capable of understanding the unique S/390 disk layouts. The S/390 Segment Manager cannot be added or removed from a disk.

### Cluster segment manager

The cluster segment manager (CSM) supports high availability clusters. When the CSM is added to a shared storage disk, it writes metadata on the disk that:

- provides a unique disk ID (guid)

- names the EVMS container the disk will reside within

- specifies the cluster node (nodeid) that owns the disk

- specifies the HA cluster (clusterid)

This metadata allows the CSM to build containers for supporting failover situations. It does so by constructing an EVMS container object that consumes all shared objects discovered by the CSM and belonging to the same container. These shared storage objects are consumed by the container. A single segment object is produced by the container for each consumed storage object. A failover of the EVMS resource is then accomplished by simply reassigning the container to the standby cluster node and having that node re-run its discovery process.

### BSD segment manager

BSD refers to the Berkeley Software Distribution UNIX® operating system. The EVMS BSD segment manager is responsible for recognizing and producing EVMS segment storage objects that map BSD partitions. A BSD disk may have a slice table in the very first sector on the disk for compatibility purposes with other operating systems. For example, a DOS slice table might be found in the usual MBR sector. The BSD disk would then be found within a disk slice that is located using the compatibility slice table. However, BSD has no need for the slice table and can fully dedicate the disk to itself by placing the disk label in the very first sector. This is called a "fully dedicated disk" because BSD uses the entire disk and does not provide a compatibility slice table. The BSD segment manager recognizes such "fully dedicated disks" and provides mappings for the BSD partitions.

### MAC segment manager

Apple-partitioned disks use a disk label that is recognized by the MAC segment manager. The MAC segment manager recognizes the disk label during discovery and creates EVMS segments to map the MacOS disk partitions.

### BBR segment manager

The bad block replacement (BBR) segment manager enhances the reliability of a disk by remapping bad storage blocks. When BBR is added to a disk, it writes metadata on the disk that:

- reserves replacement blocks

- maps bad blocks to reserved blocks

Bad blocks occur when an I/O error is detected for a write operation. When this happens, I/O normally fails and the failure code is returned to the calling program code. BBR detects failed write operations and remaps the I/O to a reserved block on the disk. Afterward, BBR restarts the I/O using the reserve block.

Every block of storage has an address, called a logical block address, or LBA. When BBR is added to a disk, it provides two critical functions: remap and recovery. When an I/O operation is sent to disk, BBR inspects the LBA in the I/O command to see if the LBA has been remapped to a reserve block due to some earlier I/O error. If BBR finds a mapping between the LBA and a reserve block, it updates the I/O command with the LBA of the reserve block before sending it on to the disk. Recovery occurs when BBR detects an I/O error and remaps the bad block to a reserve block. The new LBA mapping is saved in BBR metadata so that subsequent I/O to the LBA can be remapped.

## Adding a segment manager to an existing disk

When you add a segment manager to a disk, the segment manager needs to change the basic layout of the disk. This change means that some sectors are reserved for metadata and the remaining sectors are made available for creating data disk segments. Metadata sectors are written to disk to save information needed by the segment manager; previous information found on the disk is lost. Before adding a segment manager to an existing disk, you must remove any existing volume management structures, including any previous segment manager.

## Adding a segment manager to a new disk

When a new disk is added to a system, the disk usually contains no data and has not been partitioned. If this is the case, the disk shows up in EVMS as a compatibility volume because EVMS cannot tell if the disk is being used as a volume. To add a segment manager to the disk so that it can be subdivided into smaller disk segment objects, tell EVMS that the disk is not a compatibility volume by deleting the volume information.

If the new disk was moved from another system, chances are good that the disk already contains metadata. If the disk does contain metadata, the disk shows up in EVMS with storage objects that were produced from the existing metadata. Deleting these objects will allow you to add a different segment manager to the disk, and you lose any old data.

## Example: add a segment manager

This section shows how to add a segment manager with EVMS.

EVMS initially displays the physical disks it sees as volumes. Assume that you have added a new disk to the system that EVMS sees as `sde`. This disk contains no data and has not been subdivided (no partitions). EVMS assumes that this disk is a compatibility volume known as `/dev/evms/sde`.

> ### Add the DOS Segment Manager

> Add the DOS Segment Manager to disk `sde`.

### NOTE

In the following example, the DOS Segment Manager creates two segments on the disk: a metadata segment known as `sde_mbr`, and a segment to represent the available space on the drive, `sde_freespace1`. This freespace segment (`sde_freespace1`) can be divided into other segments because it represents space on the drive that is not in use.

### Using the EVMS GUI

To add the DOS Segment Manager to `sde`, first remove the volume, `/dev/evms/sde`:

1. Select Actions Delete Volume.

2. Select `/dev/evms/sde`.

3. Click Delete.

Alternatively, you can remove the volume through the GUI context sensitive menu:

1. From the Volumes tab, right click `/dev/evms/sde`.

2. Click Delete.

After the volume is removed, add the DOS Segment Manager:

1. Select Actions Add Segment Manager to Storage Object.

2. Select DOS Segment Manager.

3. Click Next.

4. Select sde

5. Click Add

### Using Ncurses

To add the DOS Segment Manager to `sde`, first remove the volume `/dev/evms/sde`:

1. Select Actions Delete Segment Manager to Storage Object.

2. Select `/dev/evms/sde`.

3. Activate Delete.

Alternatively, you can remove the volume through the context sensitive menu:

1. From the Logical Volumes view, press Enter on `/dev/evms/sde`.

2. Activate Delete.

After the volume is removed, add the DOS Segment Manager:

1. Select Actions Add Segment Manager to Storage Object

2. Select DOS Segment Manager.

3. Activate Next.

4. Select sde.

5. Activate Add.

### Using the CLI

To add the DOS Segment Manager to sde, first tell EVMS that this disk is not a volume and is available for use:

    Delete:/dev/evms/sde

Next, add the DOS Segment Manager to sde by typing the following:

    Add:DosSegMgr={},sde

## Removing a segment manager

When a segment manager is removed from a disk, the disk can be reused by other plug-ins. The `remove` command causes the segment manager to remove its partition or slice table from the disk, leaving the raw disk storage object that then becomes an available EVMS storage object. As an available storage object, the disk is free to be used by any plug-in when storage objects are created or expanded. You can also add any of the segment managers to the available disk storage object to subdivide the disk into segments.

Most segment manager plug-ins check to determine if any of the segments are still in use by other plug-ins or are still part of volumes. If a segment manager determines that there are no disks from which it can safely remove itself, it will not be listed when you use the `remove` command. In this case, you should delete the volume or storage object that is consuming segments from the disk you want to reuse.

## Example: remove a segment manager

This section shows how to remove a segment manager with EVMS.

> ### Remove the DOS Segment Manager

> Remove the DOS Segment Manager from disk `sda`.

### NOTE

In the following example, the DOS Segment Manager has one primary partition on disk `sda`. The segment is a compatibility volume known as `/dev/evms/sda1`.

### Using the EVMS GUI context sensitive menu

Follow these steps to remove a segment manager with the GUI context sensitive menu:

1. From the Volumes tab, right click `/dev/evms/sda1`..

2. Click Delete.

3. Select Actions Remove Segment Manager from Storage Object.

4. Select DOS Segment Manager, sda.

5. Click Remove.

### Using Ncurses

Follow these steps to remove a segment manager with the Ncurses interface:

1. Select Actions Delete Volume.

2. Select `/dev/evms/sda1`.

3. Click Delete.

4. Select Actions Remove Segment Manager from Storage Object.

5. Click Remove.

### Using the CLI

Follow these steps to remove a segment manager with the CLI:

    Delete:/dev/evms/sda1

    Remove: sda