При восстановлении данных из испорченных файлов обычно решающее значение имеет доскональное знание внутренней структуры хранения данных, алгоритмы обхода и исправления ошибок в структуре данных. Но иногда возникают дополнительные факторы, которые следует учитывать при обработке битых данных и их восстановлении. Один из таких факторов, о котором хотелось бы рассказать в данной статье – размер файла.
Большинство испорченных файлов, встречающихся нам в работе, относятся к офисным (документы, таблицы, презентации) либо графическим форматам. Также их отличительной чертой является относительно небольшой размер (существенно меньше 10Мб). Связано это с двумя причинами. Во-первых, с огромным количеством пользователей, которые создают и используют файлы этих форматов. Во-вторых, обычно такие мелкие и, как часто считается, не особо важные файлы не попадают в сферу покрытия корпоративного обеспечения сохранности данных. Подобные файлы часто хранятся на переносных хранилищах данных (USB Flash, а иногда и дискеты), что тоже весьма плачевно отражается на их сохранности. При обработке данного класса файлов обычно не возникает проблем связанных с размером входных данных – входной файл при желании можно целиком спроецировать в оперативную память и работать прямо в ней.
Также существенный процент попадающих к нам на восстановление файлов составляют различные базы данных. Размер их обычно колеблется от сотен мегабайт до десятков гигабайт. Обычно такие файлы попадают под действие корпоративных мероприятий по обеспечению сохранности данных, но и это не дает абсолютной гарантии, что данные будут сохранны при тотальном сбое. Большинство этих файлов нецелесообразно или невозможно хранить в памяти. Поэтому при их обработке в оперативной памяти сначала формируется некоторая разметка расположения данных в файле, по которой на следующем шаге восстановления читаются данные, пригодные к восстановлению и формируются выходные данные. В случае потенциально большого объема, занимаемого разметкой файла, а также, если в процессе восстановления надо будет связывать разрозненные куски данных, формирующих один объект (пример – письма в БД хранилища Exchange Server) – используется временная база данных, хранящая разметку.
Но встречаются исключительные случаи – битые базы данных размерами от сотен гигабайт до нескольких терабайт. Разумеется, данные такого объема не могут быть неважными и зачастую именно вокруг такой БД строится работа всей компании. К таким данным очевидно должны применяться все схемы бэкапов, обеспечения надежности хранилищ, но и при всем этом бывают случаи падения баз данных. Про один из таких случаев пойдет речь далее.Читать полностью »