Showing posts with label Disk Management. Show all posts
Showing posts with label Disk Management. Show all posts

Monday, August 17, 2009

Extending a logical volume

To extend a logical volume you simply tell the lvextend command how much you want to increase the size. You can specify how much to grow the volume, or how large you want it to grow to:

# lvextend -L12G /dev/myvg/homevol

lvextend -- extending logical volume "/dev/myvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended

will extend /dev/myvg/homevol to 12 Gigabytes.

# lvextend -L+1G /dev/myvg/homevol

lvextend -- extending logical volume "/dev/myvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended

will add another gigabyte to /dev/myvg/homevol.

After you have extended the logical volume it is necessary to increase the file system size to match. how you do this depends on the file system you are using.

By default, most file system resizing tools will increase the size of the file system to be the size of the underlying logical volume so you don't need to worry about specifying the same size for each of the two commands.

  1. ext2/ext3

    Unless you have patched your kernel with the ext2online patch it is necessary to unmount the file system before resizing it. (It seems that the online resizing patch is rather dangerous, so use at your own risk)

     # umount /dev/myvg/homevol/dev/myvg/homevol
    # resize2fs /dev/myvg/homevol
    # mount /dev/myvg/homevol /home

    If you don't have e2fsprogs 1.19 or later, you can download the ext2resize command from ext2resize.sourceforge.net and use that:

     # umount /dev/myvg/homevol/dev/myvg/homevol
    # ext2resize /dev/myvg/homevol
    # mount /dev/myvg/homevol /home

    For ext2 there is an easier way. LVM 1 ships with a utility called e2fsadm which does the lvextend and resize2fs for you (it can also do file system shrinking, see the next section).

    WarningLVM 2 Caveat

    There is currently no e2fsadm equivalent for LVM 2 and the e2fsadm that ships with LVM 1 does not work with LVM 2.

    so the single command
       # e2fsadm -L+1G /dev/myvg/homevol
    is equivalent to the two commands:
     # lvextend -L+1G /dev/myvg/homevol
    # resize2fs /dev/myvg/homevol

    NoteNote

    You will still need to unmount the file system before running e2fsadm.

  2. reiserfs

    Reiserfs file systems can be resized when mounted or unmounted as you prefer:

    • Online:

         # resize_reiserfs -f /dev/myvg/homevol

    • Offline:

      # umount /dev/myvg/homevol
      # resize_reiserfs /dev/myvg/homevol
      # mount -treiserfs /dev/myvg/homevol /home

  3. xfs

    XFS file systems must be mounted to be resized and the mount-point is specified rather than the device name.

       # xfs_growfs /home

  4. jfs

    Just like XFS the JFS file system must be mounted to be resized and the mount-point is specified rather than the device name. You need at least Version 1.0.21 of the jfs-utils to do this.

    # mount -o remount,resize /home

    WarningKnown Kernel Bug

    Some kernel versions have problems with this syntax (2.6.0 is known to have this problem). In this case you have to explicitly specify the new size of the filesystem in blocks. This is extremely error prone as you must know the blocksize of your filesystem and calculate the new size based on those units.

    Example: If you were to resize a JFS file system to 4 gigabytes that has 4k blocks, you would write:

    # mount -o remount,resize=1048576 /home

Reducing a logical volume

Logical volumes can be reduced in size as well as increased. However, it is very important to remember to reduce the size of the file system or whatever is residing in the volume before shrinking the volume itself, otherwise you risk losing data.

  1. ext2
    If you are using LVM 1 with ext2 as the file system then you can use the e2fsadm command mentioned earlier to take care of both the file system and volume resizing as follows:


    # umount /home
    # e2fsadm -L-1G /dev/myvg/homevol
    # mount /home
    
    WarningLVM 2 Caveat
    There is currently no e2fsadm equivalent for LVM 2 and the e2fsadm that ships with LVM 1 does not work with LVM 2.
    If you prefer to do this manually you must know the new size of the volume in blocks and use the following commands:


    # umount /home
    # resize2fs /dev/myvg/homevol 524288
    # lvreduce -L-1G /dev/myvg/homevol
    # mount /home
    

  2. reiserfs
    Reiserfs seems to prefer to be unmounted when shrinking


    # umount /home
    # resize_reiserfs -s-1G /dev/myvg/homevol
    # lvreduce -L-1G /dev/myvg/homevol
    # mount -treiserfs /dev/myvg/homevol /home
    

  3. xfs
    There is no way to shrink XFS file systems.

  4. jfs
    There is no way to shrink JFS file systems.


    Differences between LVM1 and LVM2

The new release of LVM, LVM 2, is available only on Red Hat Enterprise Linux 4 and later kernels. It is upwardly compatible with LVM 1 and retains the same command line interface structure. However it uses a new, more scalable and resilient metadata structure that allows for transactional metadata updates (that allow quick recovery after server failures), very large numbers of devices, and clustering. For Enterprise Linux servers deployed in mission-critical environments that require high availability, LVM2 is the right choice for Linux volume management. Table 1. A comparison of LVM 1 and LVM 2 summarizes the differences between LVM1 and LVM2 in features, kernel support, and other areas.

Features LVM1 LVM2
RHEL AS 2.1 support No No
RHEL 3 support Yes No
RHEL 4 support No Yes
Transactional metadata for fast recovery No Yes
Shared volume mounts with GFS No Yes
Cluster Suite failover supported Yes Yes
Striped volume expansion No Yes
Max number PVs, LVs 256 PVs, 256 LVs 2**32 PVs, 2**32 LVs
Max device size 2 Terabytes 8 Exabytes (64-bit CPUs)
Volume mirroring support No Yes, in Fall 2005

Table 1. A comparison of LVM 1 and LVM 2