This document was originally posted at: http://www2.primushost.com/~griff/soft-partitions.html
however, it has been unavailable for some time now.
Last Updated: Wed Aug 22 2001
The intent of this document is to describe Soft Partitioning within Solstice DiskSuite (soon-to-be-renamed Solaris Volume Manager), and offer a short primer/tutorial on how to create, use, and delete them.
Until now, Solaris, without any volume management software, has only ever allowed a fixed number of partitions on a physical disk (seven (7) on SPARC platforms). With the increase in capacity of disks, this limitation has become a severe restriction.
SDS/SVM uses these slices for its metadevices (sub-mirrors, trans, stripes, and RAID5) and hence is faced with the same limitation, whereas Veritas Volume Manager (VxVM) allows for the logical partitioning of disks into a virtually unlimited number of subdisks.
Soft Partitioning allows for a disk to be subdivided into many
partitions which are controlled and maintained by software, thereby
removing the limitation of the number of partitions on a disk. A soft
partition is made up of one or more "extents". An extent
describes the parts of the physical disk that make up the soft
partition. While the maximum number of extents per soft partition is
2147483647, the majority of soft partitions will use only one (1)
extent.
Soft Partitioning was not in the original Solstice DiskSuite 4.2.1 Release, which coincided with the release of Solaris 8. However, the soft partitioning functionality was released in patch 108693-06 for SDS 4.2.1.
When Solaris 9 gets released, the "Solstice DiskSuite" name will change to "Solaris Volume Manager" ("SVM") and it will be bundled in with Solaris 9. Soft Partitioning will, of course, be part of the base functionality of that release.
Soft Partitions are implemented by new kernel driver: md_sp.
# modinfo | grep md_sp 228 78328000 4743 - 1 md_sp (Meta disk soft partition module)There are new options to the metainit command:
metainit softpart -p [-e] component size metainit softpart -p component -o offset -b sizeThe metattach command has been modified to allow for growing of soft partitions:
metattach softpart sizeThere is a new command... metarecover:
metarecover [-n] [-v] component -p [-d|-m]
NOTE: the -p option means that the command refers to
soft partitions.
# metainit d0 -p -e c1t0d0 200m |
The -e option requires that the name of the disk supplied be in the form c#t#d#.
The last parameter (200m) specifies the initial size of the soft partition. The sizes can be specified in blocks, kilobytes, megabytes, gigabytes, and terabytes.
The -e option causes the disk to be repartitioned such that slice 7 has enough space to hold a replica (although no replica is actually created on this disk) and slice 0 contains the rest of the space. Slice 2 is removed from the disk. The soft partition that is being created is put into slice 0. Further soft partitions can be created on slice 0 by the next method of creating a soft partition.
After this command is run, the layout of the disk would like similar to this example:
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 5 - 2035 999.63MB (2031/0/0) 2047248
1 unassigned wm 0 0 (0/0/0) 0
2 unassigned wm 0 0 (0/0/0) 0
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wu 0 - 4 2.46MB (5/0/0) 5040
|
This command (with the -e) can only be run on an empty disk (one that is not used in any other metadevice). If another metadevice or replica already exists on this disk, one of the following messages will be printed, and no soft partition will be created.
metainit: hostname: c#t#d#s0: has appeared more than once in the specification of d#or
metainit: hostname: c#t#d#s#: has a metadevice database replica
# metainit d1 -p c1t0d0s0 1g
|
This will create a soft partition on the specified slice. No repartitioning of the disk is done. Provided there is space on the slice, additional soft partitions could be created as required. The device name must include the slice number (c#t#d#s#).
If another soft partition already exists in this slice, this one will be created immediately after the existing one. Therefore, no overlap of soft partitions can occur by accident.
# metainit d2 -p c1t0d0s0 -o 2048 -b 1024 |
# metainit d1 -p c1t0d0s0 -o 1 -b 2024 d1: Soft Partition is setup # metainit d2 -p c1t0d0s0 -o 2000 -b 2024 metainit: hostname: d2: overlapping extents specified |
An offset of 0 is not valid, as the first block on a slice containing a soft partition contains the initial extent header. Each extent header consumes 1 block of disk and each soft partition will have an extent header placed at the end of each extent. Extent headers are explained in more detail in the next section.
NOTE: This method is not documented in the man page for metainit and is not recommended for manual use. It is here because a subsequent metastat -p command will output information in this format.
Whenever a soft partiton is created in a disk slice, an "extent header" is written to disk. Internally to Sun, these are sometimes referred to as "watermarks".
An extent header is a consistency record and contains such information as the metadevice (soft partition) name, it's status, it's size, and a checksum. Each extent header 1 block (512 bytes) in size.
The following diagram shows an example 100MB slice (c1t0d0s0) and the extent headers (watermarks) that have been created on it. The command to make the soft partition shown was
# metainit d1 -p c1t0d0s0 20m |