Я запускаю несколько гостевых KVM на хосте Ubuntu 10.04. По неосторожности были удалены образы запущенных хостов qcow2. Они по-прежнему работают и правильно реагируют, а также читают / пишут и т. Д. Если вы остановите гостя, он откажется загружаться из-за отсутствия образа.
Мне любопытно узнать, где эти файлы записываются и откуда читаются в настоящее время. Это в памяти? Дополнительный вопрос: можно ли восстановить данные обратно в образ qcow2? Это не критически важные данные, поэтому я рад поэкспериментировать. Если бы мне не приходилось спасать данные и воссоздавать каждого гостя, это просто сэкономило бы время.
Наличие открытого файлового дескриптора и записи в каталоге - разные вещи, несколько связанные между собой. Пока в KVM открыты файлы qcow2, они все еще существуют на диске в тех же блоках, что и раньше. В Linux вы можете восстановить файлы из /proc/[pid]/fd/[file descriptor]
используя метод, описанный в этом Вопрос суперпользователя.
Некоторое время назад я делал нечто подобное в esx. Ответ от службы поддержки заключался в том, что файл все еще существует на диске и был отключен от таблицы файловой системы. При закрытии файла дескриптор открытия падает, и попытка использовать таблицу для поиска файла терпит неудачу.
Если я правильно помню, мы использовали lsof, чтобы отследить открытый дескриптор и вытащить его с диска в восстановленный файл. Но это было очень давно.
Когда серверная часть уходит, все кэшируется либо в памяти, либо в свопинге. Так что, если вы просто хотите восстановить данные, вы все равно можете использовать ssh, а затем rsync с другим сервером, что важно для вас.
Вы пытаетесь выполнить dd if и перенаправить ssh на dd или на другой образ. Это может работать, а может и не работать. Итак, в первую очередь следует сохранить данные, а затем, если у вас останется время, вы можете попытаться реплицировать изображение.