1

I'm looking for a way of partitioning (in the end for a kickstart file for vm's) so that increasing of disk space is possible without taking the vm offline (no problem with lvm) but also without deleting/recreating the partitions - with onboard tools of centos.

Is there a possible way?

Thanks!

EDIT: This are my actual partition options in the kickstart file:

## Disk partitioning information

part pv.192 --fstype="lvmpv" --ondisk=sda --size=1 --grow
volgroup centos --pesize=4096 pv.192
logvol / fstype="xfs" --name=root --vgname=centos --maxsize=51200 --size=5024 --grow
logvol swap  --fstype="swap" --size=4096 --name=swap --vgname=centos

part pv.193  --fstype="lvmpv" --ondisk=sdb --size=1 --grow
volgroup logs --pesize=4096 pv.193
logvol /var/log  --fstype="xfs" --maxsize=51200 --size=8192 --grow  --name=log --vgname=logs

The drawback here is, that I have to delete/recreate the volume when resizing them.

This is what it looks like:

[root@localhost ~]# ssm list
-----------------------------------------------------------
Device        Free      Used     Total  Pool    Mount point
-----------------------------------------------------------
/dev/sda                      21.00 GB          PARTITIONED
/dev/sda1                      1.00 GB          /boot
/dev/sda2  0.00 KB  20.00 GB  20.00 GB  centos
/dev/sdb                      32.00 GB
/dev/sdb1  0.00 KB  32.00 GB  32.00 GB  logs
-----------------------------------------------------------
--------------------------------------------------
Pool    Type  Devices     Free      Used     Total
--------------------------------------------------
centos  lvm   1        0.00 KB  20.00 GB  20.00 GB
logs    lvm   1        0.00 KB  32.00 GB  32.00 GB
--------------------------------------------------
--------------------------------------------------------------------------------------
Volume            Pool    Volume size  FS      FS size       Free  Type    Mount point
--------------------------------------------------------------------------------------
/dev/centos/root  centos     16.00 GB  xfs    15.99 GB   14.99 GB  linear  /
/dev/centos/swap  centos      4.00 GB                              linear
/dev/logs/log     logs       32.00 GB  xfs    31.98 GB   31.95 GB  linear  /var/log
/dev/sda1                     1.00 GB  xfs  1014.00 MB  871.73 MB  part    /boot
--------------------------------------------------------------------------------------

And this is what I want (vdb, vdc, vdd) - but also for OS disk:

[root@vm1 isolinux]# ssm list
-------------------------------------------------------------
Device        Free       Used      Total  Pool    Mount point
-------------------------------------------------------------
/dev/vda                       445.00 GB          PARTITIONED
/dev/vda1                        1.00 GB          /boot
/dev/vda2  0.00 KB  439.00 GB  439.00 GB  centos
/dev/vdb   0.00 KB   30.00 GB   30.00 GB  centos
/dev/vdc   0.00 KB   20.00 GB   20.00 GB  testvg
/dev/vdd   0.00 KB   40.00 GB   40.00 GB  vg_vdd
-------------------------------------------------------------
----------------------------------------------------
Pool    Type  Devices     Free       Used      Total
----------------------------------------------------
centos  lvm   2        0.00 KB  468.99 GB  468.99 GB
testvg  lvm   1        0.00 KB   20.00 GB   20.00 GB
vg_vdd  lvm   1        0.00 KB   40.00 GB   40.00 GB
----------------------------------------------------
---------------------------------------------------------------------------------------------
Volume                   Pool    Volume size  FS      FS size       Free  Type    Mount point
---------------------------------------------------------------------------------------------
/dev/centos/root         centos    440.00 GB  xfs   439.98 GB  374.89 GB  linear  /
/dev/centos/swap         centos      4.00 GB                              linear
/dev/vg_vdd/lv_vdd       vg_vdd     40.00 GB  xfs    39.99 GB   39.99 GB  linear
/dev/centos/TEST-SDB     centos     25.00 GB  xfs    24.99 GB   24.99 GB  linear
/dev/testvg/lv_vdc-test  testvg     20.00 GB  xfs    19.99 GB   19.99 GB  linear
/dev/vda1                            1.00 GB  xfs  1014.00 MB  790.33 MB  part    /boot
---------------------------------------------------------------------------------------------

I want to use LVM and have my filesystems (including the OS) directly on the disks. Is there a way in the "disk partition information" part, or do I have to make that changes in the %post sektor (which would exclude the OS disk).

Thanks for any hint!

2 Answers 2

1

You can always use "onboad" tools for just recreating. Deleting a part in fdisk doesn't erase it. You just remove part and then recreate it at same start sector, but with larger size. Don't hesitate to do this on running mounted partition. It won't break anything.

But, to actually use that extra size after recreating you will still need a way to tell kernel to reload part table of used disk, so you have to install parted and use partprobe (fdisk will suggest that when you write changes and exit). It is inside the repository, so just yum install parted.

Then use resize2fs to enlarge the filesystem online.

LVM inside VM is not needed, as it makes things only more complicated. (Surprise!) Let the host to do actual physical volume layout management.

See the transcript (it's from Debian actually, but with CentOS it will go exactly the same):

root@test:/home/merlin# fdisk -l /dev/sd?
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3bc1a4d0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048  1048575  1046528  511M 82 Linux swap / Solaris
/dev/sda2       1048576 16777215 15728640  7.5G 83 Linux
root@test:/home/merlin# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
udev               494M            0  494M            0% /dev
tmpfs              100M         1.7M   98M            2% /run
/dev/sda2          7.4G         921M  6.1G           13% /
tmpfs              499M            0  499M            0% /dev/shm
tmpfs              5.0M            0  5.0M            0% /run/lock
tmpfs              499M            0  499M            0% /sys/fs/cgroup
tmpfs              100M            0  100M            0% /run/user/1000

At this point I added 16 Gb to the sda on the virtualization host. VM sees that:

root@test:/home/merlin# dmesg | tail
[    3.613736] usb 1-1: SerialNumber: 42
[    3.858801] random: crng init done
[    3.927777] hidraw: raw HID events driver (C) Jiri Kosina
[    3.939081] usbcore: registered new interface driver usbhid
[    3.939082] usbhid: USB HID core driver
[    3.963159] input: QEMU QEMU USB Tablet as /devices/pci0000:00/0000:00:01.2/usb1/1-1/1-1:1.0/0003:0627:0001.0001/input/input6
[    3.963623] hid-generic 0003:0627:0001.0001: input,hidraw0: USB HID v0.01 Mouse [QEMU QEMU USB Tablet] on usb-0000:00:01.2-1/input0
[   54.108990] sd 0:0:0:0: Capacity data has changed
[   54.110036] sd 0:0:0:0: [sda] 50331648 512-byte logical blocks: (25.8 GB/24.0 GiB)
[   54.110235] sda: detected capacity change from 8589934592 to 25769803776

Now, the whole procedure:

root@test:/home/merlin# fdisk -l /dev/sda
Disk /dev/sda: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3bc1a4d0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048  1048575  1046528  511M 82 Linux swap / Solaris
/dev/sda2       1048576 16777215 15728640  7.5G 83 Linux
root@test:/home/merlin# fdisk /dev/sda

Welcome to fdisk (util-linux 2.29.2).                                                                                                                                                        
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 
First sector (1048576-50331647, default 1048576): 
Last sector, +sectors or +size{K,M,G,T,P} (1048576-50331647, default 50331647): 

Created a new partition 2 of type 'Linux' and of size 23.5 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): p

Disk /dev/sda: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3bc1a4d0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048  1048575  1046528  511M 82 Linux swap / Solaris
/dev/sda2       1048576 50331647 49283072 23.5G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Устройство или ресурс занято

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

root@test:/home/merlin# partprobe /dev/sda
root@test:/home/merlin# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
udev               494M            0  494M            0% /dev
tmpfs              100M         1.7M   98M            2% /run
/dev/sda2          7.4G         921M  6.1G           13% /
tmpfs              499M            0  499M            0% /dev/shm
tmpfs              5.0M            0  5.0M            0% /run/lock
tmpfs              499M            0  499M            0% /sys/fs/cgroup
tmpfs              100M            0  100M            0% /run/user/1000
root@test:/home/merlin# resize2fs /dev/sda2
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/sda2 is now 6160384 (4k) blocks long.

root@test:/home/merlin# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
udev               494M            0  494M            0% /dev
tmpfs              100M         1.7M   98M            2% /run
/dev/sda2           24G         924M   22G            5% /
tmpfs              499M            0  499M            0% /dev/shm
tmpfs              5.0M            0  5.0M            0% /run/lock
tmpfs              499M            0  499M            0% /sys/fs/cgroup
tmpfs              100M            0  100M            0% /run/user/1000
2
  • Thanks for your reply. I already know that way of resizing the disk. What I'm looking for is the way to create a volume group directly on a physical disk without partitioning. In that way it should be possible to resize without deleting and recreating the volume
    – msr
    Jun 25, 2018 at 10:23
  • Aha, you asked for partitioning scheme? Just use simplest possbile one. Like on my example. Partition that could be resized should be on the very end of the device. Jun 25, 2018 at 10:25
0

Because there's obviously no way to do that task in "disk partitioning information" part I use the %pre section. Here you can nearly use the common bash commands for this, with some modifications:

%pre --log /tmp/pre-install.log
echo "Starting Kickstart Pre-Installation..."

echo "Step 1: vgcreate vg_sdb /dev/sdb -f -y"
vgcreate vg_sdb /dev/sdb -f -y

echo "Step 2: lvcreate -l 100%FREE --name sdb vg_sdb"
lvcreate -l 100%FREE --name sdb vg_sdb

echo "Step 3: mkfs.xfs /dev/vg_sdb/sdb"
mkfs.xfs /dev/vg_sdb/sdb
vgchange -ay


%end

Because my kickstart will be created from another tool, I do not need further logic in here (e.g. no hardcoded disks and volgroups, ...)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .