Как скопировать lvm в файл

Обновлено: 07.07.2024

Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID -1.

Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой sudo lvm . Команда help покажет список команд.

Создание и удаление

Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2:

На этих физических томах создаём группу томов, которая будет называться, скажем, vg1:

Посмотрим информацию о нашей группе томов:

Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.

Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:

Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2.

Осталось создать на них файловую систему. Тут различий с обычными разделами нет:

Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома ( lvremove ), после этого можно удалить группы томов ( vgremove ) и ненужные физические тома ( pvremove ).

Добавление физических томов

Чтобы добавить новый винчестер sdc в группу томов, создадим физический том:

И добавим его в нашу группу:

Теперь можно создать ещё один логический диск ( lvcreate ) или увеличить размер существующего ( lvresize ).

Удаление физических томов

Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:

Затем удалим его из группы томов:

И, наконец, удалим физический том:

Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.

Изменение размеров

LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:

а затем файловую систему на нём:

Изменение размеров физического тома - задача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.

Как просто попробовать

Если LVM устанавливается не для дальнейшего использования, а «напосмотреть», то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. Создаем сами файлы, имитирующие устройства:

Создаем loopback устройства из файлов:

Дальше поступаем так же, как если бы ми создавали LVM на реальных дисках. Обратите внимание на названия loop-устройств — они могут отличаться от приведённых здесь.

Снапшоты

Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.

Примеры использования

LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.

Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:

LVM с LiveCD

Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.

Сначала вам нужно установить эти утилиты:

Далее посмотрите командами

доступность ваших групп томов. Ну а дальше запустите все группы командой

Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.

Решено: Как достать данные из LVM другого диска?

Модератор: SLEDopit

Решено: Как достать данные из LVM другого диска?

Одна из машин на работе вышла из строя.
Я переткнул жесткий диск в другой линух (FC6)
Но есть одна проблема: вся файловая система на умершей машине была внутри LVM.
Как мне получить доступ к разделам под LVM'ом чтобы их скопировать?
Первый раз у меня такое случилось. Не знаю что делать.

Данные надо достать любой ценой! Сжальтесь=)

а чуточку подробнее можно?=) Что выполняют эти команды
Гугл ничего хорошего мне не сказал, на предмет восстановления разделов с LVM другого диска Вся прелесть softraid и lvm в том , что их можно переносить между платформами. т.е. вынимаем с одного компа втыкаем в другой подгружаем нужные модули и вуаля.
А насчёт вашего нежелания читать man и гугль я вам помочь не могу лень матушка
ps: вопрос поставлен не корректно, востановления это после сбоев когда ага, а это перенос или другими словами читайте про lvm я уже все прочитал. Только вот vgscan мне говорит что у меня vg с одинаковыми именами. И не удивительно, таккак на обоих хардах VolGroup0. как с этим быть? Corsair
Читаю мысли:
Старый комп был у вас под FC6 и там файловая система разбивалась по дефолту.
Новый коп тоже с FC6 и файловая система по дефолту.
Соответственно имена групп LVM одинаковые.
Значит вам надо как-то переименовать группц LVM на старом харде что бы ее подключить с одинаковыми именами не получится ни как (как преименовыватья не знаю) или второй ваиан подлючть к компу где винт разбит без LVM или у нее другое имя.

На работу приеду, покажу vgscan и vgdisplay

kirkir, да я это все прекрасно понимаю, вот только как vg переименовать. На крайняк, конечно, переставлю линух без LVM или с другим инеменм vg, но если честно, так ломает.

вот vgscan и vgdisplay:

Reading all physical volumes. This may take a while.
WARNING: Duplicate VG name VolGroup00: Existing 1gXbSL-F2ii-h2gz-XrwG-j2ZM-yYWc-3Y16dO (created here) takes precedence over 7qUe3d-BxTY-62KO-R7x0-pC7x-11OF-WtpE4w
Found volume group "VolGroup00" using metadata type lvm2
Found volume group "VolGroup00" using metadata type lvm2

WARNING: Duplicate VG name VolGroup00: Existing 1gXbSL-F2ii-h2gz-XrwG-j2ZM-yYWc-3Y16dO (created here) takes precedence over 7qUe3d-BxTY-62KO-R7x0-pC7x-11OF-WtpE4w
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 38,16 GB
PE Size 32,00 MB
Total PE 1221
Alloc PE / Size 1220 / 38,12 GB
Free PE / Size 1 / 32,00 MB
VG UUID 7qUe3d-BxTY-62KO-R7x0-pC7x-11OF-WtpE4w

--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 18,56 GB
PE Size 32,00 MB
Total PE 594
Alloc PE / Size 593 / 18,53 GB
Free PE / Size 1 / 32,00 MB
VG UUID 1gXbSL-F2ii-h2gz-XrwG-j2ZM-yYWc-3Y16dO


Можно еще что-то с этим сделать или все-таки на другой переустанавливать линух с другим именем LVM?

Дублирование и Резервное копирование LVM с Xen на сайт с удаленного сервера

Функция моментального снимка LVM позволяет нам дублировать LVM с поддержкой Xen DomU быстро внутри одной группы томов. Когда мы хотим дублировать LVMс поддержкой Xen на сайт с удаленного сервера, мы должны использовать функции и инструменты, такие как SCP и dd. Резервное копирование DomU является лишь частью процесса дублирования одного DomU. Мы можем закончить резервное копирование после копирования образа DomU с удаленного сервера. Как дублировать и делать резервную копию LVM с поддержкой Xen на сайт с удаленного сервера будет говорится в этом посту.

Наша цель:
Есть виртуальные машины Xen DomU с логическим томом /dev/vg_xen/vm-10.0.0.123/ на сервере 10.0.0.10 (удаленный сервер).

Теперь мы хотим продублировать виртуальную машину VM-10.0.0.123 для VM-10.0.0.124 которые мы хотим хранить в логическом томе VM-10.0.0.124 в группы томов vgxen на сервере 10.0.0.11 (локальный сервер). IP для VM-10.0.0.124 будет 10.0.0.124. Есть 6 шагов как продублировать эту виртуальную машину. Если нам нужно просто создать резервную копию его, мы можем просто использовать шаги 1-3.

1. Дублирование логического тома LVM на удаленном сервере

Мы можем дублировать объем LVM по удаленному серверу, сделав снапшот. snapshot является клоном логического тома. Мы можем сделать новый логический том VM-10.0.0.123-снимка как снимок логических томов VM-10.0.0.123:

2. Сохраните snapshot чтобы был файл с образом для дальнейшего использования dd tool на удаленном сервере

Мы можем использовать dd tool чтобы сохранить образ нового, только созданного снимка логического тома DomU:

Этот процесс может занять несколько минут, а может и больше в зависимости от размера логического тома и скорости жесткого диска.

3. Скопируйте образ на сайт для локального сервера с удаленного сервера

Мы можем передать образ с удаленного сервера после окончания команды dd на удаленном сервере.

Мы устанавливаем “-c arcfour”, чтобы получить более высокую скорость передачи данных в SCP.

4. Создание логических томов для нового DomU на локальном сервере

Мы можем сделать это одновременно с шагом 3. Мы создаем новый логический том vm-10.0.0.124 под группы томов vgxen на локальном сервере.:

Размер логического тома является таким же, как один из DomU на удаленном сервере.

5. Дублирование данных в логическом объеме (logical volume) с образа

На этом этапе мы используем команду dd чтобы скопировать данные из файла образа на вновь созданный логический том:

Это также может занять некоторое время, чтобы закончить.

6. Измените профиль для нового DomU на локальном сервере

Название и запись диска меняются.

7. Запустим новую виртуальную машину и настроим новую VM

Мы можем начать новsq DomU и ввеcти это в консоль:

После входа в систему VM-10.0.0.124, мы можем изменить файл конфигурации сети:

Измените IPADDR чтобы сменить 10.0.0.124 от 10.0.0.123. Затем перезагрузите eth0:

Убедитесь, что этот интерфейс не имеет HWaddr закомментировав линию, которая указывает на HWADDR если мы используем сетевой мост в Xen .

Новая виртуальная машина VM-10.0.0.124 которая является клоном VM-10.0.0.123 кроме IP и Dom0 на вершине которой он запущен готов к использованию в настоящее время. Этот процесс может быть записана в одном сценарии.

В данной статье рассмотрены принципы и методики по применению снапшотов. Для более лучшего понимания материала необходимо знать, что такое LVM на базовом уровне и уметь оперировать с PV, VG, LV.

Назначение и принцип работы снапшотов

COW (Copy-On-Write)

Итак, разобравшись, что такое снапшот и когда он применяется, необходимо понимать, что происходит с файлами после создания снимка. Снапшот создан, и все старые файлы, т.е. которые не изменялись на момент создания снимка, остались на месте. А вот новые файлы или изменения для существующих уже будут записаны в новое расположение файловой системы на диске. Даже когда модификация данных завершена, старые данные никогда не перезаписываются. По сути будет создан ещё один файл, в котором содержатся все изменения (дельта), которые происходят с исходными данными. Таким образом достигается экономия дискового пространства засчет хранения лишь изменений на диске, а не полной копии данных. Технически происходит следующее: при необходимости изменения старого файла создается reflink и выделяется место под изменения.

Поэтому есть общие рекомендации и напоминания относительно снапшотов:

LVM1 vs LVM2

  • если блок должен быть изменен в источнике, он сначала копируется в моментальный снимок (снапшот), помечается как скопированный в таблице исключений, а затем новые данные записываются в исходный том. Так работает LVM1, снимки которого являются readonly.
  • LVM2 позволяет создавать снимки для чтения и записи, т.е. работает схожим образом, как и LVM1, но при необходимости записи данных в самом снапшоте, блоки данных помечаются в таблице исключений как используемые и уже никогда не будут скопированы с исходного тома.

Под таблицей исключений понимается хеш-таблица, в которой записываются все сопоставления относительно изменений блоков и таблицы CoW. Но это уже глубокие технические подкапотные детали, с которыми можно ознакомиться по ссылке.

В целом обе версии можно использовать, но у второй есть несомненное преимущество в виде возможности изменений в самом снапшоте.

Пример использования

Подготовительные работы

После того, как с теорией разобрались, пора переходить к практике! В качестве лабораторного стенда будет использоваться Centos 7 с установленным пакетом lvm2:

  • PV: sdb1 5 Гб
  • VG: vg_data 5 Гб
  • LV: lv_data 2,5 Гб
  • точки монтирования: /mnt и /mnt2

Далее LV был смонтирован по пути /mnt, и туда записаны произвольные файлы:

Создание снапшота

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

  1. Источник снапшота, т.е. указывает, что том является исходным относительно снапшота, origin
  2. Права на запись, writable
  3. Политика размещения: унаследовано от VG, inherit
  4. Статус, active
  5. Устройство: открыто или смонтировано, open

Также можно посмотреть более подробный вывод про LV или снапшот, где вся информация будет в расширенном виде:

Помимо атрибутов, появилось поле Data (Allocated to snapshot в lvdisplay), которое показывает свободное место для снапшота в процентах. На данный момент весь выделенный гигабайт свободен, т.к. в исходный том в /mnt не было записано никаких изменений.

Теперь же в исходный том будут внесены изменения для демонстрации поведения снапшота:

Был создан простой файл, забитый нулями, размером 512 Мб. И в lvs это изменение сразу учитывается:

Ещё одним способом для наглядной проверки использования места снапшотом является утилита dmsetup:

В выводе выше интересны последние три цифры:

  • кол-во используемых секторов
  • кол-во доступных секторов
  • кол-во мета секторов

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

Повреждения снапшота

Может возникнуть логичный вопрос, а что произойдет, если все секторы будут использованы, и отведенный гигабайт исчерпается? Такой снапшот станет непригодным для использования. Так, если создать ещё один файл через dd и после посмотреть статус:

Такой снепшот непригоден для использования и его остаётся только удалить:

Для предотвращения такой ситуации настоятельно рекомендуется сохранять размер снапшота таким же, как у исходного логического тома, чтобы минимизировать риск повреждения снапшота. Это можно делать в автоматическом режиме, добавив параметры в /etc/lvm/lvm.conf:

Монтирование снапшота

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

Но теперь для использования функционала LVM2 можно смонтировать снапшот в отдельную точку /mnt/2:

Если не указать флаг -o nouuid при использовании XFS и смонтированном исходным LV (origin), то возникнет ошибка вида:

Причина тому проста: XFS имеет UUID, которые являются уникальными идентификаторами файловой системы. Две файловые системы с одинаковым UUID не могут быть смонтированы на одном сервере. Поскольку снапшоты по сути представляют собой одну и ту же файловую систему, UUID для обоих устройств будут одинаковыми, поэтому и используется ключ nouuid при монтировании.

Теперь имеются две точки монтирования, одна из которых является снапшотом. Для примера можно внести изменения в файлах на /mnt2, а после выполнить слияние с исходным LV.

Слияние (merge) снапшота с исходным LV

На снапшоте для некоторых файлов вносятся изменения, после чего необходимо отмонтировать исходный LV и сам снапшот:

lvdisplay должен показывать, что LV том не используется и значение open равно нулю:

Теперь можно запустить слияние всех изменений из снапшота в исходный LV:

Наблюдать за прогрессом изменения секторов можно через dmsetup:

В конечном итоге, если слияние завершилось, атрибуты будут следующие:

Если кажется, что процесс подвис, а в dmsetup не происходит изменений, то нужно убедиться, что LV том не примонтирован. Если попытаться смонтировать том, то будет ошибка Command on LV vglxc/wikisnapshot is invalid on LV with properties: lv_is_merging_cow. В таком случае можно попытаться перезапустить мерж, указав аргументом наименование VG:

Заключение

В статье были рассмотрены теоретические аспекты назначения и применения снапшотов, а также проведены практические проверки на примере LVM2 в Centos 7. Резюмируя, стоит выделить основные моменты, о которых стоит помнить (повторюсь для закрепления):

Лично мне не доводилось использовать снапшоты LVM, т.к. обычно я пользуюсь снапшотами, которые предоставляет делать гипервизор для виртуальных машин. Принцип работы такой же, что описан в начале статьи. Но также есть серверы, доступа к которым из консоли гипервизора у меня нет, и вот тут в теории уже можно будет попробовать использовать возможности снапшотов в LVM.

Читайте также: