Переместите логический том от одной группы объема другому

mdadm поддерживает dealloc.

commit=sec время, файловая система синхронизирует свои данные и метаданные. Установка этого к 0 имеет тот же эффект как использование значения по умолчанию 5.

Таким образом, я не получаю ссылку между mdadm и commit=0 в Вашем вопросе?

18
23.03.2012, 09:15
4 ответа

Что касается LVM в растяжке Debian (9.0), а именно 2.02.168-2, это Можно выполнить копирование логического тома между группами томов с помощью комбинация vgmerge, lvconvertи vgsplit. Так как переезд комбинация копии и удаления, это также будет работать для перемещения.

Кроме того, вы можете использовать pvmove, чтобы просто переместить громкость.

Полный автономный пример сеанса с использованием устройств цикла и lvconvertследует.

Резюме: создаем группу томов vg1с логическим томом lv1, и vg2с lv2, и сделайте копию lv1в vg2.

Создание файлов.

truncate pv1 --size 100MB
truncate pv2 --size 100MB

Настройка устройств цикла для файлов.

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

Создание физических томов на кольцевых устройствах (инициализация устройств цикла для использование LVM).

pvcreate /dev/loop1 /dev/loop2

Создание групп томов vg1 и vg2 в /dev/loop1 и /dev/loop2 соответственно.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Создание логических томов lv1 и lv2 на vg1 и vg2 соответственно.

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

Создание файловых систем ext4 на lv1 и lv2.

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

При желании напишите что-нибудь на lv1, чтобы позже проверить, была ли копия правильно создано. Сделать vg1 неактивным.

vgchange -a n vg1

Выполните команду слияния в тестовом режиме. При этом vg1 объединяется в vg2.

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

И тогда по-настоящему.

vgmerge -A y -l -v vg2 vg1

Затем создайте зеркальную пару RAID 1 из lv1с помощью lvconvert. Тем Аргумент dest-pvговорит lvconvertсделать зеркальную копию на /dev/loop2.

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

Затем разделите зеркало. Новая РН теперь lv1_copy.

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

Сделать vg2/lv1неактивным.

lvchange -a n /dev/vg2/lv1

Затем (режим тестирования)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

Для реального

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

Результирующий вывод:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

ПРИМЕЧАНИЯ:

1) Большинство из этих команд необходимо будет выполнить от имени root.

2) При дублировании названий логических томов в две томные группы, vgmerge, откажутся продолжать.

3) При слиянии логические тома в vg1должны быть неактивными. А при разделении логические тома в vg2, принадлежащие vg1, должны быть неактивными. В нашем случае это lv1.

13
27.01.2020, 19:46

Группа объема состоит из целых физических томов. Физический том состоит из многих степеней (степень обычно - 4 МБ); каждая степень может принадлежать различному логическому тому. Для передачи логического тома другой группе Вы не можете просто передать степени, потому что это могло бы разделить физический том между источником VG и целевым VG.

То, что можно сделать, передать один или несколько PVs из источника VG к целевому VG, с vgsplit команда. Можно указать, какой PVs Вы хотите передать, или который LV (но только по одному). При определении LV этого и другого LVs в источнике, VG должен идти отдельный PVs. Целевой VG будет создан, если никакой VG не будет существовать с указанным именем.

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

Вы, возможно, должны использовать pvmove сначала для принятия мер к логическим томам Вы хотите переместиться для хождения отдельного PVs.

Если Вы означали сохранять физические границы VG и перемещать данные, нет никакого встроенного инструмента, но Вы могли заставить зеркало затем удалить оригинал.

13
27.01.2020, 19:46
  • 1
    Похож на target_group, может быть существующий ранее? –  XTL 25.03.2012, 16:19

Ofreceré lo mío:

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

si todo está bien, quita la fuente

lvremove vgsource/lv0
6
27.01.2020, 19:46

Точный ответ на этот вопрос: :«Нет, невозможно (логически)переместить логический том (LV )из одной группы томов (VG1 )в другой (VG2 ). Данные должны быть физически скопированы."

Причина :Данные логического тома физически хранятся на блочных устройствах (дисках, разделах ), назначенных определенной группе томов. Перемещение логического тома из VG1, состоящего из /dev/sdaи /dev/sdb, в VG2, состоящего из /dev/sdc, потребует перемещения данных из /dev/sdaи/или /dev/sdbв /dev/sdc, которая является операцией физического копирования между по меньшей мере двумя блочными устройствами (или разделами ).

П.С. Если бы все данные LV хранились на физическом томе, который можно было бы полностью исключить из VG1, то этот физический том можно было бы присвоить VG2. Но тогда это будет перемещение физического тома из одной группы томов в другую, а не перемещение логического тома.

4
04.04.2020, 19:00

Теги

Похожие вопросы