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


24

У меня есть виртуальная машина, fdisk -lразмер которой недавно увеличился с 20 ГБ до 50 ГБ, и проверяет, может ли виртуальная машина видеть этот новый размер. Теперь мне нужно изменить размер корневого раздела 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 и использовать resizeкоманду parted'd , но все, что мне дает, это ошибка «Не удается обнаружить файловую систему». Я нашел это руководство , в котором говорится, что мне нужно удалить раздел и создать новый с правильным размером, но это звучит очень опасно.

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


Покажите нам вывод fdisk - l. Вы изменили размер раздела, а не только громкость, верно?
Зоредаче

@Zoredache, я добавил этот вывод к вопросу.
Серин

Ответы:


33

Вы можете вырастить логический том онлайн. Вы должны размонтировать его, чтобы сжать (для этого требуется 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)

1
Я лично предпочитаю lvextend -L [size][unit] /dev/group/volumeхотя бы потому, что могу указать объем на 10 гигабайт, указав-L +10G
Хьюберт Карио

Да, но ОП спросил; Now I need to resize my root LVM partition to fill the extra 30GB.(Который должен увеличить логический объем на доступное свободное пространство.)
Аарон Копли

«Новый размер (1076 экстентов) соответствует существующему размеру (1076 экстентов)»
Cerin

7
Я думал, что этот трюк был аккуратным: если вы добавите эту -rопцию lvextend, она зацепит fsadmизменение размера FS. Это сделает 3-й шаг излишним.
Джоди С

3
Обратите внимание, что в этом ответе предполагается, что раздел уже расширен для заполнения свободного пространства, и необходимо обновить только логические тома. Команда pvresize /dev/sda2ничего не делает, пока размер раздела / dev / sda2 не будет изменен с помощью parted или fdisk. Мне пришлось изменить размер с помощью fdisk, так как parted в моей системе не показывал или не имел команды изменения размера. Изменение размера Fdisk включает удаление и воссоздание раздела.
Джейсон

2

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

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


1

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

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

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

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

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


0

Если физический том 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>

ПВ на перегородке

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

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

Используя Gparted Live CD, sudo pvresize /dev/sda2сообщает «1 физический том (ы) изменен размер», но sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gзавершается с ошибкой «недостаточно свободного места: необходимо 320 экстентов, но доступно только 0»). sudo fdisk -lсообщает, что у меня доступно 54G, в то время как sudo pvdisplayотчеты только 40G используются. Почему lvextend терпит неудачу?
Серин

1
@Cerin, вы пропустили первое утверждение Хубертса для PV на разделе. Сначала вам нужно изменить размер раздела, использовать для этого parted, fdisk или аналогичный инструмент .
Zoredache

@Zoredache, Ладно, ну, в общем, весь мой вопрос. Я не знаю, как это сделать. Я только загрузился в Gparted LiveCD и попытался использовать resizeкоманду parted для увеличения размера основного раздела, но он выдал ошибку «Не удалось обнаружить файловую систему». Как вы изменяете размер раздела, используя parted или fdisk?
Cerin

@Cerin: поиск SF или задать другой вопрос
Hubert Kario

0

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

Проверьте это для немного больше информации: /unix//a/293173

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

Я смог использовать его для расширения своего домашнего раздела после перезагрузки операционной системы и входа в систему в качестве пользователя root. (В общей сложности пришлось перезагрузиться дважды, но в итоге это сработало, и теперь у меня есть дополнительные 50G, доступные в моем / home разделе.)


0

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

Шаг 1. отформатируйте раздел с помощью parted (без графического интерфейса). В этом примере максимальный размер диска увеличился с 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
....

-1

Попробуйте тестдиск

sudo dnf установить тестдиск

sudo testdisk

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.