Во-первых, вам придется отредактировать таблицу разделов, чтобы расширить раздел sdb3
. Для этого вы можете использовать gparted
, parted
, gdisk
или fdisk
.
Если вы используете gdisk
или fdisk
, изменения записываются в таблицу разделов только тогда, когда вы указываете программе сделать это, поэтому с помощью одного сеанса gdisk
/ fdisk
вы можете просмотреть точную информацию. расположение на диске (номер блока/сектора ), где начинается sdb3
, удалить раздел sdb3
,воссоздайте его с точно такой же начальной точкой и новой конечной точкой, а затем запишите обновленную таблицу разделов на диск.
Если ядро не сразу принимает новый размер раздела, вам, возможно, придется запустить sudo partprobe /dev/sdb
на этом этапе.
Как только новый размер раздела будет виден в /proc/partitions
, вы можете продолжить с sudo pvresize /dev/sdb3
точно так же, как и раньше. После этого sudo pvdisplay
должно указывать увеличенные значения PV size
, Total PE
и Free PE
.
В этот момент вы можете использовать sudo lvextend -r -L <desired new size> /dev/cl/root
, чтобы расширить свой LV.
Так как sdb3
PV уже является членом группы томов cl
, вам не нужно vgextend
в этом случае :оно используется только при добавлении нового, неиспользуемого PV в группу томов. существующая группа томов. Поскольку в настоящее время виртуальная группа активна и все ее LV смонтированы/используются, PV заблокирован для монопольного доступа со стороны LVM, поэтому даже инструмент vgextend
не может получить к нему прямой доступ. Если вы попытаетесь выполнить vgextend
, загрузившись с внешнего носителя, чтобы размонтировать LV, вы увидите сообщение об ошибке
Physical volume '/dev/sdb3' is already in volume group 'cl'
вместо этого.
Вот что я написал. Это работает, но это своего рода не -ответ, так как я надеялся сделать это без написания внешнего интерфейса.
#!/usr/bin/env python3
usage = """
Read arguments from a file, one per line, then execute the given
command.
usage: lineargs <filename> <cmd> [args]
"""
import os
import sys
argfilename = sys.argv[1] # Get arguments from this file, one per line
cmd = sys.argv[2:] # The command and additional arguments
args = open(argfilename, "r").read().splitlines()
cmd.extend(args)
os.execvp(cmd[0], cmd)
Я не стал заморачиваться с проверкой ошибок и т.д. Это всего лишь один -нестандартный сценарий.