Существует ли «точка восстановления» в Linux (Debian / Ubuntu), например Windows?


17

Я работаю непосредственно в виртуальной машине Ubuntu (VM). Некоторые обновления (например, ядро) были доступны в диспетчере обновлений.

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

Предположим, я не использую виртуальную машину с установкой Debian / Ubuntu. Существует ли подход установки-восстановления, который не зависит от конфигурации виртуальной машины, чтобы восстановить вашу систему точно перед обновлением (как «точка восстановления» в Windows), и его легко восстановить как устройство виртуальной машины?

(Я не ищу «изображения-призраки» или что-то в этом роде (Norton Ghost, Clonezilla и т. Д.), Я ищу что-то встроенное в систему Linux)


3
Я знаю, что это не по теме, поэтому я добавляю это как комментарий, но OpenSolaris может сделать снимок всей файловой системы ZFS и восстановить его позже. Это также не занимает много места на диске из-за дедупликации. На самом деле стандартный способ сделать серьезные обновления - это создать новый снимок FS и установить на него обновления. Если это работает, вы можете удалить старый. Если нет, вы можете просто вернуться к тому, который работал.
AndrejaKo

3
@AndrejaKo: +1 Однако, это «клон» (записываемый снимок; обычные снимки доступны только для чтения), и тот факт, что ему не нужно много места, не имеет ничего общего с дедупликацией, а с тем, как обрабатываются снимки и клоны в файловых системах COW. Т.е. вы получаете ту же экономию дискового пространства и для пулов без дедупликации.
Knweiss

@ Knweiss Да, все верно. Я только что посмотрел!
AndrejaKo

Ответы:


15

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

  • Прежде всего, дистрибутивы Linux гораздо серьезнее, чем Microsoft, в том, что стабильные выпуски обновляются только для исправления важных ошибок и с минимальными изменениями. Например, в Ubuntu и Debian вы можете получать только обновления безопасности ( -security) или только обновления безопасности и важные исправления ошибок ( -updates).

  • Обновления ядра являются наиболее рискованными из-за вероятности того, что, казалось бы, полезные изменения вызовут проблемы в конкретной конфигурации оборудования. Вот почему большинство дистрибутивов позволяют устанавливать более одной версии ядра одновременно; например, на момент написания этой статьи в Ubuntu 10.04 было доступно три версии ядра: 2.6.32.21.22от исходного выпуска, 2.6.32.22.23с обновлениями безопасности, а также 2.6.32.23.24с обновлениями, не связанными с безопасностью. Если выпуск ... 24 вызывает проблемы на вашем компьютере, вы можете перезагрузиться в ... 23 (и даже пометить ... 24 как запрещенную установку, по крайней мере, если вы используете aptitude).

  • Реестра нет: все данные конфигурации находятся в файлах (в /etcиерархии), которые можно легко восстановить по отдельности, если что-то пойдет не так. Даже тогда обновления до стабильного выпуска редко влияют на файлы в /etc.

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

    • Загруженные пакеты хранятся в /var/cache/apt/archives. Если у вас есть место на диске, просто не удаляйте старые файлы пакета, пока не убедитесь, что новая версия работает для вас.
    • Многие источники хранят более старые версии, поэтому вы можете легко понизить версию (либо загрузив и установив более старую версию вручную, либо используя подходящие настройки). Для Debian посмотрите snapshot.debian.org .
    • Существует очень простой способ настроить управление версиями /etc: установить etckeeperпакет и активировать его с помощью команды etckeeper init. (Я делаю это, но не потому, что меня беспокоит, что обновления что-то сломают, а потому, что я волнуюсь, что мои изменения что-то сломали.)

Да, просто нет сравнения между стабильностью Windows и Debian / stable. Даже если что-то сломается (почти всегда из-за очевидной ошибки пользователя), существует множество инструментов для отладки и устранения проблемы.
Лиори

2
«Обновления ядра являются самыми рискованными» - поэтому я держу копию Knoppix рядом с моим компьютером. 5 а не 6.
Амфетахин

Вы также можете найти полезную [rsnapshot] (rsnapshot.org), утилиту для создания снимков файловой системы, основанную на rsync .
Пабло А

5

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


2
но если пакет что-то сломал во время перезагрузки, откат может стать затруднительным (особенно это относится к ревизиям ядра)
Уоррен

1
Вот почему обычно предыдущее ядро ​​сохраняется и может быть выбрано для загрузки в grub.
Барбекю

1
Я не согласен. Было бы очень полезно иметь возможность переключаться между обновлением ОС x и обновлением x + 1 (разница могла бы включать намного больше, чем пакет ядра) с простой перезагрузкой. Это возможно с OpenSolaris.
Knweiss

С Solaris возможно все, кроме поиска стабильных драйверов ;-)
mbq

5

Вы можете попробовать использовать такой инструмент, как etckeeper . Этот инструмент просто хранит общесистемные файлы конфигурации в репозитории управления версиями и упрощает откат и повторное применение любых изменений.

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


Я использую etckeeper, но на самом деле считаю более полезным просматривать временную шкалу изменений, чем откатывать (конечно, вы получаете обе способности). Использовать встроенный веб-сервер (например, hg, git, bzr и т. Д.) Часто проще всего:sudo hg serve -R /etc

3

TMK, функция восстановления Windows только отменяет изменения в реестре и некоторых критических каталогах. Linux не имеет этого.

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


3

Обратите внимание, что Ubuntu, в частности (но, вероятно, и Debian), не удалит старые пакеты ядра при установке обновлений, и вы можете настроить загрузчик так, чтобы при загрузке он отображал список ядер, которые можно выбрать.

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


3

Существует инструмент под названием Timeshift. ( http://www.teejeetech.in/p/timeshift.html ) Я не использовал его, но выглядит многообещающе, и я слышал от пользователей хорошие отзывы об этом. Снимки разработаны, чтобы избежать дублирования данных. И не пугайтесь малоизвестного сайта. :)


2

Если вы используете Диспетчер логических томов для управления содержимым ваших жестких дисков, то вы получите это бесплатно в некоторой степени, используя моментальные снимки. Процитирую великий HOWTO : «Один из примеров - сделать снимок тома, смонтировать снимок и попробовать экспериментальную программу, которая изменяет файлы на томе. Если вам не нравится то, что он сделал, вы можете размонтировать снимок, удалить его, и смонтировать исходную файловую систему на свое место. "


Хочу заметить, что в предлагаемом разделе дисков на Ubuntu 12.04+ используется LVM, так что это действительно лучшее предложение.
Кевинф

1

В зависимости от вашей технологии виртуальной машины вы можете остановить / приостановить / приостановить работу виртуальной машины, выгрузить ядро ​​и скопировать образ виртуальной машины. Если это не удалось, просто восстановите оригинал.

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

Или используя золотую старую смолу (1). Вы создаете полный tar-архив пользовательского пространства, восстанавливаете файлы и удаляете файлы, которых не было в оригинальном tar-шарике.


Из вопроса: «Есть ли подход установки-восстановления, который не зависит от конфигурации виртуальной машины»?
Бен Фойгт

1

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

Тем не менее, статья Unbreakable upgrades, ZFS и Apt описывает функцию apt-clone в дистрибутиве хранения Nexenta на базе Linux и предлагает ...

Существует также новая файловая система, создаваемая частично как ответ на ZFS, которая называется BTRFS, которая будет иметь многие преимущества ZFS и может быть способна включать «небьющиеся обновления» для средних дистрибутивов Linux, таких как Ubuntu, в будущем.

ИМХО, прежде всего, нам нужна пригодная для использования файловая система Copy-On-Write (COW) для Linux, прежде чем такая функция может быть реализована в системных установщиках / обновлениях в разумных пределах.

Примечание: хотя Nexenta основана на Linux, она не использует ядро ​​Linux. Он использует ядро ​​OpenSolaris и ZFS.


Я не собираюсь выбирать ваши гниды, но на основе Linux без ядра Linux это немного оксюморон.
Симус Коннор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.