Tuesday, December 31, 2013

How to recover and start a Veritas Volume Manager logical volume where the volume is DISABLED ACTIVE and has a plex that is DISABLED RECOVER

Note: An error may be generated stating that the file system needs to be checked for consistency. If this occurs, run the VxFS specific fsck utility (/usr/lib/fs/vxfs/fsck) where the default is to replay the intent log, instead of performing a full structural file system check which is usually sufficient to set the file system to CLEAN and allow the volume to be mounted.



0. Stop the volume test:

# vxvol -g diskgroup stop  <volume>

For example:

# vxvol -g diskgroup stop test


1. Change the plex test-01 to the DISABLED STALE state:

# vxmend -g  diskgroup fix stale <plex_name>

For example:

# vxmend -g testdg fix stale test-01


2. Change the plex test-01 to the DISABLED CLEAN state:

# vxmend -g diskgroup fix clean <plex_name>

For example:

# vxmend -g testdg fix clean test-01


3. Start the volume test:

# vxvol -g diskgroup start  <volume>

For example:

# vxvol -g diskgroup start test


4. Mount the volume to its associated mount point (refer to the /etc/vfstab file if the mount point location is not known) if the file system is a Veritas File System (VxFS) file system:

# mount -F vxfs /dev/vx/dsk/diskgroup/volume /mount point

For example:

# mount -F vxfs /dev/vx/dsk/testdg/test /testvol

How to check the free space left in VX DG

How check free space on Veritas diskgroup



In a VxVM environment a diskgroup is a “container” that has different entities ( subdisk , plex , volume ).

When a dg is created an entire disk is referred for this operation.
So , when the free space must be checked , this operation requires a dg control

#vxdg -g dg01 free

DISK DEVICE TAG OFFSET LENGTH FLAGS
oraEU2dg0108 san_vc1_31 san_vc1_31 0 105459840 -
oraEU2dg0108 san_vc1_31 san_vc1_31 202090080 7549840 -
oraEU2dg0117 san_vc1_22 san_vc1_22 104857600 23531040 -
oraEU2dg0117 san_vc1_22 san_vc1_22 191303200 18336720 -
oraEU2dg0127 san_vc1_41 san_vc1_41 104857600 602240 -
oraEU2dg0127 san_vc1_41 san_vc1_41 199831680 9808240 -

#bc
105459840+7549840+23531040+18336720+602240+9808240
165287920

165287920/2
82643960

82643960/1024

80706MB


VxVM Disk Group Total Size


# echo `/usr/sbin/vxprint -g UADG -dF "%publen" | awk 'BEGIN {s = 0} {s += $1} END {print s}'`/2/1024/1024|bc 

Here UADG is diskgroup

How to calculate size of VxVM Disk 


Now we will see how to determine the disk size using vxdisk command.Even though we have many options in OS level to determined that.But let see from veritas level.Once the disk has been brought to veritas control ,VXVM will automatically make public and private region on the disk.By calculating the public region size can determine the disk size. For your information private region size will be always 32MB from VXVM 4.0 on-wards unless until you manually set it while doing vxdisksetup .

Here we go ...

# vxdisk list disk_4 |egrep -i "private|public" |grep -v flags
public:    slice=2 offset=65744 len=143056 disk_offset=48
private:   slice=2 offset=208 len=65536 disk_offset=48


disk_4 = vxvm disk name;

Calculating the disk size:

Disk size in MB (disk_4) = Public region + private region
Public region size = 143056/2/1024 = 69MB
Private region size = 65536/2/1024 = 32MB

Disk Size is 101MB . 


VxVM Basic

Disks

Disks are referred in volume manager by two terms -  device  name  and disk name . The device name specifies controller , target id and slice of  the disk . Disk name is the common name given to the device name as an easy to remember  name .
For example device name c2t3d0s2  represents  controller  number 2 , target id 3 , disk group 0 and slice 2 and disk01 may be its disk name . While device name is system dependent based on controller and disk id  the  disk name is user defined .
·         A disk group is a collection of volume manager disks grouped together to hold the data . All the configuration changes  made to a disk group are applied to the disks in that disk group only. 
·         Volume Manager objects cannot span disk groups i.e. all the operations on a particular disk group remains confined to that particular group .
·         Disk groups enable high availability as these can be shared by two or more hosts  but can be accessed by only one host at a time. In two hosts and a shared storage situation one  host can take over the ownership of  the disk groups and drives  in case other  host fails.

·         Adding physical  disks  to the volume manager results in creation of  public and private region in the disk by the volume manager .The public region is the disk space available for volume space and the private region stores the configuration information. 
·         A Volume Manager  disks are created from the public region of a physical disk that is under Volume Manager control. Each volume manager disk corresponds to one physical disk.
·          A volume manager disk is given a disk media name when it is added to a disk group which can be default or unique user defined..
·         Once a volume manager disk is assigned a disk media name, the disk is no longer referred to by its physical address of c#t#d#. The physical address of c#t#d# becomes known as the disk access record.
·         A subdisk is a subsection of a disk's public region  and is  the smallest unit of storage in Volume Manager.  
·         A subdisk is defined by an offset and a length in sectors on a volume manager disk.
·         A volume manager disk can contain multiple subdisks  but subdisks cannot overlap or share the same portions of a volume manager disk.
·         volume manager disk space that is not reserved or that is not part of a subdisk is free space. You can use free space to create new subdisks.
A subdisk is similar to a partition but with following differences :
·         The maximum number of partitions to a disk is eight.
·         There is no theoretical limit to number of subdisks that can be attached to a single plex, but it has been limited to a default value of 4096. If required, this default can be changed, using the vol_subdisk_num tunable parameter.
·         A plex is a structured or ordered collection of subdisks that represents one copy of the data in a volume. A plex consists of one or more subdisks located on one or more physical disks.
·         A plex is also called a mirror. The terms plex and mirror can be used interchangeably, even though a plex is only one copy of the data. The terms "mirrored" or "mirroring" imply two or more copies of data.
·         The length of a plex is determined by the last block that can be read or written on the last subdisk in the plex.
·         The default naming convention for plexes in a volume is volumename-##. The default plex name consists of the volume name, a hyphen, and a two-digit number
·         A volume is composed of one or more plexes  not restricted by the physical size of the disk. 
·         A volume can span across multiple disks. 
·         Volume Manager uses the default naming convention vol## for volumes, where ## represents a two-digit number but can be user defined  as per requirement.

1. Creating a Volume :

1.1 Creating a Concatenated Volume

By default, vxassist creates a concatenated volume using the space available on a disk or on the number of disks in a diskgroup if the volume size specified is more then the one available on a single disk.
Disks can be specified from a diskgroup for a volume group but if not mentioned available disks are selected by the volume manager.
Command syntax :
· vxassist make volume_name volume_length
To create a new volume appvol of 100 MB in the default disk group rootdg with available disks:
· #vxassist make appvol 100m
To create the volume appvol of 100MB on disk03
· #vxassist make appvol 100m disk03

1.2 Creating a Striped Volume
A striped volume contains at least one plex that consists of two or more subdisks located on two or more physical disks.
Command Syntax :
· vxassist make volume_name length layout=stripe
To create a striped volume appvol2 with the default stripe unit size on the default number of disks
· #vxassist make appvol2 100m layout=stripe
To create a striped volume appvol2 100MB striped volume on three specific disks.
· #vxassist make appvol2 100m layout=stripe disk04 disk05 disk06

1.3 Creating a RAID-5 Volume


A RAID-5 volume contains a RAID-5 plex that consists of two or more subdisks located on two or more physical disks. Only one RAID-5 plex can exist per volume. A RAID-5 volume may also contain one or more RAID-5 log plexes, which are used to log information about data and parity being written to the volume.

Command Syntax :
· vxassist make volume_name length layout=raid5
To create the RAID-5 volume appvol4 with the default stripe unit size on the default number of disks with RAID-5 log,
· #vxassist make appvol4 100m layout=raid5.

2. Extending a Volume

Caution : If you plan to use volume size change (grow or shrink ) on a volume with data make sure you have the good backup of the volume available before carrying out such operation .
2.1 Extending a volume up to certain length,
Command syntax
· vxassist growto volume_name length
To extend vol3 upto 8000 sectors, type:
· #vxassist growto vol3 8000
2.2 Extending by a Given Length
Command Syntax
· vxassist growby volume_name length
To extend volapp by 1000 sectors, type:
· #vxassist growby volapp 1000

3. Shrinking a Volume

Caution - Do not shrink a volume below the size of the file system. If you have a VxFS file system, you can shrink the file system and then shrink the volume. If you do not shrink the file system first, you risk unrecoverable data loss.
Always make sure you have a good backup of the data volume to be shirnked.
3.1 Shrinking to a Given Length
Shrink a volume to a specific length as follows:
· vxassist shrinkto volume_name length
Make sure you do not shrink the volume below the current size of the file system or database using the volume. This command can be safely used on empty volumes.
To shrink volcat to 1300 sectors, type:
· #vxassist shrinkto volcat 1300
3.2 Shrinking by a Given Length
Shrink a volume by a specific length as follows:
· vxassist shrinkby volume_name length
To shrink volcat by 8000 sectors, type:
· #vxassist shrinkby volapp2 8000

4. Removing a Volume


Removing a volume requires removing all references to the volumes to be removed like unmounting the volume if mounted and removing its reference from /etc/vfstab .

An active volume has to be stopped first to stop all the activities to the volume only then it can be removed 
Stopping Volume :
Command Syntax
· vxvol stop volume_name
To stop appvol1
· #vxvol stop appvol1
Removing Volume
Command Syntax
· vxedit -rf rm volume_name
To remove the volume appvol1
· #vxedit -rf rm appvol11

5. Mirroring a Volume


Mirroring allow data to be written simultaneously to two disks so that in case of failure of one disk data is available from the other mirrored disk. Boot disks can be mirriored to provide alternate booting disk .

5.1 Creating & Mirroring a New Volume
Command Syntax :
· vxassist make volume_name length layout=mirror
To create the mirrored volume, appvol22 of 100mb
· #vxassist make appvol22 100m layout=mirror
To create a volume with Dirty Region Logging enabled
· #vxassist make volume_name length layout=mirror,log
5.2 Mirroring an Existing Volume
Command syntax
· vxassist mirror volume_name
Creating a mirror of volume vol44:
· #vxassist mirror vol44
5.3 Mirroring All Volumes
To mirror all existing volumes to available disk space
· /etc/vx/bin/vxmirror -a

6. Removing a Mirror


Removing a mirror involves first dissociating the plex from its volume and then removing the plex and any associated subdisks completely.The last valid mirror plex associated with a volume cannot be removed.

Dissociate and remove the plex from its volume as follows:
· vxplex -o rm dis plex_name
vxprint -h shows the volume and associated plexes :
Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 v volm fsgen ENABLED 10240 - ACTIVE - - pl volm-01 volm ENABLED 10240 - ACTIVE - - sd disk01-02 volm-01 - 10240 0 - - - pl volm-02 volm ENABLED 10240 - ACTIVE - - sd disk02-03 volm-02 - 10240 0 - - -
To disassociate and remove volmir-02 from volmir, type:
· #vxplex -o rm dis volm-02
The output of vxprint -h for volm now shows volume volm with only one plex::
Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 v volm fsgen ENABLED 10240 - ACTIVE - - pl volm-01 volmir ENABLED 10240 - ACTIVE - - sd disk01-02 volmir-01 - 10240 0 - - -

7. Adding a RAID-5 Log


A RAID-5 log maintains a copy of the data and parity being written to the volume at any given time. If a system failure occurs, VxVM can replay the RAID-5 log to resynchronize the volume. This copies the data and parity that was being written at the time of failure from the log to the appropriate areas of the RAID-5 volume.

RAID-5 log plexes are used to log information about data and parity being written to the raid volume. A log plex is created for the volume by default when a raid volume is created but additional ones can be added by following command .
· vxassist addlog name_of_raid5_vol

8. Adding a DRL Log

Dirty region logging (DRL) is used with mirrored volume layouts. DRL keeps track of the regions that have changed due to I/O writes to a mirrored volume. Prior to every write, a bitmap is written to a log to record the area of the disk that is being changed. In case of system failure, DRL uses this information to recover only the portions of the volume that need to be recovered.
To put Dirty Region Logging into effect for a volume, a log subdisk must be added to that volume and the volume must be mirrored. Only one log subdisk can exist per plex.
The following example creates a log for the mirrored volume vol03:
· #vxassist addlog vol03
When vxassist is used to add a log subdisk to a volume, a log plex is also created to contain the log subdisk, by default.
Once created, the plex containing a log subdisk can be treated as a regular plex. Data subdisks can be added to the log plex. The log plex and log subdisk can be removed using the same procedures used to remove ordinary plexes and subdisks.

9. Removing a RAID-5 Log


Removing a RAID-5 log involves first dissociating the log from its volume and then removing the log and any associated subdisks completely.


Dissociate the log from its volume as follows:

· #vxplex -o rm dis plex_name
To identify the log plex, use the command:
· vxprint -ht raid5_volume_name
To disassociate the log plex volrd-02 from volrd, type:
· #vxplex -o rm dis volrd-02

The output of vxprint -h for volrd now shows:
Disk group: rootdg TY NAME ASSOC KSTATE LENGTH PLOFFS STATE TUTIL0 PUTIL0 v volrd raid5 ENABLED 32 - ACTIVE - - pl volrd-01 volrd ENABLED 32 - ACTIVE - - sd disk01-02 volrd-01 - 32 0 - - - sd disk02-03 volrd-01 - 32 0 - - -

10. Preparing a Volume for Online Backup

Volume manager provides an easy way to take backup of the online data by creating an offline snapshot mirror of the volume .


The vxassist snapstart operation creates a write-only backup mirror, which is attached to and synchronized with the volume to be backed up and later detached and made offline by vxassist snapshot command . The snapshot volume can be used by backup utilities while the original volume continues to be available for applications and users.


The volume backup method described here does not apply to RAID-5 volumes.

Backing up a volume with vxassist involves the following procedure
Create a snapshot mirror
snapstart starts creating a online snapshot mirror of the volume using the available disk space . The snapshot is completed with vxassist snapshot command when offline snapshot volume is created with a userdefined name .
Command Syntax:
  • vxassist snapstart volume_name
To create a snapshot mirror of a volume called vol8, type
  • #vxassist snapstart vol8
Create a snapshot volume
Command Syntax
vxassist snapshot volume_name new_volume_name
To create a snapshot volume of vol8, type:
#vxassist snapshot vol8 snapvol8
You can now back up the snapshot volume by whatever means you prefer. To avoid wasting space, you can then remove the snapshot volume, which occupies as much space as the original volume
11 Displaying Volume Configuration Information

The vxprint command can be used to display information about how a volume is configured.

Display the volume, mirror, and subdisk record information for all volumes as follows:

#vxprint -ht

 
  Disk group: rootdg  
  
  DG  NAME        NCONFIG    NLOG      MINORS     GROUP-ID  
  DM  NAME        DEVICE     TYPE      PRIVLEN    PUBLEN     STATE  
  V   NAME        USETYPE    KSTATE    STATE      LENGTH     READPOL      PREFPLEX  
  PL  NAME        VOLUME     KSTATE    STATE      LENGTH     LAYOUT       NCOL/WID MODE  
  SD  NAME        PLEX       DISK      DISKOFFS LENGTH       [COL/]OFF    DEVICE     MODE  
  
  dg  rootdg      759096729.1025.tweety  
  
  dm  disk10      c1t0d0s2 sliced      559        1044400     -  
  dm  disk20      c2t0d0s2 sliced      559        1044400     -  
  
  v   pubs        fsgen      ENABLED ACTIVE       2288       SELECT       -  
  pl  pubs-01     pubs       ENABLED ACTIVE       2288       CONCAT       -          RW  
  sd  disk10-01 pubs-01      disk10    0          2288       0            c0t0d0     ENA  
  
  v   vol8      fsgen      ENABLED ACTIVE       20480      SELECT       -  
  pl  vol8-01   vol8       ENABLED ACTIVE       20480      CONCAT       -          RW  
  sd  disk10-02 vol8-0 disk10        2288       20480      0            c0t1d0     ENA  
where dg is a disk group, dm is a disk, v is a volume, pl is a plex, and sd is a subdisk. The top few lines indicate the headers that match each type of output line that follows. Each volume is listed along with its associated plex(es) and subdisk(s).
Display volume-related information for a specific volume as follows:
#vxprint -t volume_name
To display information about vol8, type:
#vxprint -t vol8