HOW TO EXTEND A LINUX LVM VOLUME
This example is a Debian-based virtual machine managed by ESXi 4.1.
Let’s see what the disk space looks like before we make any changes:
$ df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/vmorfels01-root                       19G  1.5G   17G   9% /none                  495M  172K  495M   1% /devnone                  500M     0  500M   0% /dev/shmnone                  500M   40K  500M   1% /var/runnone                  500M     0  500M   0% /var/locknone                  500M     0  500M   0% /lib/init/rwnone                   19G  1.5G   17G   9% /var/lib/ureadahead/debugfs/dev/sda1             228M   33M  184M  15% /boot | 
This is a typical LVM config where the total disk size is about 20GB.
Give it more disk
Firstly I will change the provisioned size of the disk. In my example I am using vSphere client to change the provisioned size of the virtual server’s disk from 20GB to 30GB to be able to have some more space on the server.
Add a partition to the disk
Power up the machine and run fdisk to configure the disk.
orfels@vmorfels01:~$ sudo /sbin/fdisk /dev/sda | 
Print the partition table
Command (m for help): pDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0009b807   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          32      248832   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              32        2611    20719617    5  Extended/dev/sda5              32        2611    20719616   8e  Linux LVMCommand (m for help): | 
Add a primary partition
fdisk commands used:
- n – New partition
 - p – Print partition table
 - t – Change system type
 - w – Write changes to partition table
 
Command (m for help): nCommand action   l   logical (5 or over)   p   primary partition (1-4)pPartition number (1-4): 3First cylinder (2611-3916, default 2611):Using default value 2611Last cylinder, +cylinders or +size{K,M,G} (2611-3916, default 3916):Using default value 3916Command (m for help): pDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0009b807   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          32      248832   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              32        2611    20719617    5  Extended/dev/sda3            2611        3916    10484774   83  Linux/dev/sda5              32        2611    20719616   8e  Linux LVM | 
Change the system type of partition to 8e, which is type LVM:
Command (m for help): tPartition number (1-5): 3Hex code (type L to list codes): 8eChanged system type of partition 3 to 8e (Linux LVM)Command (m for help): pDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0009b807   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1          32      248832   83  LinuxPartition 1 does not end on cylinder boundary./dev/sda2              32        2611    20719617    5  Extended/dev/sda3            2611        3916    10484774   8e  Linux LVM/dev/sda5              32        2611    20719616   8e  Linux LVMCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks. | 
Now it is time to reboot the machine.
$ sudo shutdown -r now | 
Set up a new physical volume
Once the machine has been restarted, let’s use pvdisplay to see what the physical volume looks like now.
orfels@vmorfels01:~$ sudo /sbin/pvdisplay  --- Physical volume ---  PV Name               /dev/sda5  VG Name               vmorfels01  PV Size               19.76 GiB / not usable 2.00 MiB  Allocatable           yes  PE Size               4.00 MiB  Total PE              5058  Free PE               4  Allocated PE          5054  PV UUID               pt2ToJ-Bb55-Q82r-j4Tm-UZA9-KfJ4-H33YEA | 
Now run pvcreate to create a new physical volume.
orfels@vmorfels01:~$ sudo /sbin/pvcreate /dev/sda3  Physical volume "/dev/sda3" successfully created | 
Consume the new physical volume
Extend the volume group to consume the new physical volume, allowing us to use some or all of the new physical volume.
orfels@vmorfels01:~$ sudo /sbin/vgextend vmorfels01 /dev/sda3  Volume group "vmorfels01" successfully extended | 
Considering that for this example I have added 10GB to the virtual machine’s disk, let’s check how much free there is:
orfels@vmorfels01:~$ sudo /sbin/vgdisplay | grep Free  Free  PE / Size       2563 / 10.01 GiB | 
Grow the logical volume across the new partition, extending the logical volume with all the amount of free space found.
orfels@vmorfels01:~$ sudo /sbin/lvextend -L+10GB /dev/vmorfels01/root  Extending logical volume root to 28.88 GiB  Logical volume root successfully resized | 
Expand/resize the file system to use the space. The following command will grow to the maximum available size.
orfels@vmorfels01:~$ sudo resize2fs /dev/vmorfels01/rootresize2fs 1.41.11 (14-Mar-2010)Filesystem at /dev/vmorfels01/root is mounted on /; on-line resizing requiredold desc_blocks = 2, new_desc_blocks = 2Performing an on-line resize of /dev/vmorfels01/root to 7570432 (4k) blocks.The filesystem on /dev/vmorfels01/root is now 7570432 blocks long. | 
We have more space!
Now check the space to see the change:
orfels@vmorfels01:~$ df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/vmorfels01-root                       29G  846M   27G   4% /none                  496M  176K  495M   1% /devnone                  500M     0  500M   0% /dev/shmnone                  500M   36K  500M   1% /var/runnone                  500M     0  500M   0% /var/locknone                  500M     0  500M   0% /lib/init/rw/dev/sda1             228M   17M  199M   8% /boot | 

No comments:
Post a Comment