Red Hat Bugzilla – Bug 1343571
Need Support for Cloud Instances That Use LVM-hosted "/"
Last modified: 2016-06-07 09:39:42 EDT
Description of problem: Current packaging of cloud-initramfs-tools only supports expansion of disk hosting "/" if "/" is hosted on a disk that is either wholly unpartitioned or is partitioned with standard (primary/logical/extended). Currently, there is no support for expansion of partitions containing an LVM-hosted "/". Note: some security compliance suites (e.g., DISA STIGs) mandate the use of a specific minimum set of partitions implemented via LVM2. Version-Release number of selected component (if applicable): dracut-modules-growroot version 0.20-2 cloud-utils-growpart version 0.27-10 Tested on RHEL 6.7 & 6.8 as well as CentOS 6.7 and 6.8 (hosted within AWS) How reproducible: Nothing to reproduce: it's in the package design Steps to Reproduce: 1. Launch cloud instance with LVM-partitioned root filesystem - setting root disk size greater than template-size 2. Install dracut-modules-growroot 3. Reboot: Actual results: When system comes back from reboot, partition hosting the root volume-group remains the same size Expected results: Partition containing the root volume group expands Additional info: A slight modification to the /usr/share/dracut/modules.d/50growroot/growroot.sh file to add logic for finding what partition hosts "/" will allow the final: if out=$(growpart --update off "${rootdisk}" "${partnum}" 2>&1) ; then _info "${out}" statement to function, correctly. As a quick-n-dirty work-around, I've changed the original snippet: _growroot() { # Remove 'block:' prefix and find the root device rootdev=$(readlink -f "${root#block:}") with: > _growroot() { > # Compute root-device > if [ -z "${root##*mapper*}" ] > then > set -- "${root##*mapper/}" > VOLGRP=${1%-*} > ROOTVOL=${1#*-} > rootdev=$(readlink -f $(pvs --noheadings | awk '/'${VOLGRP}'/{print $1}')) > _info "'/' is hosted on an LVM2 volume: setting \$rootdev to ${rootdev}" > else > # Remove 'block:' prefix and find the root device > rootdev=$(readlink -f "${root#block:}") > fi In mine. Obviously, it assumes that "/" will never span multiple PVs, so, probably wants some cleanup. Further note: while the above code-change allows the grow-root against the partition containing the PV hosting "/" to succeed, it typically requires a reboot to fully-effect: first boot grows what is seen by sfdisk; second boot grows what is seen by lsblk (and pvresize).