Resizing LVM

Linux-logo-8EC59678CB-seeklogo.com

Many years ago now stumbling across this information was very useful to me. I figure now that unless it’s passed on again, with my own additional notes, how is the next person going to find it?

One of the great things about installing Linux with LVM (Logical Volume Manager) is that it is ridiculously easy to increase space on a virtual machine. On the platform of your choice add an additional HDD to the virtual machine and then follow these steps:

First, you need to be sure the system sees the new HDD that has been added. In this example, it is /dev/sdb.

fdisk -l
 
Disk /dev/sda: 42.9 GB, 42949672960 bytes
 255 heads, 63 sectors/track, 5221 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 
Device Boot Start End Blocks Id System
 /dev/sda1 * 1 666 5345248+ 83 Linux
 Partition 1 does not end on cylinder boundary.
 /dev/sda2 666 5222 36596736 8e Linux LVM

Now that we know /dev/sdb has been found and is the size we expect:

pvcreate /dev/sdb
 Writing physical volume data to disk "/dev/sdb1"
 Physical volume "/dev/sdb1" successfully created

Use the vgs command find out the name of your volume group and then extend it to /dev/sdb:

vgs

VG #PV #LV #SN Attr VSize VFree
vg00 3 10 0 wz--n- 113.91g 34.97g

vgextend vg00 /dev/sdb
Volume group "vg00" successfully extended

Going down the line the next one up is to extend the logical volume:

lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 vg00 -wi-ao 29.06G
LogVol01 vg00 -wi-ao 5.81G 

lvextend -l +100%FREE /dev/vg00/LogVol00vg
Extending logical volume LogVol00 to 49.03 GB
Logical volume LogVol00 successfully resized

Make sure that it now sees all the space properly:

lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 vg00 -wi-ao 49.03G
LogVol01 vg00 -wi-ao 5.81G

Next we need to extend the actual filesystem itself and which path you choose depends if your running RHEL/CentOS 6.x or 7.x

For 6.x you would run:

resize2fs /dev/mapper/LogVol-vg00

For 7.x you would run:

xfs_growfx /dev/mapper/LogVol-vg00

This part can take a few seconds, minutes or longer depending upon the size you are undertaking and activity on the server. Again, if this is a highly active server you are going to need a maintenance window, do not try this during the day.

DevStack Formula

OpenStack®_Logo_2016.svg

Recently I started to get my hands dirty with learning more about DevStack which is a quick way to deploy OpenStack to test with. As with many of open source projects like OpenStack, OpenShift and Cloud Foundry I find the documentation often to be sorely lacking on specifics. In some cases I cannot explain why, in others it’s because they want you to use the paid version instead.

My stepup is on Ubuntu 18.04.1 and the local.conf that I used is below. All I can say is that this worked for me to just get it installed. How exactly functional after that I have not yet gotten to but hopefully this helps someone get started as well.

Note you will likely need to change the FLOATING_RANGE to match your network. The documentation is otherwise decent but I’ll include a few more getting started commands below:

Getting Started

sudo useradd -s /bin/bash -d /opt/stack -m stack

echo “stack ALL=(ALL) NOPASSWD: ALL” | sudo tee /etc/sudoers.d/stack

sudo su – stack

git clone https://git.openstack.org/openstack-dev/devstack

cd devstack

Create the local.conf listed below

Then lastly run ./stack

Local.conf

[[local|localrc]]

ADMIN_PASSWORD=nova
MYSQL_PASSWORD=nova
RABBIT_PASSWORD=nova

SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=nova

# Enable Swift

enable_service s-proxy s-object s-container s-account

# Enable sahara

enable_plugin sahara git://git.openstack.org/openstack/sahara

# Enable ceilometer

enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer

SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
SWIFT_DATA_DIR=$DEST/data

# Check out from repos every time stack.sh is run
# This is optional and can be changed to no.

RECLONE=yes

# By default `stack.sh` will only install Python packages if no versi# on is currently installed, or the current version does not match a # specified requirement. If `PIP_UPGRADE` is set to `True` then exist# ing #required Python packages will be upgraded to the most recent v# ersion #that matches requirements. This is generally recommended,  # as most of # OpenStack is tested on latest packages, rather than ol# der versions.# The default is False.

PIP_UPGRADE=TRUE

# host ip

HOST_IP=127.0.0.1

# Change the FLOATING_RANGE to whatever IPs VM is working in. In NAT # mode it is the subnet VMware Fusion provides, in bridged mode it is# your local network. But only use the top end of the network by usin# g a /27 and starting at the 224 octet.

FLOATING_RANGE=10.0.1.224/27

# Logging

# By default ``stack.sh`` output only goes to the terminal where it runs.  It can be configured to additionally log to a file by setting ``LOGFILE`` to the full path of the destination log file.  A timestamp will be appended to the given name.

LOGFILE=$DEST/logs/stack.sh.log

# Old log files are automatically removed after 7 days to keep things neat.  Change the number of days by setting ``LOGDAYS``.

LOGDAYS=2

# basic syslog settings

SYSLOG=True
SYSLOG_HOST=$HOST_IP
SYSLOG_PORT=516

Cheat Sheets

redhat-logo_0

Redhat has recently been pushing their new developer portal pretty hard. They have finally, to little to late in some peoples minds, opened up Redhat Enterprise Linux to developers for no charge. Along with this, they have a series of excellent cheat sheets which for those still learning, or just cannot remember every little command I’ve found to be very helpful.