Назад | Перейти на главную страницу

LVM на диске без таблицы разделов. Как выделить свободное место с помощью fdisk?

Я уменьшил LVM вдвое, используя следующие команды:

e2fsck -f /dev/VG/LV
resize2fs /dev/VG/LV 5G
lvreduce -L 5G /dev/VG/LV

Изучение физического объема дает следующее:

  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               VG
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               1279
  Allocated PE          1280

Как мне выделить свободный PE (с какого цилиндра начинать) как стандартный раздел через fdisk?

Если вы создали PV как раздел, вам нужно сначала сжать PV с помощью pvresize --setphysicalvolumesize 5124M /dev/sdb а затем измените размер раздела в таблице разделов с помощью таких инструментов, как fdisk или parted.

Но в вашем случае вы не можете создавать там новые разделы, поскольку PV охватывает весь диск, поэтому вы не можете безопасно создать новую таблицу разделов, не уничтожив PV. Ну, на самом деле вы могли бы напрямую манипулировать таблицей разделов, но это опасно, и вы вернетесь и укусите вас дальше по линии.

Вместо этого самый безопасный способ - создать еще один PV на другом диске, добавить его в группу томов, переместить LV в этот другой PV, удалить первый PV из VG, удалить первый PV из / dev / sdb, создать разделы на / dev / sdb создайте PV на одном из этих разделов, добавьте PV в VG, переместите LV в этот теперь правильный PV и, наконец, удалите временный PV из VG.

Что-то вроде этого: (Обратите внимание, что вам нужно убедиться, что вы используете имена устройств, которые подходят для вашей конкретной конфигурации, а не просто копировать и вставлять. /dev/sdc это просто пример, для вас все могло быть иначе):

# plug in external USB drive

dmesg | tail                     # Check which device name the plugged in drive got.
lsblk                            # another way to verify, assuming `lsblk` is installed
cat /proc/partitions             # one more way to verify, sizes are in KiB

fdisk /dev/sdc                   # Make at least one partition on the drive, minimum of 5124 MiB.

pvcreate /dev/sdc1               # create the Physical Volume (PV)
vgextend VG /dev/sdc1            # add the PV to the Volume Group (VG)

pvmove -i 5 /dev/sdb /dev/sdc1   # Try to move every Logical Volume (LV) on PV /dev/sdb over to PV /dev/sdc1.
                                 # There's no need to unmount anything, the process is completely transparent
                                 # to the LV and anything using it. You may want to make a tea or two ;)
                                 # Watch out for errors regarding insufficient space on the target PV, tho.

vgreduce VG /dev/sdb             # Remove the old PV from the VG.
pvremove /dev/sdb                # Wipe the PV metadata from the drive. Don't continue in case of errors here!

fdisk /dev/sdb                   # Properly partition the drive. Partition for PV should be 5124 MiB minimum.

pvcreate /dev/sdb1               # Create a PV on the just created partition.
vgextend VG /dev/sdb1            # Add PV to the VG.

pvmove -i 5 /dev/sdc1 /dev/sdb1  # Move LVs back from the temporary PV to the freshly partitioned one.

vgreduce VG /dev/sdc1            # Remove temporary PV from the VG.
pvremove /dev/sdc1               # Wipe PV metadata from the drive.

Сделайте резервную копию, прежде чем пытаться это сделать.

Данный pv* и vg* команды безопасны, если используются, как показано здесь. Они откажутся работать, если предварительные условия не будут выполнены, или спросят, хотите ли вы это сделать (ответ n в таком случае). В частности, когда вы уменьшите LV до ровно 5 ГиБ, вам понадобится раздел размером чуть больше 5120 МиБ (я предлагаю добавить 4 МиБ, следовательно, 5124 МиБ), чтобы PV мог вместить метаданные, и он будет жаловаться если это не так.

Тем не мение, fdisk небезопасен, и он с радостью продолжит выполнять ваши приказы, даже если он перезапишет ваши драгоценные данные, поэтому будьте особенно осторожны.