Как перераспределить пространство между двумя LVM VG?
У меня есть два раздела диска, скажем, sda1 и sda2, каждый из которых содержит VG.
- sda1 -> VG_SYS
- sda2 -> VG_GUESTS
У VG_SYS есть номер LV, по одному на каждый нужный мне раздел.
Проблема в том, что VG_SYS вышло из пространства (или, что лучше, разделы, сделанные на его LV, находятся вне пространства), в то время как VG_GUESTS имеет много свободного места.
Возможно ли и как уменьшить VG_GUESTS (и, в конечном счете, также sda2) и перераспределить свободное пространство для sda1/VG_SYS?
заранее спасибо
2 ответа
Предполагая один LV на каждом VG, ваш процесс будет выглядеть так:
- Размонтируйте громкость на VG_GUESTS.
- Уменьшите ext3 fs на томе, который использует VG_GUESTS с resize2fs.
- Сожмите LV на VG_GUESTS с lvreduce.
- Уменьшите sda2 PV с помощью pvresize - это может не сработать.
- Обновите информацию о VG с помощью vgreduce.
- Используйте инструмент разбиения, чтобы изменить размер sda2 и создать sda3 в свободном пространстве.
- Смонтируйте громкость на VG_GUESTS.
- Добавьте sda3 в VG_SYS.
- Расширьте LV на VG_SYS с помощью lvextend.
- Изменение размера файловой системы с помощью resize2fs (должно работать в режиме онлайн, но вы должны быть готовы к загрузке с LiveCD).
Испугался еще? Если да, мне удалось создать правильное впечатление. Потому что это игра с огнем. Я могу поставить 5 долларов против вашего сингла, что что-то пойдет не так, и вы потеряете свои данные.
Вместо того, чтобы пытаться уменьшить громкость, что всегда сложно и опасно, самый безопасный подход на самом деле является чем-то более разрушительным:
- Резервное копирование тома гостей.
- Размонтируйте громкость.
- Снимите PV с sda2 с помощью pvremove.
- Используйте инструмент разделения, чтобы изменить размер sda2 до размера, который вы хотите добавить в VG_SYS, затем создайте sda3, используя оставшееся пространство, в котором будет размещен новый VG_GUESTS.
- Создайте новый PV на sda2, затем добавьте его в VG_SYS.
- Расширьте LV на VG_SYS с помощью lvextend.
- Изменение размера файловой системы с помощью resize2fs (должно работать в режиме онлайн, но вы должны быть готовы к загрузке с LiveCD).
- Создайте PV на sda3, затем VG на этом PV, затем LV на этом VG, затем ext3 fs на этом LV, затем смонтируйте его в точке монтирования гостевого тома.
- Восстановите ваши данные на этом новом томе.
Я намеренно опустил точные команды, так как вы должны делать такие вещи с полным пониманием того, что делает каждая команда, так что RTFM и удачи.
Вы, вероятно, хотите что-то подобное. Однако имейте в виду, что предполагается, что вы просто собираетесь полностью удалить PV из VG, а не пытаться уменьшить его. Я подозреваю, что делать то, что вы хотите, вам понадобится третий раздел (возможно, на съемном USB-диске), чтобы использовать в качестве временного хранилища. Предполагая, что это /dev/sdb1, вы можете сделать что-то вроде этого:
- создать новую временную логическую группу в /dev/sdb1 (скажем, VG_TEMP)
- скопировать все LV из VG_GUESTS в VG_TEMP
- удалить /dev/sda2
- развернуть /dev/sda1
- пересоздать /dev/sda2, заново добавить его как PV в VG_GUESTS
- скопировать все LV из VG_TEMP в VG_GUESTS
Это было бы самым безопасным. И убедитесь, что у вас есть резервные копии!