Showing posts with label lvm. Show all posts
Showing posts with label lvm. Show all posts

Monday, March 2, 2020

GROWING RAID+LVM


GROWING RAID+LVM


Step by step howto:




Add Drive
mdadm --add /dev/md0 /dev/sdb3


Tunning
echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 200000 > /proc/sys/dev/raid/speed_limit_max


Grow the Array
 mdadm --grow /dev/md0 --raid-devices=4


Resize PV
# pvresize /dev/md1
  Physical volume "/dev/md1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized


Extend LV
# lvextend -L +400G -n /dev/XXXX00/LV-HOME
  Size of logical volume XXXX00/LV-HOME changed from 565.66 GiB (144809 extents) to 965.66 GiB (247209 extents).
  Logical volume XXXX00/LV-HOME successfully resized.


Grow filesystem
# resize2fs /dev/mapper/XXXX00-LV--HOME
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/mapper/XXXX00-LV--HOME is mounted on /home; on-line resizing required
old_desc_blocks = 71, new_desc_blocks = 121
The filesystem on /dev/mapper/XXXX00-LV--HOME is now 253142016 (4k) blocks long.


Check
# df -h /home
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/XXXX00-LV--HOME  950G  431G  477G  48% /home



Wednesday, August 10, 2011

HPUX: Extending File Systems with the LVM

If you have installed the LVM Logical Volume Manager on the root disk drive of your HP-UX 10.X system, you can use it to dynamically extend the size of a given file system. Here are some step by step instructions. Please see the individual man pages on each command for more information.

Procedure for using LVM to extend an existing file system. You must be user root to perform these steps.

 

Part I - Checking for Free Space

1. Check the current volume group for the amount of free space in the volume group. Check the number of free physical extents (Free PE):

# /usr/sbin/vgdisplay /dev/vgxx

where xx is the appropriate number for your volume group. Use bdf to see a list of all your volume groups and logical volumes.

2. You may use any free PE's to extend a file system. If you have enough free PE's already available, skip down to Part IV.

If you do not have any free PE's, you will need to create some. You can create free PE's by reducing the number of PE's in an existing logical volume, or by removing a logical volume entirely.

Part II - Removing an Existing Logical Volume

1. First, you must first unmount the logical volume:

# /etc/umount /dev/vgxx/lvolx

where xx and x are the appropriate number for your volume group and logical volume.

2. If the logical volume won't unmount because the "device is busy", the first thing to do is make sure that no users are accessing that logical volume. For example, if you are currently in the /tmp directory, you can't unmount the /tmp logical volume. Change directories to another directory outside the logical volume.

Additionally, you can use the fuser command to get a list of process IDs currently using a specified logical volume:

# fuser /dev/vgxx/lvolx

This will return either a blank line, or a list of numbers followed by lower case letters. These numbers are process IDs.

Use /bin/ps -elf | grep pid to find what these processes are and kill them. Once you've killed the processes accessing the logical volume, run the /etc/umount command again.

3. There are some logical volumes for which the /etc/umount command will always fail. For example, the /usr volume can't be unmounted. In these
cases, you will have to boot your system into single user mode. In single user mode, these volumes will automatically be unmounted for you. To get to single user mode, run the command

# shutdown

4.Now that you've unmounted the logical volume, you can remove it. Obviously, when you remove the logical volume, you lose the contents of that file system. To remove the volume use the command:

# /usr/sbin/lvremove /dev/vgxx/lvolx

You will be prompted to approve this action.

Note: If you are removing the /usr logical volume, you must use /sbin/lvremove rather than /usr/sbin/lvremove, because you just unmounted the
/usr directory.

5. Now that you have created some free physical extents, use /usr/sbin/vgdisplay /dev/vgxx to verify that new free PE's exist. Once you've verified that enough free PE's exist, skip down to Part IV.

Part III - Reducing the Size of an Existing Logical Volume

1. If you want to reduce the size of a logical volume, the process is a bit more complicated. Reducing the size of the logical volume destroys the file system. So, you need to first make a back up of the contents of the file system on the logical volume. For example, if you are reducing the /tmp logical volume, you must back up the /tmp directory tree. You can make a tape back up of the files, or you can create a tar file on another disk drive. Either way, make sure your back up is successful because the process below will destroy all the files on the logical volume.

2. Once the file system has been backed up, unmount the logical volume. Please see Part II steps 1-3 for instructions on how to unmount the logical volume.

3. Now you can reduce the size of the logical volume. For example, to reduce the size of logical volume 3 to 50 PE's, use the following command:

# /usr/sbin/lvreduce -l 50 /dev/vg00/lvol3

Note: If you are reducing the /usr logical volume, you must use /sbin/lvreduce rather than /usr/sbin/lvreduce, because you just unmounted the
/usr directory. Also note that the number specified on the command line is the final size of the logical volume, not the amount you want to reduce it by.

4. Now that you have reduced the size of the logical volume, you must create a new file system in the smaller volume. Use the command:

# /usr/sbin/newfs -F hfs /dev/vgxx/rlvolx

Note: If you are reducing the /usr file system, you must use /sbin/newfs rather than /usr/sbin/newfs, because you just unmounted the /usr directory.

5. Now, re-mount the logical volume:

# /etc/mount /dev/vgxx/lvolx

and restore the files from your back up tape or tar file. This will complete the reduction process and free up some physical extents in the volume group.

6. Now that you have created some free physical extents, use /usr/sbin/vgdisplay /dev/vgxx to verify that new free PE's exist. Once you've verified that enough free PE's exist, continue with Part IV.

 

Part IV - Extending the Logical Volume and File System

1. Now you will work with the logical volume that you want to extend. First, display the characteristics of the logical volume you are intending to extend. Use the command:

# /usr/sbin/lvdisplay /dev/vgxx/lvolx

2. Look for the keywords strict or contiguous. If you see strict, any space you add to the logical volume has to be on the same physical disk with the original space. Usually, this is not a problem. If you see contiguous, all space allocated for the logical volume (even what you want to add) has to be "together" on the physical disk. This restriction usually precludes extending the logical volume, because it is extremely unlikely that the free PE's are contiguous with this logical volume on the physical disk.

3. If the logical volume you want to extend is restricted to contiguous, you must change the configuration to non-contiguous using the command:

# /usr/sbin/lvchange -C n /dev/vgxx/lvolx


If the logical volume is labeled strict, skip this step.

4. Now unmount the logical volume. Please see Part II steps 1-3 for instructions on how to unmount the logical volume.

5. Once the logical volume is unmounted, you can assign the available PE's to the logical volume. For example, if currently the logical volume has 25 PE's allocated, and you have freed up 10 more PE's, you can extend the logical volume to a total of 35 PE's using the command:

# /usr/sbin/lvextend -l 35 /dev/vgxx/lvolx

Note: If you are extending the /usr logical volume, you must use /sbin/lvextend rather than /usr/sbin/lvextend, because you just unmounted the
/usr directory. Also note that the number specified on the command line is the final size of the logical volume, not the amount you want to increase it by.

6. Now that you have allocated additional PE's for this logical volume, you must extend the file system on the logical volume so that you can take advantage of the extra space. Use the command:

# /usr/sbin/extendfs -F hfs /dev/vgxx/rlvolx

Note: If you are extending the /usr file system, you must use /sbin/extendfs rather than /usr/sbin/extendfs, because you just unmounted the /usr directory.

7. Finally, you can mount the extended file system using the command

# /etc/mount /dev/vgxx/lvolx /mount_point

where mount_point is the directory on which the logical volume is mounted. Or, you can simply reboot the system. Use the bdf command to verify that your changes have taken affect.

(c) Originally prepared by Peggy Bruehl

Wednesday, April 18, 2007

HPUX: LVM quick reference guide

I) How to create a Volume Group (VG).


Note The following example is using the disk c1t6d0, the volume
group vg01 and the logical volume lvhome

1) Prepare the disk
pvcreate /dev/rdsk/c1t6d0

Note if the disk was previously used in another VG use the
following command instead:

pvcreate -f /dev/rdsk/c1t6d0

2) Create the Volume Group (VG):
a) mknod /dev/vg01/group c 64 0x010000

Note: the group number (last parameter) is in hexadecimal and
should be different for each volume group. For vg02, that number
would be 0x020000. The default limit is 10 volume groups as set by
the kernel parameter maxvgs.

b) vgcreate /dev/vg01 /dev/dsk/c1d0s2

Note: When a volume group is created the maximum physical
extents per volume (max_pe parameter) will be set to the max_pe
of the largest physical volume (PV) or 1016, which ever is
greater, if no max_pe is specified. The effect of not setting
the max_pe parameter would be that any PV added to the volume
group in the future regardless of there size will be limited
to the volume groug creation value of max_pe. Therefore,
consider increasing the max_pe to accommodate PV's that may
likely be larger than the largest PV used to create the Volume
Group. The formula to use to determine the value is:

physical_extent_size * max_pe = size_of_the_disk.

The default value for physical_extent_size is 4M and the maximum
value for max_pe is 65535 (example for 18 gig disk use a value
4608 for max_pe: 4M * 4608 = 18 gig).
There is also a default value of a maximum of 16 disks per volume
group. The following is an example of the creation of a volume
group modifying these two parameters (max_pe = 4608, maximum
number of disk = 24):

vgcreate -e 4608 -p 24 /dev/vg01 /dev/dsk/c1d0s2


II) How to create a Logical Volume (LV) and mount the filesystem.
1) Create the Logical Volume (LV)
lvcreate -L 120 -n lvhome /dev/vg01
Note: this will create a logical volume of 120 meg.
2) Create the filesystem
newfs -F vxfs /dev/vg01/rlvhome
Note: to create an hfs filesystem change vxfs to
hfs in the previous command.
3) Mount the Logical Volume:
a) mkdir /home
b) mount /dev/vg01/lvhome /home


III) How to add a disk to a Volume Group
Note The following examples is using the disk c1t6d0 and the volume
group vg01

1) Prepare the disk
pvcreate /dev/rdsk/c1t6d0

Note if the disk was previously used in another VG use the
following command instead:

pvcreate -f /dev/rdsk/c1t6d0

Note: Use caution when using pvcreate -f as this will
overwrite the existing volume group information on the disk.

2) Add the disk to the Volume Group
vgextend /dev/vg01 /dev/dsk/c1t6d0


IV) How to increase the size of a logical volume without online JFS
(advanced JFS).
Note: the following example is using the volume group vg01 and the
logical volume lvhome

Note: Increasing the root filesystem (/) is not feasible

1) lvextend -L 240 /dev/vg01/lvhome
The new total size will be 240M.
2) umount /home
Note: If the filesystem is in use, it is impossible to unmount it.
Therefore stop all the processes (applications) that use the
filesystem then unmount it.
Processes that use /usr and /var cannot be all stopped,
the only solution is to reboot in single user mode.
3) extendfs -F vxfs /dev/vg01/rlvhome
4) mount /dev/vg01/lvhome /home


V) How to remove a Logical Volume
Note: the following example is using the volume group vg01 and the
logical volume lvhome
1) Backup all user data
2) Umount the filesystem
umount /home
3) remove the Logical volume
lvremove /dev/vg01/lvhome


VI) How to reduce the size of a logical volume without online JFS (advanced JFS)
Note: the following example is using the volume group vg01 and the
logical volume lvhome
1) Backup all user data
2) Umount the filesystem
umount /home
3) Reduce the size
lvreduce -L 60 /dev/vg01/lvhome
Note: the new total size will be 60M.
4) Re-create the filesystem
newfs -F vxfs /dev/vg01/rlvhome
Note: to create an hfs filesystem change vxfs by
hfs in the previous command.
5) Mount the Logical Volume:
mount /dev/vg01/lvhome /home
6) Restore the user data


VII) How to remove a disk from a volume group
Note: the following example is using the disk c1t6d0 and the
volume group vg01

1) Make sure that the disk is not in use:
pvdisplay /dev/dsk/c1t6d0
Look at line starting with Allocated PE the number at the end
of the line should be 0. If it is not the disk is still in use.
2) Remove the disk
vgreduce /dev/vg01 /dev/dsk/c1t6d0


VIII) How to remove a volume group
Note: the following example is using the volume group vg01 and the
logical volume lvhome

1) Backup all user data
2) Find the name of all logical volume in this volume group
vgdisplay -v /dev/vg01
3) unmount all logical volumes
Note: repeat the following command for each logical command
umount /dev/vg01/lvhome
4) Remove the volume group:
vgexport /dev/vg01
Note: using vgexport to remove a volume group is easier
and faster than using the vgreduce on each physical volume
except the last one, followed by a vgremove. The other
advantage is that the /dev/vg01 directory is also removed.




IX) How to increase the primary swap

Note: Because of the contiguous allocation policy, create a bigger
logical volume and modify the Boot Data Reserved Area (BDRA) to make it
primary.

1) lvcreate -C y -L 240 /dev/vg00
The name of this new logical volume will be displayed on the
screen, note it, it will be needed later. (let say it
is /dev/vg00/lvol8)
Note: This new logical volume has to be in vg00
2) lvlnboot -v /dev/vg00
This will display the current root and swap volumes
Note: lvol2 is the default primary swap.
3) lvlnboot -s /dev/vg00/lvol8 /dev/vg00
Note: use the logical volume name from step 1
4) lvlnboot -R /dev/vg00
Recover any missing links to all of the logical volumes specified
in the BDRA and update the BDRA of each bootable physical volume in
the volume group
5) reboot the system



X) How to create a secondary boot disk
Note: This will create an identical copy of the current vg00. The
new volume group needs to as big as vg00. This will also be a static
version of the primary boot disk which could be use in case of
problem.

Note: The following example is using the disk c1t6d0 and the
volume group vg01

1) Initialize the disk and make it bootable
pvcreate -B /dev/rdsk/c1t6d0
Note: the -B parameter tells pvcreate that this will be a bootable
disk.
mkboot /dev/dsk/c1t6d0
mkboot -a "hpux" /dev/rdsk/c1t6d0
2) Create the volume group
mkdir /dev/vg01
mknod /dev/vg01/group c 64 0x010000
vgcreate /dev/vg01 /dev/dsk/c1t6d0
3) Find the size of each logical volume in vg00
vgdisplay -v /dev/vg00 | more
look at LV Size (Mbytes) for each logical volume and note it.
Note: this example will use these value:
lvol1 84M
lvol2 256M
lvol3 140M
lvol4 500M
lvol5 64M
lvol6 20M
lvol7 500M
lvol8 500M

Note: The size of the new logical volumes needs to be exactly the
same as the size of the logical volumes on the primary root disk.
4) Create the first 3 logical volumes contiguous (needed by the system)
lvol1:
lvcreate -L 84 -C y -r n /dev/vg01
lvol2:
lvcreate -L 256 -C y -r n /dev/vg01
lvol3:
lvcreate -L 140 -C y -r n /dev/vg01
5) Now create the other logical volumes
lvol4:
lvcreate -L 500 /dev/vg01
lvol5:
lvcreate -L 64 /dev/vg01
lvol6:
lvcreate -L 20 /dev/vg01
lvol7:
lvcreate -L 500 /dev/vg01
lvol8:
lvcreate -L 500 /dev/vg01
6) Copy each logical volume except the swap which is usually lvol2.
dd if=/dev/vg00/rlvol1 of=/dev/vg01/rlvol1 bs=1024k
dd if=/dev/vg00/rlvol3 of=/dev/vg01/rlvol3 bs=1024k
dd if=/dev/vg00/rlvol4 of=/dev/vg01/rlvol4 bs=1024k
dd if=/dev/vg00/rlvol5 of=/dev/vg01/rlvol5 bs=1024k
dd if=/dev/vg00/rlvol6 of=/dev/vg01/rlvol6 bs=1024k
dd if=/dev/vg00/rlvol7 of=/dev/vg01/rlvol7 bs=1024k
dd if=/dev/vg00/rlvol8 of=/dev/vg01/rlvol8 bs=1024k
7) Verify the integrity of all the new volume except swap.
Note: The following lines are base on a system with vxfs
filesystems except for /stand (lvol1) which needs to be hfs.
fsck -F hfs /dev/vg01/rlvol1
fsck -F vxfs /dev/vg01/rlvol3
fsck -F vxfs /dev/vg01/rlvol4
fsck -F vxfs /dev/vg01/rlvol5
fsck -F vxfs /dev/vg01/rlvol6
fsck -F vxfs /dev/vg01/rlvol7
fsck -F vxfs /dev/vg01/rlvol8
8) Now configure the Boot Data Reserved Area (BDRA)
Note: The following commands assume that /stand is lvol1,
swap is lvol2 and / is lvol3
lvlnboot -b /dev/vg01/lvol1 /dev/vg01
lvlnboot -r /dev/vg01/lvol3 /dev/vg01
lvlnboot -s /dev/vg01/lvol2 /dev/vg01
lvlnboot -d /dev/vg01/lvol2 /dev/vg01
9) Modify the fstab file on the new disk.
a) If /tmp_mnt doesn't exist create it
mkdir /tmp_mnt
b) Mount the new root filesystem on /tmp_mnt
mount /dev/vg01/lvol3 /tmp_mnt
c) change to etc directory on the new disk.
cd /tmp/etc
d) Modify all occurence of vg00 in the fstab for vg01
sed "s/vg00/vg01/" fstab > fstab.out
mv fstab fstab.BAK
mv fstab.out fstab
e) Unmount the new root filesystem
cd /
umount /tmp_mnt



XI) How to mirror a logical volume
Note: Data mirroring is provided by an additionnal purchasable
software product called MirrorDisk/UX.

Note: the following example is using the volume group vg01 and the
logical volume lvhome

To add a mirror to an existing logical volume:
lvextend -m 1 /dev/vg01/lvhome

This will add 1 mirror (2 copies of the filesystem).
To add 2 mirrors (3 copies of the filesystem) use -m 2 instead.

To create a new logical volume of 200M with 1 mirror:
lvcreate -m 1 -L 200 /dev/vg01


XII) How to unmirror a logical volume
Note: the following example is using the volume group vg01 and the
logical volume lvhome

lvreduce -m 0 /dev/vg01/lvhome


XIII) How to create a mirrored boot disk

Note the following example is using the disk c1t6d0 as the
mirrored boot disk and c0t6d0 as the boot disk.

1) Initialize the disk and make it bootable
pvcreate -B /dev/rdsk/c1t6d0
Note: the -B parameter tell pvcreate that this will be a
bootable disk.
2) Add the physical volume to the volume group
vgextend /dev/vg01 /dev/dsk/c1t6d0
3) Use mkboot to place the boot utilities in the boot area and add
the AUTO file.
mkboot /dev/dsk/c1t6d0
mkboot -a "hpux -lq" /dev/rdsk/c1t6d0
4) Use mkboot to update the AUTO file on the primary boot
disk.
mkboot -a "hpux -lq" /dev/rdsk/c0t6d0
5) Mirror the stand, root and swap logical volumes
lvextend -m 1 /dev/vg00/lvol1
lvextend -m 1 /dev/vg00/lvol2
lvextend -m 1 /dev/vg00/lvol3
Note: LVM will resynchronize the new mirror copies. This step will
takes several minutes

Repeat the lvextend for all other logical volumes on the boot
mirror.
6) Modify your alternate boot path to point to the mirror copy of the
boot disk.
setboot -a 8/8.6.0 # Use the Hardware path for your new
boot disk.


XIV) How to mirror a logical volume on a specific physical volume

Note: the following example, is using the disk c1t6d0 for the
primary copy, c2t6d0 for the mirror copy, the volume group vg01,
the logical volume lvhome and the size will be 200M

lvcreate -n lvhome /dev/vg01
lvextend -L 200 /dev/vg01/lvhome /dev/dsk/c1t6d0
lvextend -m 1 /dev/vg01/lvhome /dev/dsk/c2t6d0


XV) How to create a Physical Volume Group (PVG)
create a file named /etc/lvmpvg with the following syntax:
VG vg_name
PVG pvg_name
pv_path
...
PVG pvg_name
pv_path
...
VG vg_name
PVG pvg_name
pv_path
...

For example, to use two PVGs in vg01 with c1t6d0 and c2t6d0
in one PVG (PVG0), c3t6d0 and c4t6d0 in the other PVG (PVG1) the
contents of the file (/etc/lvmpvg) should be:

VG /dev/vg01
PVG PVG0
/dev/dsk/c1t6d0
/dev/dsk/c2t6d0
PVG PVG1
/dev/dsk/c3t6d0
/dev/dsk/c4t6d0


XVI) How to use PVG to mirror logical volumes on specific physical volumes.

Note: in the following text, the volume group will be vg01 and the
logical volume will be name lvhome

After creating the /etc/lvmpvg file as describe above, each copy
of your mirror could be force on different PVG. To achieve this if
the logical volume is already created but not mirrored yet, use the
following command:
lvchange -s g /dev/vg01/lvhome
lvextend -m 1 /dev/vg01/lvhome
If the logical volume is not created yet:
lvcreate -s g -m 1 -n lvhome -L 200 /dev/vg01




Index:
Regular tasks
I) How to create a Volume Group (VG).
II) How to create a Logical Volume (LV) and mount the filesystem.
III) How to add a disk to a Volume Group
IV) How to increase the size of a logical volume without OnlineJFS
(advanced JFS)
V) How to remove a Logical Volume
VI) How to reduce the size of a logical volume without OnlineJFS
(advanced JFS)
VII) How to remove a disk from a volume group
VIII) How to remove a volume group
IX) How to increase the primary swap
X) How to create a secondary boot disk
LVM Mirroring
XI) How to mirror a logical volume
XII) How to unmirror a logical volume
XIII) How to create a mirrored boot disk
XIV) How to mirror a logical volume on a specific physical volume
Physical Volume Group
XV) How to create a Physical Volume Group (PVG)
XVI) How to use PVG to mirror logical volumes on specific physical
volumes.