Как работают снимки LVM на уровне PE?
Как работают снимки LVM на уровне PE? Что хранится где? Какие данные теряются, когда снимок исчерпывает пространство COW?
(описание + объяснение ниже)
Я экспериментировал с LVM и снимками на VirtualBox, и я заметил странное поведение. Я хотел посмотреть, как система будет реагировать в различных ситуациях, поэтому я установил Lubuntu 13.04 на виртуальную машину с проверенной опцией LVM. После того, как он установил мою систему, я добавил еще один 8 ГБ диск в виртуальную машину, использовав vgcreate
расширить группу томов lubuntu-vg
в /dev/sdb
, а затем сделал снимок lubuntu-vg/root
с lvcreate
, с размером 6,74G создания lubuntu-vg/rootsnap
(Обратите внимание lvdisplay
Команда, указанная ниже, была запущена до того, как я создал снимок)
user @ user-VirtualBox: ~ $ sudo fdisk / dev / sda Команда (m для помощи): p Диск /dev/sda: 8589 МБ, 8589934592 байт 255 головок, 63 сектора / дорожка, 1044 цилиндра, всего 16777216 секторов Единицы = секторы 1 * 512 = 512 байт Размер сектора (логический / физический): 512 байт / 512 байт Размер ввода / вывода (минимальный / оптимальный): 512 байт / 512 байт Идентификатор диска: 0x000c4cee Система Идентификатора Начальной Загрузки Конца Блокировки /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 16775167 8136705 5 Extended /dev/sda5 501760 16775167 8136704 8e Linux LVM Команда (m для помощи): q user @ user-VirtualBox: ~ $ sudo lvdisplay --- логический том --- Путь LV /dev/lubuntu-vg/root LV Имя root VG Имя lubuntu-vg LV UUID JeyQ7Z-dtu1-Yr5R-hTTU-6Vya-Dr67-qSXwTf LV Write Доступ для чтения / записи Хост создания LV, time lubuntu, 2013-05-02 18:09:41 -0500 Доступен статус LV # открыть 1 Размер LV 6,73 ГиБ Текущий LE 1723 Сегменты 1 Распределение наследовать Читать впереди секторов авто - в настоящее время установлено 256 Блок устройства 252: 0 --- логический том --- Путь LV /dev/lubuntu-vg/swap_1 Имя LV swap_1 VG Имя lubuntu-vg LV UUID ZkyAxG-mFB0-жд H-GjfK-CHlz-RbMc-ilumbj LV Write Доступ для чтения / записи Хост создания LV, time lubuntu, 2013-05-02 18:09:41 -0500 Доступен статус LV # открыть 2 Размер LV 1020,00 МиБ Текущий LE 255 Сегменты 1 Распределение наследовать Читать впереди секторов авто - в настоящее время установлено 256 Блок устройства 252: 1 user @ user-VirtualBox: ~ $ sudo vgdisplay --- Объемная группа --- VG Имя lubuntu-vg Идентификатор системы Формат lvm2 Области метаданных 2 Последовательность метаданных № 8 VG Access чтение / запись VG Status изменяемого размера MAX LV 0 Cur LV 2 Open LV 2 Макс PV 0 Cur PV 2 Акт PV 2 VG Размер 15,75 ГиБ Размер PE 4,00 МиБ Всего ПЭ 4033 Alloc PE / Размер 1978 / 7,73 ГиБ Free PE / Размер 2055 / 8,03 ГиБ VG UUID 2ZEhCz-Q988-oBAc-nE14-MdUs-j7un-2oicHD user @ user-VirtualBox: ~ $ sudo pvdisplay --- Физический объем --- Имя PV /dev/sda5 VG Имя lubuntu-vg Размер PV 7,76 ГиБ / не используется 2,00 МиБ Выделяемый да Размер PE 4,00 МиБ Всего ЧП 1986 Free PE 8 Выделенный ЧП 1978 PV UUID OYCQrn-p7PH-4D52-4xRR-xphi-9DyL-Klys3t --- Физический объем --- Имя PV /dev/sdb VG Имя lubuntu-vg Размер PV 8,00 ГиБ / не используется 4,00 МиБ Выделяемый да Размер PE 4,00 МиБ Итого ПЭ 2047 Свободный PE 2047 Выделенный PE 0 PV UUID ErizVU-o1Vf-73GO-Pkwf-PeM9-xoWo-snSmm2
Затем я скачал несколько обновлений, чтобы заполнить /var/cache/apt/archives
, а затем выключил систему. Чтобы смоделировать сбой диска, я удалил / dev / sdb из настроек VirtualBox и загрузил машину обратно. Не удалось смонтировать, потому что не смог найти lubuntu-vg/root
, В этот момент я попытался выяснить, как "выглядят" конфигурации LE и PE для моей системы.
Я попытался представить, как будет выглядеть макет моей установки LVM; На /dev/sda
, он бы выделил несколько PE в начале для обмена, а затем выделил остальные PE для lubuntu-vg/root
, Потом я продлил lubuntu-vg
в /dev/sdb
и сделал снимок, который, как я предполагал, выделил бы большинство PE на /dev/sdb
, Я думаю, что lubuntu-vg/rootsnap
теперь использует те же PE, которые lubuntu-vg/root
делал изначально, а сейчас lubuntu-vg/root
(с кэшированными.debs в /var/cache/apt/archives
) использует смесь старых PE и вновь распределенных PE на /dev/sdb
для целей коровы. Так что для меня имело смысл, что когда я удалил /dev/sdb
(предположительно с PE COW) машина не загрузилась, потому что не могла найти lubuntu-vg/root
,
Затем я снова добавил /dev/sdb
, загрузился и удалил снимок. На данный момент, я ожидал, что если бы я должен был удалить /dev/sdb
снова система не сможет загрузиться, так как PE COW были на этом диске. Тем не менее, когда я попробовал это, система успешно загрузилась, и.debs все еще были в /var/cache/apt/archives
, несмотря на /dev/sdb
не привязан.
Как это возможно? Я думал, что PE COW были на /dev/sdb
, который я удалил. Переместили ли LVM PE COW в /dev/sda
когда я снимал снимок, или какие-то другие причудливые движения при создании снимка?
У меня была одна мысль: возможно, когда LVM распределяет PE, он фактически и фактически не резервирует их при создании LV, что позволяет чередовать PE LV друг с другом. Если это так, почему система не может загрузиться, когда /dev/sdb
был удален? Не будут ли PE COW на /dev/sda
затем?
1 ответ
Когда вы создаете снимок, вы выделяете PE для размещения блоков COW. Если он заполняется или недоступен, умирает моментальный снимок, а не источник. Ваша система должна была нормально загружаться без /dev/sdb, так как снимок не требуется для загрузки. Если этого не произошло, то где-то есть ошибка.
Также вам не нужно представлять, где находятся PE, вы можете запустить pvdisplay -m
видеть.