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

Как изменить размер корневого раздела LVM в Fedora без LiveCD или перезагрузки

У меня есть виртуальная машина, образ диска которой недавно был увеличен с 20 ГБ до 50 ГБ, и fdisk -l проверяет, может ли виртуальная машина видеть этот новый размер. Теперь мне нужно изменить размер корневого раздела LVM, чтобы заполнить дополнительные 30 ГБ.

я обнаружил несколько статьи около изменение размера LVM, но те немногие, которые касаются изменения размера корневого раздела, утверждают, что вам необходимо загружаться с LiveCD. Есть ли способ сделать это, не отключая сервер? Сервер критичен, поэтому хотелось бы минимизировать время простоя.

Изменить: вывод fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Изменить: как изменить размер физического раздела? fdisk может видеть свободное пространство, но я не знаю, как изменить размер основного раздела LVM, чтобы использовать его. Я попытался загрузиться с LiveCD и использовать parted'd resize команда, но все, что она дает мне, это ошибка «Невозможно определить файловую систему». я нашел это руководство, в котором говорится, что мне нужно Удалить раздел и создайте новый с правильным размером, но это звучит очень опасно.

Окончательное редактирование: Parted's resize Как ни странно, команда не может изменить размер разделов LVM. Иди разбери. Вместо этого я просто удалил старый раздел и создал новый с новым диапазоном, как указано в приведенной выше ссылке, и правильно изменил размер раздела LVM. Затем я последовал приведенному ниже совету, чтобы изменить размер томов и файловых систем. внутри раздел LVM.

Вы можете увеличить логический том в Интернете. Вам придется размонтировать его, чтобы сжать (для этого требуется LiveCD / Rescue Mode.)

  1. pvresize /dev/sda2 (при условии, что ваш раздел LVM sda2. При необходимости замените.)
  2. lvextend /dev/mapper/root -l+100%FREE (или как там называется корневой логический том.)
  3. resize2fs /dev/mapper/root (при условии ext2 / 3/4)

Неужели ваша система изменилась с 20 до 50 ГБ? Это кажется действительно странным, поскольку ваше устройство sda2 составляет ~ 40 ГБ, lv_root показывает 36 ГБ, а swap показывает 6 ГБ.

Ваш результат fdisk -l показывает общие секторы /dev/sda является 104857600. Последний сектор, используемый /dev/sda2 является 83886079. Это говорит мне, что вы не отрегулировали размер раздела для использования всего доступного пространства на диске. Команда pvresize не меняет таблицу разделов. Сначала вам нужно изменить таблицу разделов.

Установите gparted. Запуск от имени root (используйте ssh -X или x2go, если удаленно). Выберите раздел. Он должен показать свободное пространство за концом (справа). Если это не так, вам необходимо перезагрузить виртуальную машину, чтобы увидеть новый размер виртуального устройства. Это должно быть минимальное время простоя с systemd.

Щелкните правой кнопкой мыши и выберите изменить размер. Перетащите конец в конец диска. Убедитесь, что вы не касаетесь начала. gparted может перемещать раздел во время изменения размера, но это, конечно, разрушит работающую систему. Но сдвинуть конец - это нормально. Просмотрите ожидающую операцию, которую будет выполнять gparted, чтобы убедиться, что вы расширяете и не перемещение перегородки. Нажмите "Применить". gparted изменит раздел на диске, а затем вызовет команду ioctl ядра, чтобы перечитать таблицу разделов, также изменив размер живого блочного устройства. Затем, поскольку он видит, что это LVM PV, он запускает для вас pvresize. Выйдите из gparted, и теперь vgs покажет ваше новое пространство.

Я слышал слухи, что parted может делать все это без накладных расходов на графический интерфейс, но мне так и не удалось разобраться в вуду. Parted должен быть одним из худших интерфейсов CLI, которые я когда-либо пробовал использовать.

Не используйте fdisk, вы должны удалить и перераспределить раздел для изменения размера, и по умолчанию он стирает подпись LVM2 при записи. Я думаю, что видел «продвинутый» вариант отключения этого деструктивного поведения, но никогда не тестировал его.

Вы также можете попробовать cfdisk (проклинает fdisk). У него может быть полезный размер раздела. Достаточно легко запустить pvresize вручную, и есть команда, указывающая ядру, что нужно перечитать таблицу разделов. Но мне пришлось бы протестировать, чтобы убедиться, что он не стирает подпись LVM, как fdisk.

Если физический том LVM находится в разделе, вы не можете изменить его размер без перезагрузки.

Вы можете редактировать таблицу разделов на диске, но Linux откажется использовать ее до перезагрузки.

Если вы используете XFS, переключите resize2fs к xfs_growfs.

Вы можете отобразить используемые PV и LV в группе томов, используя pvs и lvs.

PV на необработанном диске

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV на раздел

Сначала вам нужно изменить размер раздела, используйте parted, fdisk или аналогичный инструмент для этого. Помните, что эти инструменты редактируют только описание, где находятся разделы, они не перемещают данные. Другими словами, вы можете легко расширить только последний раздел на диске. Затем перезагрузите компьютер, и после этого вы сможете сообщить LVM, что на нем есть дополнительное место:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

Я бы подумал о проверке ssm (system-storage-manager), если он доступен в вашем дистрибутиве.

Посмотрите это для получения дополнительной информации: https://unix.stackexchange.com/a/293173

ssm, похоже, упрощает изменение размера логических томов без необходимости делать все самостоятельно.

Я смог использовать его для расширения моего домашнего раздела после перезагрузки моей ОС и входа в систему как root. (Пришлось перезагрузить дважды, но в конце концов это сработало, и теперь у меня есть дополнительные 50 Гбайт в моем / домашнем разделе.)

После объединения 25 практических рекомендаций я наконец получил это решение. Он не требует живых компакт-дисков, он полностью на лету.

Шаг 1. Отформатируйте раздел с помощью parted (без gui). В этом примере максимальный размер диска увеличился с 8 ГБ до 32 ГБ в виртуальной коробке.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Шаг 2. Создайте физический том на основе нового раздела.

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Шаг 3. Добавьте физический том в группу томов. При установке простого сервера Fedora 28 группа томов называется Fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Шаг 4. Добавьте доступное пространство в группе томов к логическому тому. При установке простого сервера Fedora 28 логический том называется root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Шаг 5. Укажите файловой системе логического тома использовать дополнительное пространство. Файловая система Fedora - xfs.

Внимание! xfs_growfs использует точку монтирования для идентификации файловой системы, а не имя файловой системы, которое вы найдете в выводе df !!!!!!!

Команда 'xfs_growfs / dev / mapper / fedora-root' сообщит вам, что / dev / mapper / fedora-root не является смонтированной файловой системой XFS. Если вы используете другую файловую систему, обратитесь к https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Шаг 6. Наслаждайтесь

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....

Попробуйте testdisk

sudo dnf установить testdisk

sudo testdisk

Просто установите создание файла журнала. Затем он перечислит разделы, - выберите носитель / раздел - затем введите - и проанализируйте - быстрый поиск - выберите и напишите