Spent two days now on manually building subdisks to mirror some VxVM volumes. The reason was that were use layered volumes and the allocation policy mirror=enclosure doesn’t work reliably. And someone has to fix it.
Problem is, it’s so complicated by the layered vols that most people[*] don’t even see the actual error.
[*]Most people does include Symantec support line.
The procedure was roughly like this:
drop the mirror plexes on one of the 2 storage arrays
vxprint -g dgname -rth | grep volumename | grep -v dcl | grep ^sd | grep storagearraytoclear > /tmp/subdisks_array_b
then for each volume, run a
vxmake -g dgname sd storagearraytokeep_lun-01 disk=storagearraytokeep_lun offset=0 len=length of original disk
01 means the first subdisk on that disk
length can be found in the vxprint output
then run and watch in vxtask list:
vxdg -g dg mv oldsd newsd -b
then remove the old subdisk using
vxedit -g dgname rm oldsubdisk
it is wise to not use rm -rf or anything like that here. we don’t wanna delete it if we messed up in the above steps.
Well, there is a summary too:
This method is clumsy, slow.
Next idea is to convert the volumes back to normal mirrors first, then drop all plexes in one array. Then vxevac (or the above procedure) to shuffle everything to the other array, then mirror up again.
TBH, it sucks to do this and i’ll go get some more sun very soon.