Как работают снимки 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 видеть.

Другие вопросы по тегам