Я много раз гуглил, но не мог найти ответ. То, что я хочу, клонирует объем тонкой резервации памяти LVM к другому тонкому объему.
На данный момент я знаю dd
может клонировать тонкий объем как следующее:
dd if=/dev/mapper/vg_thin01 of=/dev/mapper/vg_thin02 bs=1M
Но новый клонированный объем будет полным размером! Как я могу добраться до редкого/тонкого объема?
(На самом деле тонкий объем будет использоваться для устройства хранения данных DomU в Xen или KVM),
Клонировать тонкий том так же просто, как сделать снимок тома, который будет клонирован. При использовании тонких томов моментальные снимки и новые тома на самом деле одно и то же, с разными флагами по умолчанию.
Из документации ядра :
После создания пользователю не нужно беспокоиться ни о чем. связь между исходной точкой и снимком. Действительно, снимок не отличается от любого другого устройства с тонким выделением ресурсов и может быть сделал снимок тем же способом. Совершенно законно активен только один из них, и нет необходимости заказывать активируя или удаляя их обоих. (Это отличается от обычного device-mapper snapshots.)
Таким образом, вполне законно сделать снимок тома с тонкой подготовкой для создания клона CoW. На странице руководства :
Example Create first snapshot of an existing ThinLV: # lvcreate -n thin1s1 -s vg/thin1
На самом деле вам нужна утилита клонирования, распознающая файловые системы. Предпочтительно размонтированные, так как клонирование работающей FS является рецептом катастрофы.
partclone - одна из таких утилит. В моих ubuntu 16.10 и OpenSUSE Leap: 42 он есть в репозиториях диспетчера пакетов. Fedora 25 OTOH этого не делает.
Вы также можете использовать clonezilla , который представляет собой инструмент резервного копирования / восстановления с live CD, также поддерживающий LVM2.
Я нашел еще несколько на этой странице .
Я понимаю, что после ответа @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.
Я считаю, что на этот вопрос нет правильного ответа (пока), потому что 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"