Как перераспределить пространство между двумя 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, ваш процесс будет выглядеть так:

  1. Размонтируйте громкость на VG_GUESTS.
  2. Уменьшите ext3 fs на томе, который использует VG_GUESTS с resize2fs.
  3. Сожмите LV на VG_GUESTS с lvreduce.
  4. Уменьшите sda2 PV с помощью pvresize - это может не сработать.
  5. Обновите информацию о VG с помощью vgreduce.
  6. Используйте инструмент разбиения, чтобы изменить размер sda2 и создать sda3 в свободном пространстве.
  7. Смонтируйте громкость на VG_GUESTS.
  8. Добавьте sda3 в VG_SYS.
  9. Расширьте LV на VG_SYS с помощью lvextend.
  10. Изменение размера файловой системы с помощью resize2fs (должно работать в режиме онлайн, но вы должны быть готовы к загрузке с LiveCD).

Испугался еще? Если да, мне удалось создать правильное впечатление. Потому что это игра с огнем. Я могу поставить 5 долларов против вашего сингла, что что-то пойдет не так, и вы потеряете свои данные.

Вместо того, чтобы пытаться уменьшить громкость, что всегда сложно и опасно, самый безопасный подход на самом деле является чем-то более разрушительным:

  1. Резервное копирование тома гостей.
  2. Размонтируйте громкость.
  3. Снимите PV с sda2 с помощью pvremove.
  4. Используйте инструмент разделения, чтобы изменить размер sda2 до размера, который вы хотите добавить в VG_SYS, затем создайте sda3, используя оставшееся пространство, в котором будет размещен новый VG_GUESTS.
  5. Создайте новый PV на sda2, затем добавьте его в VG_SYS.
  6. Расширьте LV на VG_SYS с помощью lvextend.
  7. Изменение размера файловой системы с помощью resize2fs (должно работать в режиме онлайн, но вы должны быть готовы к загрузке с LiveCD).
  8. Создайте PV на sda3, затем VG на этом PV, затем LV на этом VG, затем ext3 fs на этом LV, затем смонтируйте его в точке монтирования гостевого тома.
  9. Восстановите ваши данные на этом новом томе.

Я намеренно опустил точные команды, так как вы должны делать такие вещи с полным пониманием того, что делает каждая команда, так что 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

Это было бы самым безопасным. И убедитесь, что у вас есть резервные копии!

Другие вопросы по тегам