Существует ли простой способ перемещения / копирования логического тома из одной группы томов в другую? (LVM2)
15
Я переставляю кучу дисков на своем сервере дома, и я нахожусь в положении желания переместить кучу логических томов LVM в другую группу томов. Есть ли простой способ сделать это? Я видел упоминание о cplvкоманде, но она, кажется, либо старая, либо недоступна для Linux.
Если вы можете сделать так, чтобы логический том находился в отдельном подмножестве физических томов от остальной части исходной группы томов ( lvconvert sourcevg/sourcelv /dev/pv1 ...может помочь), вы можете использовать, vgsplitчтобы разделить lv на новый vg и vgmergeобъединить новый vg с цель VG.
Хотя в LVM есть функция зеркалирования, вы не можете (разумно) использовать ее для копирования между группами томов, поскольку обе ветви зеркала должны находиться на одном и том же vg, и связь не может быть нарушена .
Вы можете скопировать том LVM на другой, как если бы вы копировали любой том на другой: создайте целевой lv соответствующего размера, а затем скопируйте содержимое с помощью dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M. Если исходный том активен, вы можете использовать LVM для создания согласованной копии: сначала сделайте снимок исходного lv с помощью lvcreate -s, а затем скопируйте снимок.
Brilliant Gilles .... vgsplit / vgmerge, вероятно, будет в порядке: после этого я могу использовать pvmove, чтобы переместить физические экстенты на новый диск, а затем удалить старый том из VG.
JKP
Позор, в конце концов это не сработало для меня из-за разных размеров экстента. Если это не проблема для вас, хотя я предлагаю этот метод будет самым простым.
JKP
После dd(если вы не спешите сбрасывать старые тома), не забудьте изменить UUID новых файловых систем: tune2fs -U random / dev / targetvg / targetlv
Я повторяю: это не работает для двух отдельных групп томов
kissgyorgy
Сначала vgextendvg1 с новым pv, затем pvmoveваш lv в новый pv, vgsplitвременный vg, который вы vgmergeв vg2. Затем pvmoveснова lv to vg2 оригинальный pv, vgreducevg2, чтобы прочитать промежуточный pv. Или чтобы избежать промежуточной копии, вы можете просто сначала объединить vg1 в vg2, pvmovelv1 и vgsplitснова vg1 из vg2. Это должно ответить на возражения @ MattBianco и @kissgyorgy и эквивалентно решению @Gilles , но заменяя снимок и низкоуровневых ddнаpvmove
marcz
1
По состоянию на LVM в Debian участке (9.0), а именно 2.02.168-2, это возможно сделать копию логического тома по группам томов , используя комбинацию vgmerge, lvconvertи vgsplit. Поскольку перемещение представляет собой комбинацию копии и удаления, это также будет работать для перемещения.
Кроме того, вы можете использовать, pvmoveчтобы просто переместить громкость.
Полный автономный пример сеанса с использованием петлевых устройств и далее
lvconvert.
Резюме: мы создаем группу томов vg1с логическим томом lv1, а vg2также lv2и делаем копию lv1в vg2.
dd
(если вы не спешите сбрасывать старые тома), не забудьте изменить UUID новых файловых систем: tune2fs -U random / dev / targetvg / targetlvpvmove может перемещать данные между физическими томами: Руководство администратора LVM
источник
vgextend
vg1 с новым pv, затемpvmove
ваш lv в новый pv,vgsplit
временный vg, который выvgmerge
в vg2. Затемpvmove
снова lv to vg2 оригинальный pv,vgreduce
vg2, чтобы прочитать промежуточный pv. Или чтобы избежать промежуточной копии, вы можете просто сначала объединить vg1 в vg2,pvmove
lv1 иvgsplit
снова vg1 из vg2. Это должно ответить на возражения @ MattBianco и @kissgyorgy и эквивалентно решению @Gilles , но заменяя снимок и низкоуровневыхdd
наpvmove
По состоянию на LVM в Debian участке (9.0), а именно 2.02.168-2, это возможно сделать копию логического тома по группам томов , используя комбинацию
vgmerge
,lvconvert
иvgsplit
. Поскольку перемещение представляет собой комбинацию копии и удаления, это также будет работать для перемещения.Кроме того, вы можете использовать,
pvmove
чтобы просто переместить громкость.Полный автономный пример сеанса с использованием петлевых устройств и далее
lvconvert
.Резюме: мы создаем группу томов
vg1
с логическим томомlv1
, аvg2
такжеlv2
и делаем копиюlv1
вvg2
.Создавайте файлы.
Настройте устройства петли на файлах.
Создайте физические тома на петлевых устройствах (инициализируйте петлевые устройства для использования LVM).
Создайте группы томов
vg1
иvg2
на/dev/loop1
и/dev/loop2
соответственно.Создайте логические тома
lv1
иlv2
наvg1
иvg2
соответственно.Создайте файловые системы ext4 на
lv1
иlv2
.При желании, напишите что-нибудь,
lv1
чтобы потом можно было проверить, правильно ли была создана копия. Сделатьvg1
неактивным.Запустите команду слияния в тестовом режиме. Это сливается
lv1
вlv2
.А потом по-настоящему.
Затем создайте зеркальную пару RAID 1 с
lv1
помощьюlvconvert
. <> Аргумент говорит ,lvconvert
чтобы сделать зеркальную копиюlv1_copy
на/dev/loop2
.Затем разделите зеркало. Новый LV сейчас
lv1_copy
.Сделать
vg2
неактивным.Тогда (режим тестирования)
Серьезно
Результирующий вывод:
ПРИМЕЧАНИЯ:
1) Большинство из этих команд нужно будет выполнять от имени пользователя root.
2) Если есть какое-либо дублирование имен логических томов в двух группах томов,
vgmerge
откажется продолжить.3) При слиянии:
И на раскол:
источник