Назад | Перейти на главную страницу

Так работают снимки LVM?

Я пытаюсь понять, как работают моментальные снимки LVM, чтобы реализовать их на своем файловом сервере, но мне трудно найти в Google что-либо, что объясняет, как это работает, вместо того, чтобы использовать его для базовой системы резервного копирования.

Из того, что я прочитал, я думаю, что это работает примерно так:

Может кто поправит меня, где я ошибаюсь. В лучшем случае, полагаю, я ничего не могу найти в гугле.


vgdiplay

obu1:/home/jail/home/qps/backup/D# vgdisplay
  --- Volume group ---
  VG Name               fileserverLVM
  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               931.51 GB
  PE Size               4.00 MB
  Total PE              238467
  Alloc PE / Size       238336 / 931.00 GB
  Free  PE / Size       131 / 524.00 MB
  VG UUID               qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

Не смотрите на раздел снимков LVM-HOWTO?

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

Моментальные снимки LVM «живут» внутри группы томов, на которой размещен том, который является моментальным снимком, а не другой том. Ваше утверждение «... много-много нераспределенного свободного пространства, а не раздел» звучит так, как будто вы думаете, что снимки «живут» за пределами группы томов, подлежащей снимку, и это не верно. Ваша группа томов находится в разделе жесткого диска, и том, для которого создается моментальный снимок, и все созданные вами шейпшоты живут в этой группе томов.

Обычный способ использования моментальных снимков LVM - не для длительного хранения, а для получения согласованной «картины» файловой системы, позволяющей сделать резервную копию. После завершения резервного копирования снимок удаляется.

Когда вы создаете снимок LVM, вы назначаете пространство для хранения любых изменений, сделанных, пока снимок активен. Если внесено больше изменений, чем вы указали для моментального снимка, он станет непригодным для использования и должен быть удален. Вы не хотите оставлять снимки рядом, потому что (а) они заполнятся и станут непригодными для использования, и (б) производительность системы снизится, пока снимок активен - все становится медленнее.

Редактировать:

То, что делают Microsoft Volume Shadow Copy Services и моментальные снимки LVM, не сильно отличается. Решение Microsoft немного более комплексное (как это обычно бывает с Microsoft - к лучшему или к худшему, их инструменты и продукты часто стремятся решить довольно большие проблемы, а не сосредотачиваются на чем-то одном).

VSS - это более комплексное решение, объединяющее поддержку аппаратных устройств, поддерживающих моментальные снимки и программные моментальные снимки, в единый API. Кроме того, у VSS есть API-интерфейсы, позволяющие стабилизировать приложения с помощью API-интерфейсов моментальных снимков, тогда как моментальные снимки LVM относятся только к моментальным снимкам - любые зависающие приложения - это ваша проблема (перевод баз данных в состояние «резервного копирования» и т. Д.).

По словам Эвана, моментальные снимки LVM являются примером решения для копирования при записи. Как это работает, немного отличается от того, что подразумевал Эван, но не во многом.

Если у вас есть том LVM без снимков, запись в том происходит, как и следовало ожидать. Заменен блок, и все.

Как только вы создаете снимок, LVM создает пул блоков. Этот пул также содержит полную копию метаданных LVM тома. Когда в основной том происходит запись, такая как обновление inode, перезаписываемый блок копируется в этот новый пул, а новый блок записывается в основной том. Это «копирование при записи». Из-за этого, чем больше данных будет изменено между моментом создания моментального снимка и текущим состоянием основного тома, тем больше места будет занято этим пулом моментальных снимков.

Когда вы монтируете моментальный снимок, метаданные, записанные при его создании, позволяют отображать блоки пула моментальных снимков на измененные блоки в томе (или в моментальный снимок более высокого уровня). Таким образом, когда осуществляется доступ к определенному блоку, LVM знает, к какому блоку доступ. Что касается файловой системы на этом томе, то моментальных снимков нет.

Джеймс указал на один из недостатков этой системы. Если у вас есть несколько снимков одного и того же тома, каждый раз, когда вы записываете в блок на основном томе, вы потенциально запускаете запись в каждом отдельном снимке. Это связано с тем, что каждый моментальный снимок поддерживает свой собственный пул измененных блоков. Кроме того, для длинных деревьев моментальных снимков доступ к моментальному снимку может потребовать довольно много вычислений на сервере, чтобы выяснить, какой именно блок необходимо обслужить для доступа.

Когда вы удаляете снимок, LVM просто удаляет пул снимков и обновляет дерево снимков по мере необходимости. Если отброшенный снимок является частью дерева снимков, некоторые блоки будут скопированы в снимок более низкого уровня. Если это самый низкий снимок (или единственный), пул просто удаляется, и операция выполняется очень быстро.


Некоторые файловые системы предлагают моментальные снимки внутри файловой системы, ZFS и BTRFS - лишь два из наиболее известных. Они работают аналогично, хотя файловая система сама управляет измененным / неизменным отображением. Возможно, это лучший способ сделать это, поскольку вы можете проверить все семейство снимков для обеспечения согласованности, чего нельзя сделать с помощью LVM.

Снимки LVM неэффективны: чем больше снимков, тем медленнее будет работать система.

Я поддерживаю только xfs как то, что мы используем, и xfs_freeze можно использовать для прекращения нового доступа к файловой системе и создания стабильного образа на диске.

Копирование при записи используется, чтобы дисковое пространство использовалось эффективно.

Вы создали файловую систему на логическом томе, в котором есть свободное место для моментальных снимков.

Это пример из FAQ

Вы не указываете, используете ли вы Linux или HP-UX. В HP-UX вы создаете логический том и монтируете его как моментальный снимок другого логического тома. В Linux вы создаете логический том как том моментального снимка.

Удаление снимка в HP-UX выполняется путем размонтирования тома; в Linux это делается с помощью lvremove для удаления логического тома.

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

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