Ужасная ситуация - файловые системы монтируются одновременно несколькими независимыми экземплярами ОС


14

Как мне безопасно выйти из этой ситуации?

Подробности следующие:

На сервере xen выделены блочные устройства для виртуальных машин. Но эти устройства также были установлены внутри Xen.

Фактически 44 из этих блочных устройств были установлены таким образом. Что еще хуже, каждое физическое устройство видно по 4 путям, и каждый из них монтируется в отдельной точке монтирования. Другими словами, устройства фактически монтируются по 5 раз каждое.

Гостевая ОС ВМ видит путь через псевдоустройство PowerPath (выделено как устройство phy: block для domU)

Некоторые из устройств отформатированы как ext2 и reiserfs.

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

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

Обратите внимание, что приложения, базы данных Oracle по большей части, во всех виртуальных машинах все еще работают и используются.

Я обнаружил это при исследовании высокой загрузки ЦП на dom0. Существует неубиваемый процесс поиска, с помощью cwd -> / media / disk-12, который монтируется из / dev / sdf1, который принадлежит / dev / emcpowerr

Прежде чем кто-либо спросит, один раз, когда я видел, что процессы не могут быть уничтожены и продолжают использовать ЦП и ОЗУ (в отличие от процесса несуществующего / зомби), это когда есть невыполненные зафиксированные операции ввода-вывода, например, возвращена синхронизация, но физически на диске пока нет , Чаще это происходит на ленте ввода / вывода.

Предложения !?

PS Я бы ожидал, что устройства будут «зарезервированы» после установки, чтобы предотвратить подобные вещи? Или это невозможно в Linux?

РЕДАКТИРОВАТЬ: Во-первых, я убежден, что KDE внутри гипервизора) является виновником. Похоже, что KDE монтирует устройства при входе в систему для создания значков на рабочем столе. Однако то же самое не происходит на других серверах Xen, но на всех других серверах установлена ​​гораздо более старая версия SLES, и KDE ... V4 выглядит оскорбительно, а 3.4 ведет себя лучше).

Более того, две некритические виртуальные машины зависли. После их закрытия они не будут загружаться снова из-за повреждения файловой системы. Основная / рабочая виртуальная машина все еще работает, и база данных на ней все еще работает, но очевидно, что это бомба замедленного действия. Клиент пытается перестроить среду на другой виртуальной машине на другом сервере, но застрял в проблемах с настройкой некоторых компонентов, поэтому мы ждем ...

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


1
И сейчас любые резервные копии, сделанные до «выключения», могут просто создавать резервные копии поврежденных данных, хотя в этой ситуации более вероятно, что метаданные файловой системы повреждены, а не содержимое файла.
Йохан

Боюсь, вы потеряете хотя бы часть данных в любом случае. Физическое отключение хоста или принудительное завершение виртуальных машин может привести к нежелательным последствиям, которые могут испортить все (т.е. даже те файловые системы, которые монтируются только один раз). Я, вероятно, попытался бы прекратить все как можно более чисто, чтобы минимизировать потери. И конечно, чтобы это не повторилось.
Петер

Что касается предотвращения этого, IIUC, вы можете попытаться установить разрешения на устройстве в dom0, как только оно будет открыто гостем, но, поскольку разрешения fs (для файлов устройства) могут быть пересечены root (если у вас нет исправленного ядра), это может не нужно помогать.
Петер

1
Что касается вашего пост-скрипта: если устройства видны по нескольким путям, то ядро, вероятно, даже не знает, что это все одно и то же устройство, так как же оно может «зарезервировать» его? Что касается экспорта устройства из dom0 в несколько domU, это позволяет вам сделать это, потому что вы, возможно, захотите сделать это нарочно (например, с файловой системой, которая его поддерживает, или смонтированы только для чтения везде).
Селада

@Celada Я думал об этом, но есть способы «блокировки» устройств: PowerPath должен (в случае Solaris) резервировать все родительские пути устройства (во время инициализации). Кроме того, команды SCSI «резерв» управляются целевым устройством, поэтому, как только цель зарезервирована, она должна отказаться от разрешения резервирования для любого из путей для этого устройства. По крайней мере, это мое ограниченное понимание.
Йохан

Ответы:


2

Если диски записываются с одной точки монтирования, никакого вреда не причиняется. Сделайте чистое отключение, (верните его из приостановленного состояния, если хотите) исправьте крепления. Не запускайте ничего, кроме необходимых приложений на Dom0. Если, OTOH, разделы пишутся с нескольких путей, это ПЛОХО и ухудшается со второго. Потяните пробку.


0

У меня нет конкретной причины, но мое внутреннее чувство подсказывает мне, что лучшим подходом может быть следующее:

  1. Завершите работу приложений.
  2. Скопируйте все данные с виртуальной машины через сеть в резервное хранилище.
  3. Размонтируйте файловые системы из виртуальной машины.
  4. Выключите ВМ. (На этом хосте сейчас работает только одна виртуальная машина).
  5. Убедитесь, что ни один из доменов не настроен на автоматический запуск.
  6. Отключите питание хоста, чтобы гипервизор не выполнял какие-либо «закрывающие» действия, синхронизацию ожидающих операций ввода-вывода и т. Д.
  7. Загрузите виртуальную машину, надеясь, что сам гипервизор выжил после сбоя.
  8. Если это не удается, восстановите среду. (Загрузочные диски виртуальных машин основаны на файлах, но точки монтирования данных находятся на внешнем диске, выделенном как блочные устройства).
  9. Проверьте, монтирует ли гипервизор какие-либо файловые системы, принадлежащие domU. Размонтируйте их до запуска любых domU)
  10. Выключите автоматическую установку KDE.
  11. Запустите виртуальную машину и выполните полную проверку FS.

Альтернатива 11: Запустите ВМ и смонтируйте файловые системы без полного fsck.

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


0

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

Предупреждение : следование этим советам может привести к потере всех данных. Вам решать, стоит ли рисковать или нет.

Если повезет, ваши приложения все еще работают, потому что все данные, которые они используют, находятся в энергозависимой памяти. Вы должны попытаться воспользоваться этой ситуацией (попытаться оценить, может ли это иметь место для каждого приложения) и экспортировать оперативные данные в общий сетевой ресурс, если приложения предлагают такую ​​функцию. Если какие-либо данные находятся на диске, эта функция экспорта может быть либо «заблокирована», как ваш findоператор, либо аварийно завершить работу (и вывести из строя приложение или ОС) из-за измененных / поврежденных данных на диске.

Затем вы можете попытаться сделать живой снимок, следуя инструкциям в следующей статье: Создание снимков в Xen . Я бы пошел за побайтовым снимком, хотя он мог застрять так же, как ваша findкоманда ... Однако я бы не давал такой большой надежды.

Перед выполнением предыдущей команды вы должны прочитать этот документ из Citrix, который помогает понять снимки в Xen (PDF) .

Я желаю вам удачи.


Спасибо. У клиента есть экспорт базы данных. Я думаю, что они просто использовали FTP, чтобы получить его от виртуальной машины, но можно смонтировать сетевой ресурс и экспортировать напрямую в него.
Йохан

Я думал о том, чтобы приостановить виртуальную машину, а затем перенести полную копию на другой хост, а затем попытаться: а) возобновить ее из спящего режима или б) загрузить, после чего перезагрузить компьютер и запустить fsck. Идея состоит в том, что, поскольку у меня все еще есть приостановленная виртуальная машина на исходном хосте, я могу возобновить ее, если копия не работает на другом хосте.
Йохан

Кроме того, проблема возврата к резервной копии заключается в том, что существует опасение, что все резервные копии, сделанные за последние пару месяцев, повреждены.
Йохан

@Johan это более чем вероятно, но большинство, если не все резервные копии (поскольку проблема возникла), вероятно, повреждены. То же самое может быть верно для экспорта базы данных. Удачи еще раз, вам это понадобится!
Гюйгенс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.