вторник, 9 апреля 2013 г.

Восстановление поврежденного RAID массива


Повреждение RAID массива.

Повреждение массива характеризуется возникновением физических или логических ошибок на одном или нескольких дисках, входящих в его состав. При этом контроллер корректно работает с дисками, образующими RAID, однако регулярно выдает сообщения об ошибках дисков. В этом случае RAID-массив продолжает оставаться для операционной системы единым диском, хоть на нем и возникли те или иные ошибки. Иногда может он представляться и неформатированным.
Физические или логические проблемы с одним из дисков в массиве уровня 1 или 5 можно рассматривать как штатное событие — массив для того и создавался, чтобы сохранить данные при аварии одного из дисков. RAID -контроллер почти всегда правильно распознает такую ситуацию в процессе инициализации массива, выводит соответствующее сообщение и предлагает заменить неисправный диск. После замены винчестера и запуска компьютера контроллер предлагает включить новый винчестер в массив и воссоздать его содержимое с остальных дисков массива (Rebuild Array).

Если в процессе загрузки вы откажетесь от исправления ошибки, то впоследствии сможете сделать то же самое из среды Windows. Функции воссоздания массива заложены в драйверы RAID и сопровождающие их утилиты, например, Intel Rapid. В результате и физическая, и логическая целостность массива почти обязательно восстанавливаются.

Отдельно стоит отметить, что при воссоздании RAID 1 на дисках IDE может появиться опасная ловушка. Некоторые контроллеры, например Promise FastTracklOO, всегда копируют данные с диска, подключенного как Master на диск, подключенный как Slave. Нетрудно догадаться, что может произойти при выходе из строя и замене диска, подключенного как Master, данные, которые оставались на исправном диске, подключенном в качестве Slave, можно потерять безвозвратно.

Восстановление поврежденного RAID массива.

Если массив поврежден, то есть показан в оснастке Управление дисками как один диск, а сами диски физически исправны, проще всего обратиться к этому массиву как к обычному диску. Поскольку контроллер правильно распределяет блоки по инчестерам при записи и чтении, при восстановлении данных можно не думать о том, что работа ведется с RAID-массивом.
В таком случае будет работать любая из программ для извлечения данных обычных дисков. Эффективность целиком зависит от алгоритма поиска и воссоздания данных, используемых этой программой. В программах R-Stuclio, File cavenger, Easy Recovery и др. следует выбрать физический диск, которым массив представляется операционной системе.

Восстановление разрушенного RAID массива


Разрушение RAID массива.

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

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

Таким образом, потеря информации может произойти лишь при разрушении любого массива либо при повреждении массивов RAID 0 или JBOD. В избыточных набора восстанавливается штатными средствами контроллера или драйвера при замене неисправного диска. В следующих постах мы рассмотрим восстановление данных из разрушенного массива любого уровня или с дисков поврежденного массива RAID О либо JBOD.

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


Работа с разрушенным RAID массивом.

Когда массив разрушен, входившие в него диски показываются в оснастке?Восстановление данных с массивов RAIDаппаратно исправны, стоит обратиться к ним программами R-Studio или File Scavenger и построить из этих физических дисков виртуальный массив. Если почти весь большой объем дисков занят данными, удобнее работать непосредственно с дисками, а не с их образами. Для сохранения двух или четырех образов может понадобиться чистый винчестер максимальной емкости. При возникновении проблем на аппаратном уровне нужно быстро снять образ с неисправного дисковода и отключить его. Впоследствии виртуальный массив легко собрать из функционирующего винчестера и образа, т. к. для программы и то, и другое — всего лишь последовательность секторов.

Восстановление данных на raid массивах


Уровни RAID.

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

При появлении логических или физических ошибок на отдельных дисках массив оказывается поврежденным. Данные из поврежденного, но не разрушенного, массива почти всегда могут быть восстановлены так же, как с одиночного жесткого диска, и теми же программами. Другой способ восстановления это подключение дисков из массива к обычному контроллеру и программная реконструкция RAID с помощью программ, способных эмулировать массив из дисков или их образов (R-Studio, File Scavenger, RAID Reconstructor).
При утрате контроллером текущих настроек набора дисков RAID разрушается. Система перестает воспринимать разрушенный массив как единый диск. Для извлечения информации необходимо подключить диски к обычному контроллеру и реконструировать массив программными средствами.

Дисковые массивы.

Дисковые массивы, кроме RAID 0 и JBOD, создаются ради более надежного хранения данных. Со своей задачей массивы уровней 1, 5 или 10 обычно справляются. При выходе из строя одного из винчестеров пользователь заменяет его исправным. На замененном диске информация воссоздастся за счет ее избыточности в массиве: либо просто копируется с зеркала (RAID I, RAID 10), либо вычисляется заново по контрольным суммам и оставшимся чередующимся блокам (RAID 5).
Делается это с помощыо микропрограммы контроллера, которая выводит свои меню во время загрузки компьютера или средствами драйвера и утилит обслуживания массива уже после загрузки Windows.
Штатное восстановле RAID считается обычной пользовательской операцией, такой же, как дефрагментация или проверка и исправление логических ошибок диска.
Массивы уровня 0 или JBOD не являются избыточными, и для них процедура восстановления не предусмотрена. Любая утрата данных на любом из их дисков евляется критической и приводит к потере данных в массиве. Тем не менее, даже с отказоустойчивыми массивами иногда происходят аварии.

Повреждение и разрушение массива.

Ситуация, когда в содержимом массива, как едином целом, происходят логические - ошибки, ничем не отличается от таковых ошибок на одиночном диске. Массив цел, с ним система продолжает работать корректно. При этом на диске, которым массив представляется системе, "слетает", например, таблица разделов или файловая система.
На самом же уровне RAID-массива возможны еще два события. Они уже являются специфичными для массивов. Различить эти две ситуации помогают сообщения выдаваемые контроллером RAID массива в процессе начальной загрузки компьютера, либо после запуска операцционной системы Windows, а так же оснастка Управление дисками и Управление компьютером.Более подробно о восстановлении разрушенного или поврежденного raid массива можно прочитать в статьях Восстановление разрушенного RAID массива и Восстановление поврежденного RAID массива.

Метод восстановления RAID массива.

Если при очередном включении компьютера диски RAID оказались недоступны, следует провести короткую и осторожную диагностику. Как уже говорилось, полезные сведения можно почерпнуть из сообщений RAID-контроллера в процессе его инициализации, а затем в оснастке Управление дисками консоли ММС.
Когда контроллер однозначно сообщает о неисправности одного из дисков и необходимости его замены, очевидное решение — заменить указанный винчестер и попробовать восстановить целостность массива штатными средствами. Это обычный подход системного администратора. Он вполне обоснован, если дело касается поврежденного массива уровней I, 5 или 10. Однако в случае разрушения RAID подобная тактика вряд ли приведет к успеху.
Специалист по восстановлению данных посмотрит на проблему чуть иначе. Сначала он снимет образы дисков, входивших в массив, а потом эмулирует RAID программными средствами. Подобная тактика является наиболее правильной при разрушении массивов любого уровня, а при любых авариях RAID 0 или JBOD извлечь данные позволит только она.
Заниматься диагностикой и восстановлением данных на пострадавшем компьютере не рекомендуется. Если на поврежденный или разрушенный RAID-массив была установлена операционная система, загрузить компьютер просто не удастся. Возможное решение — подключить новый диск, установить на него ОС и все необходимые программы, а потом подключать обратно диски из массива и заниматься извлечением информации.
ориентируясь по шлейфам и портам контроллера, пронумеруйте диски. Метки понадобятся при дальнейшем программном воссоздании массива. Подключайте винчестеры по одному к другому компьютеру, к обычному (не RAID) контроллеру.

Этапы восстановления RAID массивов.

Давайте рассмотрим стандартный «долгий» путь восстановления данных из RAID-массива. Он разделяется на четыре этапа:
I подключение дисков к обычному контроллеру по одному;
II создание их образов;
III сборка виртуального массива;
IV восстановление полной логической структуры или извлечение отдельных файлов.
Это наиболее универсальная, безопасная, но не всегда самая эффективная тактика. На практике, если массив не несет на себе загрузочный и системный диск, можно прибегнуть к более коротким способам восстановления. Выбор зависит от решения вопроса: разрушен массив или только поврежден? Ответ можно найти в оснастке Управление дисками консоли ММС.

Программа R Studio и восстановление RAID массива

Программа R-Studio универсальный инструмент извлечения информации с проблемных носителей. Она способна строить виртуальные массивы или наборы (Virtual Volume Sets) из физических дисков, разделов на них или файлов-образов. Эмулируются массивы уровней 0, 1, 3, 5. Последние версии программы способны воссоздавать даже малоупотребительные конфигурации - это RAID 4 и RAID 6. Сегодня в пошаговом примере мы посмотрим как с помощью программы R Studio, восстановить RAID массив, но сначала давайте более подробно рассмотрим функционла этого программного продукта.


R Studio

Программа восстановления данных R Studio предназначена, для восстановления удаленных файлов, которые были утеряны по самым разным причинам (все причины потерь информации можно разделить на два типа это: логические и физические, но об этом как нибудь в другом посте). Поддерживает файловые системы FAT12/16/32, NTFS, NTFS5, Ext2FS (Linux), что примечательно для файловой системы NTFS поддерживается восстановление зашифрованных файлов, а для версии NTFS 5.0 предусмотрено восстановление и альтернативных данных, поддерживаемых этой версией файловой системы.
ШАГ 1
Откройте предварительно созданные образы дисков, входивших в массив, командой меню Drive | Open Image File (Диск | Открыть файл образа). В результате в дерево дисков с пометками Image (Образ) добавятся смонтированные образы.
(Если работа ведется непосредственно с винчестерами, шаг 1 пропускается.)


ШАГ 2
Создайте виртуальный массив того же типа, что и восстанавливаемый. Выберите один из пунктов меню Create (Создать):

• Create Virtual Volume Set (Создать виртуальный набор динамических дисков или томов) — аналог программного массива;
• Create Virtual Mirror (Создать виртуальный зеркальный массив) — RAID 1;
• Create Virtual Stripe Set (Создать виртуальный массив с чередованием) — RAID 0;
• Create Virtual RAID 5 (Создать виртуальный массив RAID 5).

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

• Properties (Свойства) — здесь приведены общие свойства всего массива;
• Parents (буквально, Родители)— на этой вкладке показываются диски, входящие в массив, и задаются параметры их объединения в набор. Вкладки Parents открыта по умолчанию, и работа в основном ведется на ней.

ШАГ 3
Перетащите мышыо диски или открытые образы из дерева на вкладку Parents (Родители) панели виртуального набора.


ШАГ 4
Диаграмма в нижней части вкладки программы R Studio отображает порядок чередования блоков в виртуальном массиве. Справа от диаграммы задаются размер блока (раскрывающийся список Block size), порядок чередования (раскрывающийся список Blocks order) и число рядов при чередовании (счетчик Rows count). Как правило, значения по умолчанию (Default) подходят к параметрам большинства массивов — производители распространенных контроллеров придерживаются примерно одних и тех же правил. Чтобы изменить порядок чередования, расположите диски в нужной очередности, перетаскивая их мышью прямо в списке дисков на вкладке Parents. То же самое можно сделать и на диаграмме чередования.

ШАГ 5
В дереве дисков щелкните правой кнопкой мыши на значке виртуального набора и в контекстном меню выбери те команду Scan (Сканировать). Откроется диалоговое окно Scan (Сканировать), показанное на рис ниже.


ШАГ 6
Дальнейшее сканирование и сохранение найденных файлов ничем не отличается от восстановления данных с одиночного носителя.

Главный источник проблем — неправильно заданный порядок чередования дисков, реже — неверный размер блока. В обоих случаях некоторые файлы могут быть найдены и извлечены, т. к. обнаружены их сигнатуры, а дальше программа собирает файл в соответствии с заданным порядком блоков (stripes).

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

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

Для быстроты процесс сканирования можно прерывать почти в самом начале — и подборе достаточно восстановить лишь несколько файлов и убедиться, что найдено правильное сочетание параметров. Обычно на поиск уходит от 2 до 10 попыток — создавая массив, большинство пользователей соглашаются с размером блока, который контроллер предлагает по умолчанию (64 или 128 Кбайт), а дисков редко бывает больше трех.

Программа R-Studio в очередной раз подтверждает свою репутацию. Ее средства позволяют выполнить полный цикл работ: от снятия образа до восстановления логической структуры или извлечения файлов.

Восстановление RAID массива программой File Scavenger


восстановление RAID массива программой File Scavenger

Программа File Scavenger предназначена осуществляет восстановление данных из RAID, хотя работает и с любыми отдельными накопителями: винчестерами, флеш-дисками, лазерными дисками. При всей внешней простоте интерфейса это приложение обладает очень гибкими возможностями и настройками. Программа относится к категории Portable Software — единственный исполняемый файл (FileScav.exe) размером всего 1,38 Мбайт, который можно записать на любой носитель информации и запускать прямо с него. Второй файл — файл справки. Непосредственно для работы этот файл не нужен, но прочитать справку программы следует обязательно!
Она содержит много полезных сведений не только о работе с программой, но и о восстановлении данных RAID вообще.
По умолчанию предполагается, что операционная система и программа запускаются с одного физического диска, а в RAID массив включены остальные два или три физических диска. Тогда при запуске программа попытается определить вероятную конфигурацию массива и будет ориентироваться на нее.
Но File Scavenger успешно работает и с образами дисков, созданными с помощью других утилит, и с физическими дисками, подключенными к обычным контроллерам.
Запустите программу. В окне File Scavenger присутствуют две вкладки:
Step 1: Search (Шаг I: Искать) — здесь задаются параметры поиска файлов и отображаются найденные файлы;

Step 2: Recover (Шаг 2: Восстановить) — после того, как на диске в процессе сканирования обнаруживаются файлы, на этой вкладке можно указать параметры восстановления найденных объектов (пока файлы не найдены, эта вкладка неактивна).

Файл образа диска можно создавать разными программами, и расширение его роли не играет. Как правило, по внутреннему формату — это обычный бинарный файл. Некоторые программы применяют к нему алгоритм сжатия ZIP, поскольку нет смысла записывать в образе все последовательности пустых блоков — нулей.
Программа File Scavenger сама создает образы в виде файлов с расширением dsk, но способна открывать такие файлы независимо от расширения.

1. В раскрывающемся списке Look in (Искать в) выберите один из физических дисков или разделов.

2. Вызовите команду меню File | Disk Image | Create (Файл | Образ диска | Создать). Откроется окно Creating a disk image file (Создание файла образа диска). В нем содержится предупреждение о том, что нельзя сохранять образ диска на том же самом диске. Установите флажок, подтверждающий, что это понятно, и укажите имя файла и папку, в которой будет создаваться образ.

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

3. Указав имя и тип файла, нажмите кнопку Create (Создать). Образ будет сохранен в заданную папку.

В нашем примере образы с дисков RAID 0 уже сняты и хранятся в папке на первом и единственном системном диске. Остается открыть их программой File Scavenger, смонтировать виртуальный массив и извлечь из него данные.

1. Вызовите команду меню File | Disk Image | Load (Файл | Образ диска | Загрузить). Откроется стандартное диалоговое окно открытия файлов. Выберите в нем образы (с нажатой клавишей мышью можно выделить сразу несколько файлов) и нажмите кнопку Открыть. Загруженные образы добавляются в раскрывающийся список Look in (Искать в).

2. Нажмите в окне программы кнопку Advanced (Расширенные настройки) или выберите команду меню File | Advanced (Файл | Расширенные). Откроется окно Reconstruct a broken RAID or spanned volume (Реконструировать разрушенный массив RAID или составной том). Переключатели и флажки в этом окне задают тип массива, который должен быть воссоздан.

3. Выберите соответствующий тип (уровень) RAID:
• Spanned volume — составной том, объединяющий объем нескольких дисков или массив JBOD;
• Striped volume — массив с чередованием, т. е. RAID 0 или RAID 5.

4. С помощью переключателя RAID Implementation (Исполнение RAID) следует указать оригинальную реализацию массива:
• Hardware-based (using a RAID controller) — диски принадлежали к аппаратному массиву;
• Software-based — диски изначально входили в программный массив.

5. В группе RAID 5 Parity Rotation (Чередование блоков четности RAID 5) дополнительно задается порядок чередования томов (дисков) для массива уровня 5. Если вы не знаете, каков был порядок на самом деле, согласитесь с тем, который предложила программа — как правило. File Scavenger верно определяет последовательность томов.

6. Указав исходные параметры массива, нажмите кнопку ОК. Откроется следующее диалоговое окно, которое служит для сборки виртуального массива из физических дисков или их образов.

7. В раскрывающемся списке Physical disk (Физический диск) выберите первый диск, который нужно включить в массив. Нажмите кнопку Add (Добавить), и этот диск появится в поле Disk extents or component disks (Дисковые массивы или составные диски). Таким же способом добавьте остальные диски.

• Кнопки Move Up (Переместить вверх) и Move Down (Переместить вниз) позволяют изменять порядок следования дисков внутри массива. Задавая очередность дисков вы, соответственно, указываете программе порядок их чередования.
• В группе Size (Размер) задается объем диска, который программа будет сканировать. Он может быть меньше или равен, но не больше истинного размера массива. Собрав таким образом виртуальный массив, нажмите кнопку ОК.

8. Появится третье, заключительное диалоговое окно Stripping Block Size (Размер блока чередования) — задайте здесь величину блока (по умолчанию 64 Кбайт > Дополнительно можно задать число блоков, для которого одновременно вычисляется четность. Подавляющеее большинство контроллеров по умолчанию за одно действие обсчитывают один блок. Некоторые контроллеры, например HP/Compaq, последовательно обрабатывали группы по 16 блоков, но в современных контроллерах такие алгоритмы не применяются.

Задав параметры или оставив их значения по умолчанию, нажмите кнопку ОК Новый виртуальный массив добавится в раскрывающийся список дисков Look in (Искать в).

9. Выберите созданный массив в раскрывающемся списке Look in (Искать в> Установите переключатель Mode (Режим) в одно из положений:
• Quick (Быстрый) — быстрый поиск по записям файловой системы;
• Long (Долгий) — долгий поиск по сигнатурам файлов по всему диску.

10. Нажмите кнопку Search (Искать). Откроется диалоговое окно Determining the Boot Sector (Указание загрузочного сектора), в котором можно указать номер загрузочного сектора. С этого сектора начнется поиск, и если неизвестен реальный номер, оставьте значение по умолчанию (0). Нажмите кнопку ОК.

11. Еще в одном диалоговом окне программа предложит игнорировать корректно удаленные файлы (Yes, Skip deleted files) или показывать их (No, Display deleted files). Нажмите кнопку OK и ждите, пока программа просканирует виртуальный RAID-массив в поисках существующих и потерянных файлов.

12. По окончании поиска в окне программы на вкладке появится список найденных объектов. Чтобы просмотреть этот список в виде дерева файлов и папок, нажмите на панели инструментов кнопку Tree View (Просмотр в виде дерева).

13. Напротив каждого файла в колонке Status (Состояние) показывается прогноз на восстановление: Good (Хороший) или Poor (Плохой).

14. Перейдите на вкладку Step 2: Recover (Шаг 2: Восстановить). Укажите в поле Destination folder (Папка
назначения) каталог, в который следует сохранить восстановленные файлы. Чтобы по возможности сохранить всю логическую структуру файлов и папок, установите флажок Use Folder Names (Использовать имена папок).

15. Установите в рабочей области окна флажки напротив тех файлов, которые следует извлечь. Нажмите большую кнопку Recover (Восстановить). Выбранные файлы будут извлечены из виртуального массива в папку, указанную в поле Destination folder (Папка назначения).

Поскольку сканирование больших массивов занимает длительное время, в программе предусмотрено сохранение промежуточных результатов. Команда меню File | Session | Save (Файл | Сессия | Сохранить) позволяет сохранить текущее состояние сканирования в файл, а команда File | Session | Load (Файл | Сессия Загрузить) загружает сохраненную сессию, чтобы продолжить обработку с предыдущего состояния.

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

Уровни RAID массивов

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


Чередующийся массив — уровень О (RAID 0).

Сразу оговоримся: чередование — способ предельно ненадежного хранения данных. Единственной его положительной чертой можно назвать скорость последовательного чтения/записи.

В массиве уровня 0 (RAID 0) информация дробится на блоки ("полоски", stripes). Если диска два, нечетные блоки записываются на один диск, а четные — на другой. Происходит это параллельно и одновременно. Такую организацию называют чередованием (interlacing).

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

Очевидно, что выход из строя любого диска приводит к неработоспособности массива в целом. Надежность массива уровня 0 примерно вдвое ниже, чем надежность любого из дисков.


Зеркальный массив (RAID 1).


Напротив, зеркальный массив RAID 1 — весьма надежная схема. Данные дублируются (зеркалируются) на обоих дисках одновременно. Надежность системы cразу повышается на порядок или два по сравнению с одиночным диском. Если на любом из двух дисков произошел сбой, в нашем распоряжении все равно остается его точная и полная копия.

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


Трех- и многодисковые массивы.


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

В массиве уровня 3 два диска являются чередующимися (как в RAID 0). Третий диск несет контрольные суммы (блоки четности) для блоков первых двух дисков. На рис. эти блоки четности помечены буквой Р.



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

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

Массив уровня 5 (RAID 5).

Массив уровня 5 является симметричным и в нем могут работать более трех дисков. Блоки четности равномерно распределяются между всеми дисками.

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


Четырехдисковые массивы уровней RAID 0+1 (Raid 10) можно охарактеризовать как "зеркалирование двух чередующихся дисков на два других". Отдельные схемы приводить не станем — вместо этого мысленно скомбинируйте рисунок с raid 0 и raid 1. Накладные расходы в RAID 0+1 достаточно высоки (избыточность данных ровно двойная), но такие массивы способны продолжать почти полноценную работу при выходе из строя любого из дисков.

Были разработаны и другие уровни RAID, а именно: RAID 2, RAID 4 и RAID 6. Они преследуют довольно специфические цели и предназначены в основном для серверов. Например, массив RAID 6 содержит минимум 4 диска и сохраняет работоспособность даже при одновременном выходе из строя любых двух винчестеров. В "настольных" системах и в серверах начального уровня подобные конфигурации не встречаются, а для их формирования нужны дорогостоящие контроллеры.

RAID JBOD.

Еще одна конфигурация RAID несколько выпадает из общего ряда. JBOD расшифровывается как Just a Bunch of Disks — просто пучок дисков. В массиве такого рода происходит объединение (spanning) нескольких физических дисков в один на уровне RAID-контроллера. Массив JBOD не является ни быстрым, ни отказоустойчивым. Смысл его в возможности создания разделов практически неограниченного объема. С появлением винчестеров большой емкости к использованию массивов JBOD прибегают все реже — применение разделу в 2 Тбайт еще нужно придумать!

В принципе, для каждого из уровней RAID возможна и аппаратная, и программная реализации. Полноценная поддержка программных массивов предусмотрена в серверных версиях ОС, а в настольных официально можно построить только программный массив уровня 0.

Чтобы настольные версии Windows XP/Vista/7 смогли работать с массивами уровня 1, в них надо подменить некоторые библиотеки таковыми от соответствующих серверных ОС. Подробные инструкции по этой не вполне "лицензионной" процедуре легко найти в Интернете.

Программные RAID массивы.

Программные RAID были интересны когда цены на RAID-контроллеры "кусались". С массовым распостронением интегрированных RAID-контроллеров программные массивы почти утратили актуальность.Маломощный но специализированный процессоор контроллера легко справляется с распределением блоков данных по дискам и их обратной сборкой, тогда как на обслужвание программного массива приходиться отвлекать солидную часть ресурсов центрального процессора ПК. Аппаратные решения обычно предоставляют больше возможностей для коонфигурирования многодисковых массивов.

Технология Intel Rapid.

Особо следует упомянуть технологию Intel Rapid (ранее называвшуюся Intel Matrix Storage). Она является аппаратно-программной. Часть задач возложена на интегрированный в чипсет контроллер, а другая часть — на его драйвер. Благодаря этому удается, например, задействовать по одному разделу на разных физических дисках в RAID, а остальные разделы продолжают работать как самостоятельные диски.

Технология Intel Rapid задумана как "бюджетный" выход для тех, кто не желает тратиться более чем на два винчестера, но при этом хочет и небольшой массив создать, и оставить часть дискового пространства вне RAID.
Недостаток — повышенная, по сравнению с чисто программной или чисто аппаратной реализацией сложность. Из-за этого могут возникнуть трудности при восстановлении данных в случае отказа одного из дисков либо краха системы.

Восстановление блоков данных


Эта часть может быть очень легкой и довольно сложной, в зависимости от того, занимал ли удаленный файл больше 12 блоков или нет.

Короткие файлы

Если файл занимал не больше 12 блоков, то все их номера хранятся непосредственно в inode. Вы можете просмотреть их командой stat. Более того, debugfs имеет команду, позволяющую восстановить файл автоматически. Например:
debugfs:  stat <148003>
Inode: 148003   Type: regular    Mode:  0644   
Flags: 0x0   Version: 1
User:   503   Group:   100   Size: 6065
File ACL: 0    Directory ACL: 0
Links: 0   Blockcount: 12
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6

Файл занимает 6 блоков. Так как 6 меньше 12, даем команду debugfs записать файл в новое место, например /mnt/recovered.000:
debugfs:  dump <148003> /mnt/recovered.000

Также можно это сделать с помощью fsgrab. Пример:
# fsgrab -c 2 -s 594810 /dev/hda5 > /mnt/recovered.000
# fsgrab -c 4 -s 594814 /dev/hda5 >> /mnt/recovered.000

В обоих случаях (как debugfs, так и fsgrab) в конце /mnt/recovered.000 будет мусор. Впрочем, это не так уж важно. Самый простой способ убрать его - использовать значение поля Size из inode с ключом bs команды dd:
# dd count=1 if=/mnt/recovered.000 of=/mnt/resized.000 bs=6065

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

Длинные файлы

Сложнее обстоит дело с файлами длиной более 12 блоков. Необходимо пояснить, как устроена файловая система UNIX. Данные файла хранятся в так называемых "блоках". Эти блоки пронумерованы. Для каждого файла также имеется "inode" (от английского information node), где хранится информация о владельце, правах, типе файла и т. п. Также как и блоки, inode пронумерованы (хотя нумерация ведется независимо от блоков). Каталоги файловой системы содержат имя файла и номер inode.
Кроме того, для того, чтобы ядро знало, где искать данные, соответствующие элементу каталога (файлу), в inode следующим образом размещается информация о блоках с данными файла:

  • Номера первых 12 блоков хранятся непосредственно в inode; их еще иногда называют блоками с прямой адресацией (direct blocks).
  • В inode хранится номер блока, в котором хранятся номера еще 256 блоков данных. Иногда его называют блок косвенной адресации (indirect block).
  • В inode хранится номер блока, в котором хранятся 256 номеров блоков косвенной адресации. Иногда этот блок называют блоком двойной косвенной адресации (doubly indirect block).
  • В inode хранится номер блока, в котором хранятся 256 номеров блоков двойной косвенной адресации. Его называют блоком тройной косвенной адресации (triply indirect block).

Прочтите еще раз: я знаю, что это непросто, но также и очень важно.
Версии ядра до 2.0.36 включительно при удалении файла обнуляют блоки косвенной адресации (а также блоки двойной косвенной адресации и т. д.). Так что если ваш файл был длинной более 12 блоков, нет никакой гарантии, что вы сможете выявить даже номера блоков с данными, не говоря уже о самих данных.
Единственный способ, который я нашел - это предположить, что файл не был фрагментирован; если был, то у вас проблемы. Если же предполагать, что файл не был фрагментирован, то, в зависимости от количества блоков с данными файла, возможно следующее расположение блоков, описывающих местоположение файла:


0 - 12
Номера блоков хранятся в inode, как описано выше.
13 - 268
После блоков с прямой адресацией идет блок косвенной адресации и далее 256 блоков с данными.
269 - 65804
Как и в прошлом случае, в начале 12 блоков с прямой адресацией, блок косвенной адресации и 256 блоков данных. Далее блок двойной косвенной адресации, за ним 256 групп блоков, состоящих из одного блока косвенной адресации и 256 блоков данных.
65805 и более
Расположение первых 65804 блоков указано выше. Далее один блок тройной косвенной адресации и 256 повторений групп "двойной косвенной адресации". Каждая такая группа состоит из блока двойной косвенной адресации, за которым идет 256 групп из одного блока косвенной адресации и 256 блоков данных.

Даже если номера блоков данных правильны, нет никакой гарантии, что данные в них не перезаписывались. К тому же, чем больше файл, тем меньше шансов, что он был записан без фрагментации (кроме некоторых особых случаев).
Заметьте, что я предполагал, что размер вашего блока 1024 байта, так как это стандартное значение. Если ваши блоки больше, некоторые числа, указанные выше, изменятся. В частности: так как номер блока занимает 4 байта, то количество номеров блоков, которые могут быть размещены в блоке косвенной адресации равно размер_блока/4. Так что везде, где выше встречается число 256, меняйте его на размер_блока/4. Количество требуемых для размещения файла блоков также нужно изменить.
Пример восстановления длинного файла:
debugfs:  stat <1387>
Inode: 148004   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
User:   503   Group:   100   Size: 1851347
File ACL: 0    Directory ACL: 0
Links: 0   Blockcount: 3616
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8583
TOTAL: 14

В данном случае шансы того, что файл не фрагментирован, довольно велики: первые 12 блоков, перечисленные в inode, (блоки с данными) идут подряд. Начнем с того, что восстановим их:
# fsgrab -c 12 -s 8314 /dev/hda5 > /mnt/recovered.001

Следующий блок указанный в inode (8326) - блок косвенной адресации, который мы можем игнорировать, так как предполагаем, что за ним идут блоки данных (с 8327 по 8582).
# fsgrab -c 256 -s 8327 /dev/hda5 >> /mnt/recovered.001

Последний блок, указанный в inode имеет номер 8583. Заметьте, если предположить, что файл не фрагментирован, то пока все нормально: последний блок данных, записанный нами имеет номер 8582, то есть 8327 + 255. Блок 8583 - блок двойной косвенной адресации, его можно игнорировать. За ним идут до 256 групп состоящих из блока косвенной адресации (который мы также игнорируем), и 256 блоков данных. Быстренько выполнив несложные арифметические подсчеты, выполняем следующие команды (заметьте, что мы пропускаем блок двойной косвенной адресации 8583 и следующий за ним (как мы надеемся) блок косвенной адресации 8584 и начинаем с блока 8525):
# fsgrab -c 256 -s 8585 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 8842 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9099 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9356 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9613 /dev/hda5 >> /mnt/recovered.001
# fsgrab -c 256 -s 9870 /dev/hda5 >> /mnt/recovered.001

Итого мы записали 12 + (7 * 256) блоков, то есть 1804. В соответствие с результатом команды "stat" число блоков в файле было равно 3616; считается, что это блоки длиной 512 байт (пережиток с UNIX), поэтому, в действительности, нам надо 3616/2 = 1808 блоков длиной 1024 байт. То есть, нам нужно записать еще четыре блока. Последний записанный блок имел номер 10125. Также, как и раньше, пропускаем блок косвенной адресации (номер 10126) и записываем последние четыре блока:
# fsgrab -c 4 -s 10127 /dev/hda5 >> /mnt/recovered.001

В результате, если нам повезло, то файл полностью восстановлен.

Источник : citforum.ru