Creating the metaset is a simple process. First of all we define our metaset and add our host to it.
For a single hosted metaset, however, we just need to add one host, and we need to make sure that it will automatically take ownership and import the metaset on boot.
All we have to do to make this happen is enable the autotake flag on the metaset:
Note that when we add devices to a metaset (disks or LUNs) we need to only specify the device name - not slices, and not s2 (the Solaris way to reference an entire disk by a single reserved slice).
Normally, when you create a metadevice, you are encapsulation a slice that already exists on disk. This means the data stays intact. This is not the case when importing a disk into a metaset.
The act of importing a disk re-partitions it. All existing partitions are deleted, with a tiny slice on s7 being created to store the metadb replica, and the rest given over to s0. Note that s2 - the usual way of addressing a disk in Solaris - is also removed.
Here’s what the partitions look like on our root disk:
Set name = test, Set number = 5
Host Owner
avalon Yes (auto)
Drive Dbase
/dev/dsk/ c7t60060E801411890000011189000 01A10d0 Yes
/dev/dsk/ c7t60060E801411890000011189000 01A17d0 Yes
/dev/dsk/ c7t60060E801411890000011189000 01A18d0 Yes
/dev/dsk/ c7t60060E801411890000011189000 01A19d0 Yes
Once we’ve populated our metaset, we create metadevices as normal. The only extras we need when using the metainit command is that we need to specify which metaset we’re using, and that we’ll always be using s0.
Let’s create a single metadevice striped across all 4 LUNs in our metaset:
metainit works in the same way it’s always done - we need to specify the full path to the slice we’re using - but with the additional -s flag to tell metainit which metaset we want to add the metadevice to.
We can use the summary flag to metastat (sorry, Solaris 10 only) to show us the summary of what we’ve just configured:
metasets are an easy way to group together storage and filesystems in Solaris, especially where the storage is external to your host, and you’d like the flexibility of importing it to another host in the future - for example, as part of some DR work if the host fails.
bash-3.00# metaset -s test -a -h avalonSyntax is pretty straightforward:
- -s is used to specify which metaset we’re using
- -a is the add flag. Guess what -d does?
- -h specifies the hostname which owns this metaset
For a single hosted metaset, however, we just need to add one host, and we need to make sure that it will automatically take ownership and import the metaset on boot.
All we have to do to make this happen is enable the autotake flag on the metaset:
bash-3.00# metaset -s test -A enableAnd that completes the setup of the metaset. We then just select which LUNs we’re interested in, and add them in to the metaset:
bash-3.00# metaset -s test -a c7t60060E80141189000001118900001A10d0 \ c7t60060E801411890000011189000 01A17d0 \ c7t60060E801411890000011189000 01A17d0 \ c7t60060E801411890000011189000 01A19d0
Note that when we add devices to a metaset (disks or LUNs) we need to only specify the device name - not slices, and not s2 (the Solaris way to reference an entire disk by a single reserved slice).
Normally, when you create a metadevice, you are encapsulation a slice that already exists on disk. This means the data stays intact. This is not the case when importing a disk into a metaset.
The act of importing a disk re-partitions it. All existing partitions are deleted, with a tiny slice on s7 being created to store the metadb replica, and the rest given over to s0. Note that s2 - the usual way of addressing a disk in Solaris - is also removed.
Here’s what the partitions look like on our root disk:
bash-3.00# prtvtoc /dev/dsk/c1t0d0s2 * /dev/dsk/c1t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 107 sectors/track * 27 tracks/cylinder * 2889 sectors/cylinder * 24622 cylinders * 24620 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 8389656 23071554 31461209 1 3 01 0 8389656 8389655 2 5 00 0 71127180 71127179 5 7 00 31461210 20974140 52435349 6 0 00 52435350 18625383 71060732 7 0 00 71060733 66447 71127179And here’s what they look like on a LUN that’s part of the metaset:
bash-3.00# prtvtoc /dev/dsk/We can query the metaset and have a look at it’s contents, to check everything is OK:c7t60060E801411890000011189000 01A10d0s0 * /dev/dsk/ c7t60060E801411890000011189000 01A10d0s0 partition map * * Dimensions: * 512 bytes/sector * 512 sectors/track * 15 tracks/cylinder * 7680 sectors/cylinder * 13653 cylinders * 13651 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 4 00 15360 104824320 104839679 7 4 01 0 15360 15359
bash-3.00# metaset -s test
Set name = test, Set number = 5
Host Owner
avalon Yes (auto)
Drive Dbase
/dev/dsk/
/dev/dsk/
/dev/dsk/
/dev/dsk/
Once we’ve populated our metaset, we create metadevices as normal. The only extras we need when using the metainit command is that we need to specify which metaset we’re using, and that we’ll always be using s0.
Let’s create a single metadevice striped across all 4 LUNs in our metaset:
bash-3.00# metainit -s test d100 1 4 /dev/dsk/c7t60060E801411890000011189000 01A10d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A17d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A18d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A19d0s0
metainit works in the same way it’s always done - we need to specify the full path to the slice we’re using - but with the additional -s flag to tell metainit which metaset we want to add the metadevice to.
We can use the summary flag to metastat (sorry, Solaris 10 only) to show us the summary of what we’ve just configured:
bash-3.00# metastat -c -s test dbt/d100 s 199GB /dev/dsk/c7t60060E801411890000011189000 01A10d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A17d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A18d0s0 \ /dev/dsk/ c7t60060E801411890000011189000 01A19d0s0
metasets are an easy way to group together storage and filesystems in Solaris, especially where the storage is external to your host, and you’d like the flexibility of importing it to another host in the future - for example, as part of some DR work if the host fails.
Comments