Как клонировать объем тонкой резервации памяти LVM?

Я много раз гуглил, но не мог найти ответ. То, что я хочу, клонирует объем тонкой резервации памяти LVM к другому тонкому объему.

На данный момент я знаю dd может клонировать тонкий объем как следующее:

dd if=/dev/mapper/vg_thin01 of=/dev/mapper/vg_thin02 bs=1M

Но новый клонированный объем будет полным размером! Как я могу добраться до редкого/тонкого объема?

(На самом деле тонкий объем будет использоваться для устройства хранения данных DomU в Xen или KVM),

5
задан 18 December 2012 в 08:54
4 ответа

Клонировать тонкий том так же просто, как сделать снимок тома, который будет клонирован. При использовании тонких томов моментальные снимки и новые тома на самом деле одно и то же, с разными флагами по умолчанию.

Из документации ядра :

После создания пользователю не нужно беспокоиться ни о чем. связь между исходной точкой и снимком. Действительно, снимок не отличается от любого другого устройства с тонким выделением ресурсов и может быть сделал снимок тем же способом. Совершенно законно активен только один из них, и нет необходимости заказывать активируя или удаляя их обоих. (Это отличается от обычного device-mapper snapshots.)

Таким образом, вполне законно сделать снимок тома с тонкой подготовкой для создания клона CoW. На странице руководства :

Example
       Create first snapshot of an existing ThinLV:
       # lvcreate -n thin1s1 -s vg/thin1
3
ответ дан 3 December 2019 в 01:38

На самом деле вам нужна утилита клонирования, распознающая файловые системы. Предпочтительно размонтированные, так как клонирование работающей FS является рецептом катастрофы.

partclone - одна из таких утилит. В моих ubuntu 16.10 и OpenSUSE Leap: 42 он есть в репозиториях диспетчера пакетов. Fedora 25 OTOH этого не делает.

Вы также можете использовать clonezilla , который представляет собой инструмент резервного копирования / восстановления с live CD, также поддерживающий LVM2.

Я нашел еще несколько на этой странице .

0
ответ дан 3 December 2019 в 01:38

Я понимаю, что после ответа @shodanshok вы можете активировать этот снимок для обычного использования согласно документации man:

6. activate SnapLV
       Thin snapshots are created with the persistent "activation skip"
       flag, indicated by the "k" attribute.  Use -K with lvchange or
       vgchange to activate thin snapshots with the "k" attribute.
0
ответ дан 3 December 2019 в 01:38

Я считаю, что на этот вопрос нет правильного ответа (пока), потому что OP, похоже, указывает две разные группы томов, источник и место назначения. Поэтому я постараюсь ответить на него.

Примечание: в этом ответе предполагается, что ссылка типа / dev / mapper / vg_thin02 указывает на группу томов в соответствии с обычным соглашением Linux , и что любой пул или тонкий том в этой группе будет сопровождаться тире, например: / dev / mapper / vg_thin02-volA .

При клонировании между двумя группами томов (или двумя тонкими пулами) на той же машине для каждого исходного тома выполните:

fstrim /mnt/volA
umount /mnt/volA
lvcreate -kn -ay -V sizeofvolA -T vg_thin02/poolname -n volA
dd if=/dev/mapper/vg_thin01-volA of=/dev/mapper/vg_thin02-volA conv=sparse

Продолжайте с «volB», «volC» и т. д., если необходимо. Аргумент conv = sparse сохраняет новую копию в разреженном виде с тонким предоставлением.

Строки fstrim и umount показывают, что некоторая форма обрезки / discard необходим на исходном томе, прежде чем он будет отключен и дублирован. Если том обычно монтируется с опцией discard , это может быть необязательно.

Для клонирования между двумя разными машинами вы можете использовать ssh на исходной машине вместе с

1138504] dd в пункте назначения:

gzip -2 </dev/mapper/vg_thin01-volA | ssh user@address "zcat | sudo dd of=/dev/mapper/vg_thin02-volA conv=sparse"
2
ответ дан 3 December 2019 в 01:38

Теги

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