Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
mike_dehart
Explorer


Purpose:



In many scenarios, the default disk allocation for Linux partitions is inadequate for installation of larger HANA-based systems. This guide will detail formatting additional disk volumes and extending the Linux Volume Manager (LVM) partitions to include the added space.

In my scenario, I found it necessary to extend both /var and /opt directories when installing Hadoop, which I will walk through below.

Steps:



  1. Creating the Volume

  2. Adding the volume to volume group

  3. Extending the volume partitions


Creating the Volume


This step will be specific to your environment. In cloud scenarios additional virtual disks can often be attached to nodes in your cluster, or actual physical disks can be added to each node. Once added, the disk should be accessible from /dev/sd*. The exact letter will depend on the number of disks attached (/dev/sda, /dev/sdb, /dev/sdc, etc.)

Adding the volume to volume group


Next we need to SSH to the instance where we attached the volume. Once connected log in as root.

In my case, my disk is available at /dev/sdb by default

# ls -al /dev/xxxx/vol-e338e620

lrwxrwxrwx 1 root root 6 Feb 14 20:13 /dev/xxxx/vol-e338e620-> ../sdb


Right now, our connected hard drive is on /dev/sda and is split into two paritions: a boot partition (sda1) and the LVM hard drive partition (sda2). Our attached storage (sdb) is still un-formatted and without a filesystem:

# fdisk -l /dev/sda

Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009dda3

Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 7833 62606336 8e Linux LVM


# fdisk -l /dev/sdb

Disk /dev/sdb: 268.4 GB, 268435456000 bytes
255 heads, 63 sectors/track, 32635 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


We need to identify the volume group (VG) being used as this is what we will need to extend. You can confirm the name of the VG using vgdisplay like below:

# vgdisplay

--- Volume group ---
VG Name VOL
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 6
Open LV 6
Max PV 0
Cur PV 1
Act PV 1
VG Size 59.69 GiB
PE Size 32.00 MiB
Total PE 1910
Alloc PE / Size 1910 / 59.69 GiB
Free PE / Size 0 / 0
VG UUID YthGca-Su6c-LgkQ-5Miy-XIOI-heyb-da4nuO


We’ll use fdisk to create a new partition of type 8e (Linux LVM). The order of commands is below:

# fdisk /dev/sdb

n - create a new partition
p - specify primary
[enter] x2 - use the entire disk
t - change type
8e - Linux LVM type
w - write partition table to disk and exit


Within fdisk, press m at any point to see a list of possible commands. Once written, your new disk should look like this:

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1 1 32635 262140606 8e Linux LVM


Now we create a new Physical Volume (PV) to use this new partition using pvcreate command:

# pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created


Next, use pvextend to extend our volume group VOL to include the new volume:

# vgextend /dev/VOL /dev/sdb1

Volume group "VOL" successfully extended


Extending the volume partitions


Finally we’ll extend our partitions and then resize the filesystem. You can see a list of all partitions under /dev/VOL/.

First, we’ll use lvextend to extend each logical volume. In this example I am assigning an additional 100GB to each node:

# lvextend -L +100G /dev/VOL/opt

Size of logical volume VOL/opt changed from 7.72 GiB (247 extents) to 107.72 GiB (3447 extents).
Logical volume opt successfully resized


# lvextend -L +100G /dev/VOL/var

Size of logical volume VOL/var changed from 5.94 GiB (190 extents) to 105.94 GiB (3390 extents).
Logical volume var successfully resized.


Now in order to use the new space, we need to extend the filesystem. The command run will depend on the filesystem in use. Issuing df -T will provide the filesystems for all disks. For ext2, ext3, and ext4 filesystems we can use resize2fs:

# resize2fs /dev/VOL/var

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VOL/var is mounted on /var; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 7
Performing an on-line resize of /dev/VOL/var to 27770880 (4k) blocks.
The filesystem on /dev/VOL/var is now 27770880 blocks long.


# resize2fs /dev/VOL/opt

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VOL/opt is mounted on /opt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 7
Performing an on-line resize of /dev/VOL/opt to 28237824 (4k) blocks.
The filesystem on /dev/VOL/opt is now 28237824 blocks long.


Your volumes should now be extended! You can confirm by issuing df -h. Below, we can see /var is now 105G and /opt is 106G:

# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VOL-root 32G 2.3G 28G 8% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 283M 32M 236M 12% /boot
/dev/mapper/VOL-home 2.9G 4.6M 2.8G 1% /home
/dev/mapper/VOL-opt 106G 4.8G 96G 5% /opt
/dev/mapper/VOL-tmp 7.5G 48M 7.1G 1% /tmp
/dev/mapper/VOL-var 105G 2.5G 97G 3% /var



1 Comment