vgscan --force-all-update-reread-and-take-that-kernel
Hello lvm folks,
Before I give you the whole shpiel... the issue I am having here
is that vgscan is unable to find an existing volume group after a repartitioning of the disk using 'parted' (hence the subject line that implies that vgscan needs an option to slap the kernel a little harder in some cases).
I am using lvm to automaticly extend a logical partition
to span the "rest of the harddisk", in the case that there are some unused gigs on the disk.
I've written a little script (which I'll attach here) that basicly:
- Resizes the extended partition
- Creates a new logical partition in the newly allocated space inside the extended partition
- Creates a new "physical volume" on the new partition
- Adds the new "physical volume" to the already existing "volume group"
- Extends the "logical volume" to span the entire "volume group"
The script works fine it you type it all out by hand in the shell and wait a few secs and repeatedly check vgscan to see if its back up, when I run the script... I get:
From when I first issue a vgscan:
=================================
Reading all physical volumes. This may take a while... No volume groups found
From my next call to pvcreate:
==============================
Couldn't find device with uuid 'HAkK8E-D3CS-87kk-GtL0-6ZGC-1NKI-x65WQg'. Couldn't find all physical volumes for volume group massgaol. Couldn't find device with uuid 'HAkK8E-D3CS-87kk-GtL0-6ZGC-1NKI-x65WQg'. Couldn't find all physical volumes for volume group massgaol.
get_pv_from_vg_by_id: vg_read failed to read VG massgaol Physical volume "/dev/hdb7" successfully created
Anyway, I guess at this point y'all know what I'm rambling on about...
please let me know what I'm doing wrong or what I could be doing better :)
Cheers,
-Tristan
#!/bin/bash
# This scrip makes some evil assumptions:
#
# o That the disk was partitioned as 120 Gigs # o That the real disk size will be reported as numGB (in Gigs) # (i.e. this wont work if parted decides to display it in terabytes # or megabytes on some disks) #
OUTPATTERN="Disk /dev/hdb: "
DISKOUT=parted /dev/hdb print | grep "$OUTPATTERN"
DISKSIZE=${DISKOUT#$OUTPATTERN}
echo "this disk size is $DISKSIZE"
echo "that would be ${DISKSIZE%GB} Gigs I think"
DISKGIGS=${DISKSIZE%GB}
if [ $DISKGIGS -gt 120 ]; then
# Found a disk that is physically bigger than 120GB
# Resize the extended partition to span till the end of the disk parted /dev/hdb resize 4 3208MB $DISKSIZE
# Create /dev/hdb7 with the remaining disk space parted /dev/hdb mkpart logical 120GB $DISKSIZE
# XXX massgaol dissapears here for a few secs.... sleep 2
vgscan
# Give the system some time to create the fs nodes needed # to proceed
sleep 5
# Create a physical volume for
pvcreate -y -ff /dev/hdb7
# Adding more ...
sleep 2
# Scan volume groups... needed to make 'massgaol' recognized # in the next step.
vgscan
# Add new physical volume to the volume group vgextend massgaol /dev/hdb7
# Get the current size of the virtual group now... # (get the 12'th field, separated by ':'). VGSIZE=vgdisplay -c massgaol | cut -d : -f12
# Activate the group -- this creates /dev/massgaol/massgaolLV vgchange -ay
# Extend the logical volume to span the entire volume group lvextend /dev/massgaol/massgaolLV -L${VGSIZE}KB
# Resize sometimes wants an fsck first.
e2fsck -f /dev/massgaol/massgaolLV
# Resize the overlying filesystem
resize2fs /dev/massgaol/massgaolLV
# deactivate the group for now
vgchange -an
fi
Quoted 1 line · Tristan Van Berkom
Hello lvm folks,
Hi again...
seems I have found a way to make the script work, by making the
"volume group" active throughout the whole procedure.
So, before I commit that and close this book... is what I am doing insane ? is it crazy to go and add a new physical volume to a volume group that is living and breathing ? (i.e. "active" via `vgchange -ay')
Cheers,
-Tristan
Quoted 10 lines · --On June 28, 2006 12:25:48 PM -0400 Tristan Van Berkom <[email protected]> wrote:
Quoted 1 line · Tristan Van Berkom
Hello lvm folks,
Hi again...
seems I have found a way to make the script work, by making the
"volume group" active throughout the whole procedure.So, before I commit that and close this book... is what I am doing insane ? is it crazy to go and add a new physical volume to a volume group that is living and breathing ? (i.e. "active" via `vgchange -ay')
Yes. That's part of the whole point of LVM, it's operations can all be done online.
Quoted 10 lines
Cheers,
-Tristan_______________________________________________
linux-lvm mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
--
"Genius might be described as a supreme capacity for getting its possessors into trouble of all kinds."
-- Samuel Butler