When mirroring the volume it creates the new plex bigger than original.

book

Article ID: 100011944

calendar_today

Updated On:

Cause

This behavior is all to do with the diskgroup alignment which is being set at the current diskgroup configuration.

By default the diskgroup alignment is set to 8k or 8192 bytes.

Resolution

To illustrate this behavior, please see the below:

Here is the current diskgroup alignment:

sydfire03# vxdg list noncdsdg
Group:     noncdsdg
dgid:      1392938137.144.sydfire03
import-id: 1024.143
flags:   
version:   180
alignment: 512 (bytes)                           >>>>>>> align to 512 bytes or aligned to cylinder boundary
local-activation: read-write
ssb:            on
autotagging:    on
detach-policy: global
dg-fail-policy: obsolete
ioship: off
copies:    nconfig=default nlog=default
config:    seqno=0.1040 permlen=48144 free=48140 templen=2 loglen=7296
config disk emc_clariion0_172 copy 1 len=48144 state=clean online             >>>>>> 1st disk
config disk emc_clariion0_175 copy 1 len=48144 state=clean online             >>>>>> 2nd disk
log disk emc_clariion0_172 copy 1 len=7296
log disk emc_clariion0_175 copy 1 len=7296

There are 2 disks in the diskgroup emc_clariion0_172 and emc_clariion0_175

The geometry of those disks are:

# prtvtoc /dev/vx/rdmp/emc_clariion0_172| grep sectors
*      10 sectors/track
*     640 sectors/cylinder                           >>>>>>>> cylinder size
# prtvtoc /dev/vx/rdmp/emc_clariion0_175 | grep sectors
*      10 sectors/track
*     640 sectors/cylinder                           >>>>>>>> cylinder size

Here is the volume currently:

sydfire03# vxprint -thg noncdsdg testvol
V  NAME         RVG/VSET/CO  KSTATE   STATE    LENGTH   READPOL   PREFPLEX UTYPE
PL NAME         VOLUME       KSTATE   STATE    LENGTH   LAYOUT    NCOL/WID MODE
SD NAME         PLEX         DISK     DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
SV NAME         PLEX         VOLNAME  NVOLLAYR LENGTH   [COL/]OFF AM/NM    MODE
SC NAME         PLEX         CACHE    DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
DC NAME         PARENTVOL    LOGVOL
SP NAME         SNAPVOL      DCO
EX NAME         ASSOC        VC                       PERMS    MODE     STATE
SR NAME         KSTATE

v  testvol      -            ENABLED  ACTIVE   43008    SELECT    -        fsgen
pl testvol-01   testvol      ENABLED  ACTIVE   43008    CONCAT    -        RW
sd emc_clariion0_172-01 testvol-01 emc_clariion0_172 0 43008 0    emc_clariion0_172 ENA


Now, let's go ahead and mirror this volume:

sydfire03# vxassist -g noncdsdg mirror testvol emc_clariion0_175

and the volume configuration looks like as follow:

sydfire03# vxprint -thg noncdsdg testvol
V  NAME         RVG/VSET/CO  KSTATE   STATE    LENGTH   READPOL   PREFPLEX UTYPE
PL NAME         VOLUME       KSTATE   STATE    LENGTH   LAYOUT    NCOL/WID MODE
SD NAME         PLEX         DISK     DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
SV NAME         PLEX         VOLNAME  NVOLLAYR LENGTH   [COL/]OFF AM/NM    MODE
SC NAME         PLEX         CACHE    DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
DC NAME         PARENTVOL    LOGVOL
SP NAME         SNAPVOL      DCO
EX NAME         ASSOC        VC                       PERMS    MODE     STATE
SR NAME         KSTATE

v  testvol      -            ENABLED  ACTIVE   43008    SELECT    -        fsgen
pl testvol-01   testvol      ENABLED  ACTIVE   43008    CONCAT    -        RW
sd emc_clariion0_172-01 testvol-01 emc_clariion0_172 0 43008 0    emc_clariion0_172 ENA
pl testvol-02   testvol      ENABLED  ACTIVE   43520    CONCAT    -        RW
sd emc_clariion0_175-01 testvol-02 emc_clariion0_175 128 43520 0  emc_clariion0_175 ENA

Notice, the new mirror plex size is 43520 which is larger then the old plex (ie: 43008).

This is simply because, the new mirrored plex created is align to the cylinder boundary (43520 / 640 = 68) -> where 640 is the size of a cylinder.

If however, there is a requirement to make the new mirror plex size the same as the original plex, the diskgroup alignment needs to be changed to 8k (8192 bytes).

Here is the command to do that:

# vxdg -g set align=1

So, in the example above:

# vxdg -g noncdsdg set align=8k

and here is the diskgroup configuration:

# vxdg list noncdsdg
Group:     noncdsdg
dgid:      1392938137.144.sydfire03
import-id: 1024.143
flags:   
version:   180
alignment: 8192 (bytes)              >>>>>> alignment change to 8k or 16 sectors (521 bytes/sector x 16 sectors)
local-activation: read-write
ssb:            on
autotagging:    on
detach-policy: global
dg-fail-policy: obsolete
ioship: off
copies:    nconfig=default nlog=default
config:    seqno=0.1060 permlen=48144 free=48137 templen=3 loglen=7296
config disk emc_clariion0_172 copy 1 len=48144 state=clean online
config disk emc_clariion0_175 copy 1 len=48144 state=clean online
log disk emc_clariion0_172 copy 1 len=7296
log disk emc_clariion0_175 copy 1 len=7296


So, when mirroring the same volume now, the result will be different...

# vxassist -g noncdsdg mirror testvol emc_clariion0_175

# vxprint -thg noncdsdg testvol                       
V  NAME         RVG/VSET/CO  KSTATE   STATE    LENGTH   READPOL   PREFPLEX UTYPE
PL NAME         VOLUME       KSTATE   STATE    LENGTH   LAYOUT    NCOL/WID MODE
SD NAME         PLEX         DISK     DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
SV NAME         PLEX         VOLNAME  NVOLLAYR LENGTH   [COL/]OFF AM/NM    MODE
SC NAME         PLEX         CACHE    DISKOFFS LENGTH   [COL/]OFF DEVICE   MODE
DC NAME         PARENTVOL    LOGVOL
SP NAME         SNAPVOL      DCO
EX NAME         ASSOC        VC                       PERMS    MODE     STATE
SR NAME         KSTATE

v  testvol      -            ENABLED  ACTIVE   43008    SELECT    -        fsgen
pl testvol-01   testvol      ENABLED  ACTIVE   43008    CONCAT    -        RW
sd emc_clariion0_172-01 testvol-01 emc_clariion0_172 0 43008 0    emc_clariion0_172 ENA
pl testvol-02   testvol      ENABLED  ACTIVE   43008    CONCAT    -        RW
sd emc_clariion0_175-01 testvol-02 emc_clariion0_175 0 43008 0    emc_clariion0_175 ENA

Please note the new mirrored plex (testvol-02) has the same size as the original plex, which is 43008 and this number is divisible by 16.
 


Applies To

Solaris

Issue/Introduction

After performing a mirror operation the new mirror plex created is bigger than the original plex.