Накопители на дисковых массивах RAID

 

В результате изысканий, проведенных различными фирмами, появилось самостоятельное направление разработки накопителей на жестких магнит­ных дисках — создание накопителей на дисковых массивах. Название RAID (Redundant Array of Independent Disks) переводится как “резервирующие массивы независимых дисков”. Идея RAID проста: несколько дисков, объединенных вместе, могут не только уве­личить объем накопителя, но и повысить надежность хранения информа­ции при возросшей скорости передачи данных. Такие системы целесооб­разно использовать для хранения огромных массивов данных, электронных библиотек и т. п. при совместной работе с мощным сервером (или несколь­кими серверами).

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

RAID-массив строится на основе распределения данных между дисками. Про­странство каждого диска разбивается на сегменты. Дисковое простран­ство RAID-массива представляет собой объединение сегментов всех дисков массива.

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

В системе RAID уровня 0 (часто называемого уровнем чередования данных) информация каждого файла располагается на нескольких дисках. Однако при такой организации высока вероятность отказа. Иногда этот уровень называют дисковым массивом без дополнительной отказоустойчивости.

Дисковые массивы уровня 1 (зеркального дублирования дисков) имеют полный дубликат каждого диска, обеспечивая тем самым надежность хранения информации и быстродействие накопителя, но сто­имость таких массивов высока. Достоинства использования массивов RAID 1 состоят в следующем:

 скорость записи на зеркальные диски идентична скорости записи на один диск;

 скорость чтения данных в два раза выше, чем одного диска;

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

К недостаткам можно отнести низкий коэффициент использования дисково­го пространства (Кисп= 0.5).

Дисковые массивы уровня RAID 2 основаны на использовании алгоритма Хемминга для проверки/восстановления данных. Поток данных разбивается на отдельные слова, каждое слово, в свою очередь, разбивается на биты. Биты последовательно записываются на диски. Для каждого слова данных по алго­ритму Хемминга вычисляется значение корректирующего кода. Код Хемминга (назван именем Р. В. Хемминга) является корректирующим кодом, исправляющим одну ошибку в каждом кодовом слове. Вычисленные по алгоритму Хемминга контрольные суммы записываются на отдельный диск и используются для проверки данных при считывании. Дос­тоинствами технологии RAID 2 являются:

 оперативное исправление ошибок;

 высокая скорость передачи данных, увеличивающаяся с ростом числа дисков в массиве;

 возрастание коэффициента использования дискового пространства по мере увеличения числа дисков;

 относительно простое конструктивное исполнение.

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

 

Основы алгоритмизации и

Программирования

Алгоритм и его свойства

Понятие алгоритма

Рассмотрим простую жизненную си­туацию: что следует сделать, если нужно привлечь к ре­шению задачи человека, не знакомого с ее решением:

а) выбирают способ (метод, порядок) решения зада­чи и изучают его во всех подробностях;

б) сообщают исполнителю выбранный метод в абсо­лютно понятном для него виде;

в) исполнитель решает задачу строго в соответствии с методом.

Углубляясь в суть этого процесса, рассмотрим при­стальнее каждый из этапов.

Первый этап этого процесса обычно не вызывает за­труднений, так как для большинства встречающихся задач метод решения либо известен из практики, либо подсказывается здравым смыслом, либо описан в лите­ратуре. Часто главная трудность — из нескольких ме­тодов выбрать такой, который в наибольшей степени от­вечал бы некоторым требованиям, например, минималь­ная трудоемкость, максимальная эффективность и т. д.

Второй этап значительно сложнее. Дело в том, что, если способ (метод) решения задачи описан произволь­но, нет гарантии, что он будет верно понят исполните­лем. Поэтому описание метода следует выполнять в со­ответствии с определенными правилами, а именно:

 выделить величины, являющиесяисходными для задачи;

 разбить процесс решения задачи на такие этапы, которые известны исполнителю и которые он мо­жет выполнить однозначно без всяких пояснений;

 указать порядок выполнения этапов;

 указать признак окончания процесса решения за­дачи;

 указать во всех случаях, что является результатом решения задачи.

Описание метода, выполненное в соответствии с эти­ми правилами, называется алгоритмом решения задачи. Составить такое описание обычно нелегко, но, следуя ему, механически выполняя все указанные в нем этапы в тре­буемом порядке, исполнитель может всегда правильно решить задачу.

Итак, мы подошли к центральному понятию информа­тики — алгоритму. Бо­лее строго это понятие можно определить так: алго­ритм — это метод (способ) решения задачи, записанный по определенным правилам, обеспечивающим одно­значность его понимания и механического исполнения при всех значениях исходных данных (из некоторого множества значений). Алгоритм – система понятных и точных указаний, предписывающих исполнителю выполнить определенную последовательность действий, в соответствии с которыми за конечное число шагов достигается решение поставленной задачи.

В Толковом словаре по информатике дано общепринятое определение этого понятия: алго­ритм — точное предписание, определяющее вычисли­тельный процесс, ведущий от варьируемых начальных данных к искомому результату.

Примером алгоритма может служить кулинарный рецепт приготовления блюда.

Рассмотрим простейший алгоритм — алгоритм завар­ки чая:

1. Подготовить исходные величины — чай, воду, чай­ник, стакан, ложку.

2. Налить в чайник воду.

3. Довести воду до кипения и снять с огня.

4. Всыпать в чайник чай.

5. Довести воду до кипения (но не кипятить), снять с огня.

6. Чай готов. Процесс прекратить.

 

Свойства алгоритмов

 

Для углубления понятия алгоритма выделим и рас­кроем его основные свойства, вытекающие из его опре­деления:

1. Дискретность алгоритма. Свойство алгоритма, озна­чающее, что процесс решения задачи, определяемый алгоритмом, разделен на отдельные элементарные действия (шаги) и, соответственно, алгоритм представ­ляет последовательность указаний, команд, определя­ющих порядок выполнения шагов процесса.Дискретность алгоритмапошаговое выполнение алгоритма.

2. Определенность алгоритма. Это свойство означает, что каждая команда алгоритма (предписание, выдава­емое на каждом шаге) должна быть понятна исполни­телю, не оставлять места для ее неоднозначного тол­кования и неопределенного исполнения. Описание ал­горитма должно быть таким, чтобы его мог выпол­нить любой грамотный пользователь.

3. Результативность алгоритма. Свойство алгоритма, состоящее в том, что он всегда приводит к результату через конечное, возможно, очень большое число ша­гов. Результативность алгоритма – свойство алгоритма заключающееся в том, что решение задачи должно происходить за конечное число шагов и за конечное время. В алгоритме всегда должно быть указано условие его выполнения.

4. Массовость алгоритма. Это свойство заключается в том, что каждый алгоритм, разработанный для реше­ния некоторой задачи, должен быть применим для ре­шения задач этого типа при всех допустимых значе­ниях исходных данных.

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

Возможность использования ЭВМ вместо человека объясняется соответствием свойств алгоритма и ЭВМ: алгоритм допускает механическое выполнение его для решения задачи, а ЭВМ может механически, не вникая, выполнять операции в заданном порядке. Отличие ука­занного процесса решения задачи при использовании ЭВМ в том, что, составляя алгоритм, мы разбиваем процесс решения задачи на такие операции, которые в состоя­нии выполнить ЭВМ.Система команд исполнителя – совокупность команд, которые могут быть выполнены исполнителем.

Другое отличие в том, что составленный алгоритм решения задачи следует перевести на язык, понятный ЭВМ, аналогично тому, как алгоритм, записанный на русском языке, нужно перевести на французский, если исполнителем является француз.

Существует значительное число подобных языков — БЕЙСИК, ФОРТРАН, ПЛ/1, ПАСКАЛЬ и др. Они назы­ваются языками программирования. Язык программирования – язык записи алгоритмов для исполнения их на ЭВМ. Запись алгоритма на таком языке называется программой, а процесс перевода алгоритма на указанный язык — программирова­нием. Программа – это алгоритм, представленный в специальной, понятной ЭВМ форме.Программирование – составление программы по заданному алгоритму (кодирование).

Представление алгоритма

 

В настоящее время используется несколько та­ких способов.

1. Словесно-формульное описание алгоритма, т. е. описание алгоритма с помощью слов и формул. Это на­иболее простой способ. Для его понимания достаточно рассмотреть пример, приведенный ниже. Кстати, кули­нарный рецепт — пример такого описания алгоритма.

 

Задача 4.1.

Составить алгоритм начисления зарплаты согласно следующему правилу: если стаж работы сотрудника менее 5 лет, то зарпла­та 130 тыс. руб., при стаже работы от 5 до 15 лет — 180 тыс. руб., при стаже свыше 15 лет зарплата по­вышается с каждым годом на 10 тыс. руб.

Сформулируем задачу в математическом виде: вычис­лить

где: ZP — зарплата; ST — стаж работы.

Словесно-формульное описание алгоритма решения задачи 4.1:

1. Ввести ST, перейти к п. 2.

2. Если ST<5, то 2Р:=130, перейти к п. 4, иначе — перейти к п. 3.

3. Если STd15, то ZP:=180, перейти к п. 4, иначе ZP:=180+(ST-15)10, перейти к п. 4.

4. Вывести (отпечатать) значение ZP, перейти к п. 5.

5. Вычисления прекратить.

Алгоритм, очевидно, не нуждается в пояснении, по­скольку форма записи его очень естественна.

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

Операция присваивания изображается прямоугольни­ком, например:

 

Операции Ввод и Вывод изображаются параллело­граммом, например:

 

Каждый из трех указанных блоков имеет один вход и один выход.

Операция Условный переход изображается ромбом; блок имеет два выхода — Да и Нет, например:

 

Если условие выполняется — выходим из блока по выходу Да, если не выполняется — по выходу Нет.

Начало процесса решения задачи обозначается бло­ком Начало.

Завершение процесса решения задачи обозначается блоком Останов.

Последние два блока изображаются так:

 

Пример: схема алгоритма ре­шения задачи 4.1 (см. рис. 4.1):

 

 

Рис. 4.1. Схема алгоритма ре­шения задачи 4.1.

 

3. Описание алгоритма на ал­горитмическом языке (алгоязыке).