У меня есть виртуальная машина, образ диска которой недавно был увеличен с 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.)
pvresize /dev/sda2
(при условии, что ваш раздел LVM sda2
. При необходимости замените.)lvextend /dev/mapper/root -l+100%FREE
(или как там называется корневой логический том.)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
.
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>
Я бы подумал о проверке 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 / 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
Просто установите создание файла журнала. Затем он перечислит разделы, - выберите носитель / раздел - затем введите - и проанализируйте - быстрый поиск - выберите и напишите