Как сделать лв
Добавил пользователь Алексей Ф. Обновлено: 05.10.2024
По сути, я хочу переместить / скопировать несколько логических томов (lv) в новую группу томов (vg). Новая группа томов находится на новом наборе физических томов. Кто-нибудь знает, как сделать это безопасно, не повреждая данные внутри этих логических томов?
Можете ли вы предоставить более подробную информацию? Вы знаете, как сделать новые VG и LV? Вы перемещаете раздел данных или ваш корневой раздел?
Сначала я создал бы новый PV / LV, выключил виртуальную машину, затем скопировал данные с помощью dd, загрузил новую виртуальную машину и подтвердил, что она работает.
vgmerge позволяет объединить два VG. Вы также можете использовать pvmove для перемещения данных в VG и vgsplit, если вы хотите вернуться к нескольким VG.
Одна нота. Для этого у вас должно быть временное устройство, используемое для перевода онлайн LV в другой VG. Конечно, после переноса вы должны обновить / etc / fstab и другую затронутую конфигурацию, а также запланировать некоторое время автономной работы для перезагрузки и, в конечном итоге, внести некоторые изменения в конфигурацию. Если вы выполняете какие-либо действия с rootfs или bootfs, у вас должен быть дистрибутив linux live для восстановления основной системы.
Нет причин сначала копировать его в файл .img, просто сначала выполните lvcreate, а затем непосредственно скопируйте его:
Это слишком коротко. Это не говорит, что именно упомянутые размеры - например, может быть очень маленьким, поскольку это только для различий снимка.
1) Сделайте снимок целевого логического тома.
lvcreate --snapshot --name --size /dev/volume-group/logical-volume
Примечание. Размер снимка может быть как угодно большим. Важно иметь достаточно места, чтобы зафиксировать изменения во время снимка.
2) Создайте копию изображения снимка с помощью dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Создайте новый логический том достаточного размера в целевой (новой) группе томов.
lvcreate --name --size the-new-volume-group-name
4) Запишите данные на новый логический том из резервной копии образа, используя dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) удалить снимок и резервную копию изображения, используя lvremove и rm соответственно.
Вот и все, ребята . Надеюсь, это кому-нибудь поможет :)
ising backup.img для временного резервного копирования хранилища не требуется. Вы можете напрямую перейти от исходного снимка к целевому LV с не смонтированным состоянием.
Кроме того, вы можете использовать, 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 откажется продолжить.
это просто бессмысленно. Вы должны размонтировать файловые системы, деактивировать тома и т. Д. Вы можете просто размонтировать dir и скопировать данные.
Во-первых, как сказал пользователь 189142, это бессмысленно. во-вторых, это применяется только в ситуации, когда мы можем остановить сервисы, используя перемещенный объем. Это проблема с сервисами, работающими 24/7, и объем очень велик с данными, подсчитанными с терабайтами. По этой причине эта процедура требует очень длительного времени обслуживания. По этой причине гораздо проще просто создать новый том, rsync онлайн, а затем через короткое время rsync в автономном режиме для обновления, перемонтирования и возврата системы в оперативное состояние. Конечно, очень хорошая идея - стереть ненужные данные с исходного тома. может быть временно переместить его в какое-то временное место.
До сих пор все 4 ответа пропускают, что точный размер объема часто неизвестен. lvdisplay показывает только значения, округленные до 2 десятичных знаков, и man lvdisplay указывает только на другие команды для доступных параметров. Далее выбирается MiB, что является достаточно точным с размером блока LVM по умолчанию 4 MiB:
lvdisplay --units m
MiB также является единицей по умолчанию для --size of lvcreate . В случае сомнений дважды проверьте правильный размер lvdisplay после создания целевого тома. Затем, как и в других ответах, сделайте копию. Кроме того, я бы порекомендовал проверить копию , например, с cmp .
Вот почему используется снимок и что он защищает и не защищает:
Снимок сделан таким образом, что все данные копируются так, как это было на момент создания снимка. Действия на исходном томе в процессе копирования не будут отражены в копии.
Снимок также защищает исходный том от человеческих ошибок в dd командной строке. Если вы случайно записали снимок, будут повреждены только данные снимка, и вы можете просто удалить снимок и начать все сначала.
Целевой том не защищен во время процессов копирования. Если другой администратор (или автоматический процесс, такой как os-prober of dracut ) монтирует неполный том, монтирование может испортить вещи. (Даже монтирование только для чтения может записывать записи журнала в том.)
Немного обо всем и все о немногом, или практический опыт системного администратора.
Основы LVM - что такое PV, VG, LV
16 сентября 2010, 23:36
Если вы как и я только начинаете знакомиться с LVM (Logical Volume Manager) и интенсивно изучаете информацию по этому вопросу, то в первую очередь, нужно четко понимать значение таких сокращений как PV, VG, LV, PE и LE. Именно на последних и хочу остановиться с пояснениями и примерами, так как они применяются во всех документах и статьях. Думаю, расширять свои познания в LVM без понимания, что означают эти аббревиатуры будет затруднительно. Эти же сокращения используются и в выводе команд для работы с LVM и в названиях самих команд, поэтому безусловно нужно понимать, что есть что.
Примеры выполнялись в виртуальной операционной системе Ubuntu Server, которая содержит три виртуальных диска. Но будем считать, что система реальная и диски настоящие - физические, чтобы не возникало путаницы в понятиях.
Начнем с PV. PV (Physical Vollume) для системы LVM - это реальный физический диск или раздел диска, который инициализирован командой pvcreate. Пример. У нас есть три физических диска /dev/sda, /dev/sdb и /dev/sdc:
Диск /dev/sda разбит на разделы: /dev/sda1 - основной раздел, /dev/sda2 - расширенный раздел, /dev/sda5 - логический раздел, который занимает все пространство расширенного раздела. Диски /dev/sdb и /dev/sdc на разделы не разбиты. Если выполнить команду pvscan, то можно увидеть какие из этих дисков или разделов дисков являются PV для LVM:
$ sudo pvscan
PV /dev/sda5 VG ubuntuserver lvm2 [7,76 GiB / 32,00 MiB free]
PV /dev/sdb VG ubuntuserver lvm2 [2,00 GiB / 1,70 GiB free]
Total: 2 [9,75 GiB] / in use: 2 [9,75 GiB] / in no VG: 0 [0 ]
Видно, что в данный момент есть два PV для LVM - это раздел диска /dev/sda5 и весь диск /dev/sdb. На рисунке 1 они отмечены желтым цветом:
PV - это основа для создания VG - Volume Group. .
Если провести аналогию с обычным жестким диском в операционной системой Linux, то VG для системы LVM - это как неразмеченный жесткий диск для системы Linux.
VG - может состоять из одного, двух и более PV. На рисунке 1 показана VG с именем ubuntuserver (отмечена зеленым цветом), которая состоит из двух PV. Дисковый объем VG равен сумме объемов PV из которых она состоит. В нашем случае он должен равняться 9.75 Гб. Проверим командой vgs:
Если нам мало 9.75 Гб, то можно создать из диска /dev/sdc еще один PV, и добавить его в существующий VG. Тогда объем VG увеличится на объем добавленного PV.
Итак, если VG для системы LVM - это как неразмеченный жесткий диск, то для того чтобы начать работу с ним нужно его разметить - создать разделы. И вот эти разделы и будут называться LV - Logical Volume. На рисунке 1 можно увидеть, что часть пространства VG, отдана под LV с именем root, часть под LV с именем swap_1 и некоторое пространство осталось свободным. Команда lvs покажет информацию о размерах LV:
$ sudo lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
root ubuntuserver -wi-ao 7,64g
swap_1 ubuntuserver -wi-ao 388,00m
Если снова провести аналогию, то LV в LVM - это как /dev/sda1 на реальном жестком диске. То есть LV - это уже логическая единица которую можно форматировать под определенную файловую систему и затем монтировать обычной командой mount.
Надеюсь пока все понятно. Осталось PE и LE. Данные сокращения встречаются в документации не так часто, но без них картина будет неполной. PE - Physical Extention - это блок в пространстве PV фиксированного размера. По умолчанию PE равен 4 Мб, но можно задавать и другие размеры. Таким образом PV состоит из определенного количества PE. Если провести аналогию, то PE в LVM - это как сектор на жестком диске. Только сектор всегда равен 512 байт и изменить его невозможно.
Команда pvdisplay, покажет информацию о PV и PE:
$ sudo pvdisplay /dev/sdb
--- Physical volume ---
PV Name /dev/sdb
VG Name ubuntuserver
PV Size 2,00 GiB / not usable 4,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 511
Free PE 436
Allocated PE 75
PV UUID Rfd126-hs8B-eW42-UoLK-iCxa-CStR-E6dSZi
Можно увидеть, что PV состоит из блоков оп 4 Мбайта (PE Size), всего блоков PE - 511 (Total PE), что дает нам размер в 2 Гб. Также можно увидеть, что 436 блоков PE (Free P), не задействованы - то есть они не состоят ни в одном VG. А 75 блоков PE (Allocated PE) задействованы в VG. Таким образом увеличивать (или уменьшать) в случае необходимости размер VG можно только порциями кратными размеру PE - в нашем случае 4 Мбайта.
Если PE это Physical Extention, то как можно уже догадаться LE - это Logical Extension. То есть LE - это блоки из которых состоит LV. Размер PE всегда равен LE. То есть если PE равен 4 Мбайта, то и LE равен 4 Мбайта. Существует возможность указать соответствие PE и LE. Например, так как показано на рисунке 2:
Если посмотреть на наш сервер и выполнить команду lvdisplay -m, то можно увидеть соответствие PE и LE в LV. Некоторые строки вывода команды сократил:
$ sudo lvdisplay -m
--- Logical volume ---
LV Name /dev/ubuntuserver/root
VG Name ubuntuserver
LV Size 7,64 GiB
Current LE 1956
Segments 2
Allocation inherit
--- Segments ---
Logical extent 0 to 1880:
Type linear
Physical volume /dev/sda5
Physical extents 0 to 1880
Logical extent 1881 to 1955:
Type linear
Physical volume /dev/sdb
Physical extents 0 to 74
Видим, что LV состоит из PE двух PV. LV root состоит из 1956 LE (Current LE). 1881 LE - это PE c PV /dev/sda5 и 75 LE - это PE c PV /dev/sdb.
На этом пока все по LVM. Можно двигаться в изучении дальше. Если где ошибся в определениях - сообщите об этом в комментариях. И в завершении хочу оставить, несколько ссылок которые по моему мнению хорошо описывают LVM и на которые стоит обратить внимание при обучении:
Logical Volume Manager - на английском языке
LVM HOWTO - на английском языке
Повесть о Linux и LVM (Logical Volume Manager) - на русском языке на основе HOW-TO.
Ярослав Гаврилюк запись закреплена
Забейте 2 гола лв ? Как выполнить ? Заха 2 забил и не выполниломь или я че то не понимаю уже ))))
Че тут сложного? У Zaha позиция ЛП , забить нужно за ЛФА .
Поменяй ему позицию забей,потом поменяй обратно и все..
defnot
defnot
defnot
Что бы это сделать не нужно нихуя кроме глаз и рук
1. Находим строчку в menu.cpp : // start menu render
2. Документируем строчку ниже ( для совсем отбитых это два слеша)
3. Переходим в imgui.h и находим строчку : IMGUI_API bool Begin(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0);
4. Меняем 0 на 1
5. Компилим чё
(если шо пункт 3 и 4 для того что бы не было надписи дебаг)
Moteeees
ExtrimHack - Top Soft
Moteeees
ExtrimHack - Top Soft
Moteeees
ExtrimHack - Top Soft
Что бы это сделать не нужно нихуя кроме глах и рук
1. Находим строчку в menu.cpp : // start menu render
2. Документируем строчку ниже ( для совсем отбитых это два слеша)
3. Переходим в imgui.h и находим строчку : IMGUI_API bool Begin(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0);
4. Меняем 0 на 1
5. Компилим чё
Читайте также: