Changes

Jump to: navigation, search

Adding a New Disk to an RHEL 6 Volume Group and Logical Volume

11,237 bytes added, 15:43, 14 December 2010
New page: In the previous chapter we looked at adding a new disk drive to a Red Hat Enterprise Linux 6 system, creating a partition and file system and then mounting that file system so that the dis...
In the previous chapter we looked at adding a new disk drive to a Red Hat Enterprise Linux 6 system, creating a partition and file system and then mounting that file system so that the disk can be accessed. An alternative to creating fixed partitions and file systems is to use Logical Volume Management (LVM) to create logical disks made of space from one or more physical disks or partitions. The advantage of using LVM is that space can be added to or removed from logical volumes as needed without the need to spread data over multiple file systems.

Let us take, for example, the root (/) file system of an RHEL 6 based server. Without LVM this file system would be created with a certain size when the operating is installed. If a new disk drive is installed there is no way to allocate any of that space to the / file system. The only option would be to create new file systems on the new disk and mount them at particular mount points. In this scenario you would have plenty of space on the new file system but the / file system would still be nearly full. The only option would be to move files onto the new file system. With LVM, the new disk (or part thereof) can be assigned to the logical volume containing the root file system thereby dynamically extending the space available.

In this chapter we will look at the steps necessary to add new disk space to both a volume group and a logical volume for the purpose of adding additional space to the root file system of an RHEL 6 system.

== An Overview of Logical Volume Management (LVM) ==

LVM provides a flexible and high level approach to managing disk space. Instead of each disk drive being split into partitions of fixed sizes onto which fixed size file systems are created, LVM provides a way to group together disk space into logical volumes which can be easily resized and moved. In addition LVM allows administrators to carefully control disk space assigned to different groups of users by allocating distinct volume groups or logical volumes to those users. When the space initially allocated to the volume is exhausted the administrator can simply add more space without having to move the user files to a different file system.
LVM consists of the following components:

=== Volume Group (VG) ===

The Volume Group is the high level container which holds one or more logical volumes and physical volumes.

=== Physical Volume (PV) ===

A physical volume represents a storage device such as a disk drive or other storage media.

=== Logical Volume (LV) ===

A logical volume is the equivalent to a disk partition and, as with a disk partition, can contain a file system.

=== Physical Extent (PE) ===
Each physical volume (PV) is divided into equal size blocks known as physical extents.

=== Logical Extent (LE) ===

Each logical volume (LV) is divided into equal size blocks called logical extents.
Let's suppose we are creating a new volume group called VolGroup001. This volume group needs physical disk space in order to function so we allocate three disk partitions /dev/sda1, /dev/sdb1 and /dev/sdb2. These become physical volumes in VolGroup001. We would then create a logical volume called LogVol001 within the volume group made up of the three physical volumes.
If we run out of space in LogVol001 we simply add more disk partitions as physical volumes and assign them to the volume group and logical volume.

== Getting Information about Logical Volumes ==

As an example of using LVM with RHEL 6 we will work through an example of adding space to the / filesystem of a standard RHEL installation. Anticipating the need for flexibility in the sizing of the root partition, RHEL 6 sets up the / file system as a logical volume (called lv_root) within a volume group called vg_name where name corresponds to the hostname of the RHEL 6 system. Before making any changes to the LVM setup, however, it is important to first gather information.

Running the ''mount'' command on will typically show output similar to the following:

<pre>
/dev/mapper/vg_rhel6-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sr0 on /media/RHEL_6.0 x86_64 Disc 1 type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=500,gid=500,iocharset=utf8,mode=0400,dmode=0500)
</pre>

Information about the volume group can be obtained using the /usr/sbin/vgdisplay command:

<pre>
# vgdisplay
--- Volume group ---
VG Name vg_rhel6
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 15.51 GiB
PE Size 4.00 MiB
Total PE 3970
Alloc PE / Size 3970 / 15.51 GiB
Free PE / Size 0 / 0
VG UUID 7RKLdp-Lc86-twXj-1QOf-BKFf-i0HP-5vSyYd
</pre>

As we can see the in the above example, vg_rhel6 has a physical extend size of 4.00MB and has a total of 15.51GB available for allocation to logical volumes. Currently 3970 physical extents are allocated equaling the total 15.51GB capacity. If we want to increase the space allocated to any logical volumes in vg_rhel6 we will need to add one or more physical volumes.

The same information can be viewed graphically using the Logical Volume Manager tool, accessed by selecting the ''System -> Administration -> Logical Volume Management'' menu option. This tool is not installed by default, so if the menu option is not available the tool may be installed from a terminal window by entering the following commands:

<pre>
su –
yum install system-config-lvm
</pre>

Once installed and running, the tool will appear as illustrated in the following figure:


[[Image:rhel6_system-config-lvm.jpg|RHEL 6 system-config-lvm Logical Volume Management tool running]]


Information about logical volumes in a volume group may similarly be obtained using the lvdisplay command:

<pre>
# lvdisplay
--- Logical volume ---
LV Name /dev/vg_rhel6/lv_root
VG Name vg_rhel6
LV UUID nU70n0-scyi-xp2S-1CNq-GUa1-4Vad-gQKIOO
LV Write Access read/write
LV Status available
# open 1
LV Size 13.54 GiB
Current LE 3466
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/vg_rhel6/lv_swap
VG Name vg_rhel6
LV UUID 5uVonb-SCk2-bedt-4Oj3-LGpq-TpsA-qyCGEl
LV Write Access read/write
LV Status available
# open 1
LV Size 1.97 GiB
Current LE 504
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
</pre>

As shown in the above example 13.54GB of the space in volume group vg_rhel6 is allocated to logical volume lv_root (for the / file system) and 1.97GB to lv_swap (for swap space).

Now that we know what space is being used it is often helpful to understand which devices are providing the space (in other words which devices are being used as physical volumes). To obtain this information we need to run the ''pvdisplay'' command:

<pre>
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_rhel6
PV Size 15.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 3970
Free PE 0
Allocated PE 3970
PV UUID kYpDNk-feXG-A2Hm-iVqF-Ic1U-gi0U-niVdWc
PV UUID VN332E-sYOx-Kkm9-EE8b-4wKs-ln9D-qiiJZ6
</pre>

Clearly the space controlled by logical volume vg_rhel6 is provided via a physical volume located on /dev/sda2.

Now that we know a little more about our LVM configuration we can embark on the process of adding space to the volume group and the logical volume contained within.

== Adding Additional Space to an RHEL 6 Volume Group from the Command Line ==

Just as with the previous steps to gather information about the current Logical Volume Management configuration of an RHEL 6 system, changing this configuration can be performed both from the command line and from within the graphical volume management tool. In this section we will focus on the use of command line tools.

In the remainder of this chapter we will assume that a new disk has been added to the system and that it is being seen by the operating system as /dev/sdb. We shall also assume that this is a new disk that does not contain any existing partitions. If existing partitions are present they should be backed up and then the partitions deleted from the disk using the fdisk utility.

The first step is to convert this disk into a physical volume. This is achieved using the ''pvcreate'' command:

<pre>
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
</pre>

With the physical volume created we now need to add it to the volume group (in this case vg_kvmfed11) using the vgextend command:

<pre>
# vgextend vg_rhel6 /dev/sdb
Volume group "vg_rhel6" successfully extended
</pre>

The new physical volume has now been added to the volume group and is ready to be allocated to a logical volume. To do this we run the ''lvextend'' tool providing the size by which we wish to extend the volume. In this case we want to extend the size of lv_root by 10 GB. Note that we need to provide the path to the logical volume which can be obtained from the ''lvdisplay'' command (in this case /dev/vg_rhel6/lv_root):

<pre>
# lvextend -L+10G /dev/vg_rhel6/lv_root
Extending logical volume lv_root to 23.54 GiB
Logical volume lv_root successfully resized
</pre>

The last step in the process is to resize the file system residing on the logical volume so that it uses the additional space. Since we are assuming a default RHEL 6 installation here this can be achieved using the ''resize2fs'' command:

<pre>
# resize2fs /dev/vg_rhel6/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_rhel6/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_rhel6/lv_root to 6170624 (4k) blocks.
The filesystem on /dev/vg_rhel6/lv_root is now 6170624 blocks long.
</pre>

Once the resize completes the file system will have been extended to use the additional space provided by the new disk drive. All this has been achieved without moving a single file or even having to restart the server. As far as any users on the system are concerned nothing has changed (except, of course, that there is now more disk space).

Navigation menu