Фиксировать или вернуться снимок LVM Linux?

В то время как я не смог сделать TDD с Марионеточными декларациями все же, у нас действительно есть довольно хороший цикл, чтобы препятствовать тому, чтобы изменения вошли в производство без тестирования. У нас есть два настроенные puppetmasters, каждый - наше производство puppetmaster, и другой наша разработка puppetmaster. Мы используем "среды" Марионетки для установки следующего:

  • среды разработки (один для каждого человека, работающего над Марионеточными декларациями)
  • тестовая среда
  • продуктивная среда

Наши разработчики приложений делают свою работу над виртуальными машинами, которые получают их Марионеточные конфигурации от среды "тестирования" Puppetmaster разработки. Когда мы разрабатываем Марионеточные декларации, мы обычно настраиваем VM, чтобы служить тестовым клиентом во время процесса разработки и указать на него на нашу персональную среду разработки. После того как мы довольны нашими декларациями, мы продвигаем их к тестовой среде, где разработчики приложений получат изменения на своем VMs - они обычно жалуются громко, когда что-то повреждается :-)

На представительном подмножестве наших производственных машин существует второй puppetd, работающий в noop режиме, и указал на тестовую среду. Мы используем это для ловли потенциальных проблем с декларациями, прежде чем они будут продвинуты к производству.

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

15
задан 18 June 2019 в 19:38
6 ответов

LVM2 / функциональность слияния снимков картопостроителя устройства доступна, если Вы запускаете Linux 2.6.33 + и используете LVM 2.0.58 +:

lvconvert --merge

См. это сообщение: http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/

Это ссылается на http://kernelnewbies.org/Linux_2_6_33 (взгляд на раздел 5, MD/DM) и журнал изменений LVM в 2.0.58: ftp://sources.redhat.com/pub/lvm2/WHATS_NEW

Но я еще не могу сказать Вам, как использовать его правильно ;-)

10
ответ дан 2 December 2019 в 20:45

Хорошо, я думаю, что мне изобразили его из перечитывания ПРАКТИЧЕСКОГО РУКОВОДСТВА 3.8.

  • Снимки только для чтения (как LVM1) содержат различия блочного уровня после создания снимка - оригинал все еще изменяется, но снимок сохраняет представление оригинала. Чтение из снимка представляет данные, как это появилось в то время.
  • Снимки чтения-записи (значение по умолчанию в LVM2) могут быть записаны в: они - ветвление исходного раздела. Запись в снимок не изменяет оригинал.

Путем снимок работает, набор блочного уровня изменений из оригинала. Так, когда оригинал записан в, следующие вещи происходят:

  1. Что-то пытается записать в оригинал.
  2. Исходный читается, и блоки из оригинала копируются в снимок.
  3. Исходный изменяется.
  4. Снимок содержит "обратные различия" - изменения, которые делают исходный взгляд как он, сделал, когда снимок был создан.

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

Ответ на мой собственный вопрос:

Создайте новый снимок с LVM. Если обновление может быть настроено для записи в точку монтирования снимка, используйте снимок R/W. Иначе или RO или R/W сделают.

Затем:

  • Если запись в R/W создает снимки точку монтирования, фиксацию путем записи снимка в оригинал, и возвращается путем выбрасывания снимка.
  • При записи в исходную точку монтирования фиксируйте путем выбрасывания снимка и вернитесь путем записи от снимка до оригинала.

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

10
ответ дан 2 December 2019 в 20:45
  • 1
    Еще нет никакого инструмента слияния LVM, доступного. Это было в работах, но мне don' t верят it' s завершенный. –  Ignacio Vazquez-Abrams 2 April 2010 в 23:48

LVM работает на блочном уровне. Это даже 'не знает, что' какая файловая система. Таким образом, Вы не можете создать снимки только определенные каталоги, если файловая система от другого объема LVM не смонтирована там.

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

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

3
ответ дан 2 December 2019 в 20:45

Я только что попробовал обновить Ubuntu на основе снимков. И да, перезагружать пришлось несколько раз. Сначала переименуйте исходный root-lv во что-нибудь другое, чтобы вы могли дать снимку исходное имя (поскольку обновление создает много изменений, и изменения происходят быстрее на снимке, чем на оригинале):

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

Размер должен быть выбран соответственно. Затем перезагрузитесь, чтобы «новый» lvm / ubuntu был смонтирован как root, и вы могли выполнить обновление. Теперь вы можете протестировать новую версию и даже перейти на старую систему с помощью

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

. Если вы хотите отказаться от обновления, просто запустите (из старой системы)

# lvremove lvm/root-new

. Если вы хотите зафиксировать изменения, просто запустите (из старая система)

# lvconvert --merge lvm/root-new

или из новой системы

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

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

Да, и между прочим: при переключении между системами, не забудьте использовать соответствующее ядро. Поскольку / boot не является частью lvm, старое и новое ядра будут размещены там рядом.

20
ответ дан 2 December 2019 в 20:45

Документация сбивает с толку. Мне кажется, что lvcreate --merge означает отменить все изменения, а lvremove означает зафиксировать изменения. Разница в том, как вы его используете.

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

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

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

0
ответ дан 2 December 2019 в 20:45
  1. Нет причин для слияния некоторых. Просто удалите снимок, исходный LV останется измененным
  2. Слияние необходимо для отмены изменений lvconvert --merge <имя снимка>
  3. LVM работает с блочными устройствами. Любые изменения, связанные с FS, должны выполняться специальными утилитами (xfs_growfs, e2fsck, ...) в соответствии с типом FS

Снимок "заморозить" исходное состояние LV. Удалить снимок означает забыть это состояние. Слияние снимка означает возврат к этому состоянию

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

2
ответ дан 2 December 2019 в 20:45

Теги

Похожие вопросы