Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 48145

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

416  

 Глава 5. Ввод и вывод информации 

Параметр

Гибкий диск IBM 

емкостью 360 Кбайт

Жесткий диск 

WD 3000 HLFS

Байтов на сектор

512

512

Емкость диска

360 Кбайт

300 Гбайт

Время позиционирования (на соседний ци-
линдр)

6 мс

0,7 мс

Время позиционирования (среднее)

77 мс

4,2 мс

Время одного оборота

200 мс

6 мс

Время передачи одного сектора

22 мс

1,4 мкс

При изучении спецификации современных жестких дисков нужно иметь в виду, что 
геометрия, определенная и используемая программой драйвера, почти всегда отличает-
ся от физического формата. На старых дисках количество секторов на одной дорожке 
было одинаковым для всех цилиндров. Современные диски разбиты на зоны, и на 
внешних зонах секторов больше, чем на внутренних. На рис. 5.15, а показан небольшой 
диск с двумя зонами. На внешней зоне по 32 сектора на дорожку, а на внутренней — 
по 16. Реальный диск, например WD 3000 HLFS, обычно имеет 16 и более зон с коли-
чеством секторов, увеличивающимся примерно на 4 % от внутренних зон к наружным.

Рис. 5.15. Диск с двумя зонами: а — физическая геометрия;

б — возможная виртуальная геометрия

Чтобы скрыть конкретное количество секторов на каждой дорожке, большинство со-
временных дисков имеют виртуальную геометрию, которая и предоставляется опера-
ционной системе. Программному обеспечению предписывается работать с дисками, как 
будто у них имеется x цилиндров, y головок и z секторов на одну дорожку. Контроллер 

Таблица 5.3 (продолжение)


background image

5.4. Диски   

417

перераспределяет запрос для (xyz) на реальные цилиндры, головки и секторы. Воз-
можная виртуальная геометрия для рассматриваемого физического диска показана 
на рис. 5.15, б. На обоих фрагментах у диска имеется 192 сектора, но их объявленное 
расположение отличается от реального.

Для компьютеров класса PC максимальные значения этих трех параметров (65 535, 16 
и 63), как правило, связаны с необходимостью соблюдения обратной совместимости 
с ограничениями, наложенными на оригинальную систему IBM PC. На этой машине 
для определения этих номеров использовались 16-, 4- и 6-разрядные поля, причем 
нумерация цилиндров и секторов начиналась с 1, головок — с 0. При таких параметрах 
и 512 байтах на сектор максимально возможная емкость диска составляла 31,5 Гбайт. 
Чтобы обойти это ограничение, все современные диски поддерживают логическую 
адресацию блоков

 (logical block addressing, LBA), при которой секторы диска нумеру-

ются последовательно, начиная с нулевого, безотносительно геометрии диска.

RAID

За последнее десятилетие производительность центральных процессоров росла в гео-
метрической прогрессии, удваиваясь примерно каждые 18 месяцев, чего нельзя сказать 
о производительности дисковых устройств. В 70-е годы прошлого столетия среднее 
время позиционирования головок на нужную дорожку на дисках, используемых 
в мини-компьютерах, было от 50 до 100 мс. В настоящее время этот показатель со-
ставляет всего несколько миллисекунд. В большинстве технических отраслей (ска-
жем, автомобильной или авиационной) увеличение производительности в 5–10 раз 
за два десятилетия стало бы сенсацией (представьте автомобили, расходующие 0,8 л 
бензина на 100 км), но в компьютерной индустрии такие темпы вряд ли кого-нибудь 
впечатлили бы. Таким образом, разрыв между производительностью центральных 
процессоров и дисков со временем становился все более заметным. Можно ли как-то 
посодействовать этому?

Конечно! Мы уже видели, что для увеличения производительности центральных 
процессоров все шире используются параллельные вычисления. С годами многим 
стало казаться неплохой идеей и распараллеливание ввода-вывода. В своей статье 
1988 года Паттерсон (Patterson) с соавторами предложили шесть конкретных способов 
организации дисковых устройств, которые могли использоваться для повышения их 
производительности, надежности, а также обоих этих качеств. Эти идеи были тут же 
подхвачены производителями и привели к появлению нового класса устройств ввода-
вывода, получившего название RAID. Паттерсон и его коллеги под названием RAID 
подразумевали Redundant Array of Inexpensive Disks — избыточный массив недорогих 
дисков, но производители переопределили значение буквы I как Independent — неза-
висимых, а не как Inexpensive — недорогих (может быть, благодаря этому они могли 
получить большую прибыль?). Поскольку этому классу нужно было противопоста-
вить какой-нибудь отрицательный пример (как и в случае противопоставления RISC 
и CISC, возникшего также благодаря Паттерсону), в этом качестве фигурировал SLED 
(Single Large Expensive Disk — одиночный дорогостоящий диск большой емкости).

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


background image

418  

 Глава 5. Ввод и вывод информации 

бˆольшими производительностью и надежностью. Ранее RAID-массивы ради высокой 
производительности состояли практически исключительно из RAID SCSI-контроллера 
и стойки из SCSI-дисков, и SCSI-устройства поддерживали до 15 дисков на одном 
контроллере. Теперь же многие производители предлагают также более дешевые 
RAID-массивы на основе SATA. Системных администраторов при приобретении таких 
массивов привлекает отсутствие необходимости вносить какие-либо изменения в про-
граммное обеспечение.

Кроме того, что новый класс представлялся программному обеспечению в виде од-
ного диска большой емкости, все RAID-системы обладали свойством распределения 
данных по дисковым устройствам, позволявшим проводить параллельные операции. 
В настоящее время большинство производителей называют семь стандартных конфи-
гураций RAID-системами с уровнями от 0 до 6. Кроме них есть еще несколько других 
незначительных уровней, которые здесь не будут рассматриваться. Употребление слова 
«уровень» в данном случае несколько неправомерно, поскольку речь идет не о какой-то 
иерархии, а просто о семи различных вариантах организации RAID-систем.

RAID-система уровня 0 показана на рис. 5.16, а. Она выглядит как один виртуаль-
ный диск, смоделированный RAID-системой в виде диска, разделенного на блоки по 
k секторов в каждом с номерами от 0 до k – 1 для блока 0, с номерами от k до 2k – 1 для 
блока 1 и т. д. При k = 1 каждый блок представляет собой один сектор, при k = 2 он пред-
ставляет собой два сектора и т. д. Как показано на рис. 5.16, а, если для RAID-массива, 
состоящего из четырех дисков, используется организация RAID-системы уровня 0, 
запись ведется последовательными блоками по всем дискам по кругу.

Подобное распределение данных по нескольким дисковым приводам называется че-
редованием

. К примеру, если программа выдает команду на чтение фрагмента данных, 

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

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

С операционными системами RAID уровня 0 работает намного хуже, поскольку они 
обычно запрашивают данные по одному сектору. На результаты это не влияет, но па-
раллельность работы остается невостребованной, поэтому и не достигается никакого 
повышения производительности. Еще один недостаток такой организации состоит 
в том, что надежность оказывается потенциально ниже, чем при использовании SLED. 
Если RAID-система состоит из четырех дисков со временем наработки на отказ, рав-
ным 20 000 часов, то отказ какого-нибудь привода будет происходить примерно через 
каждые 5000 часов и данные будут теряться безвозвратно. SLED-диск с наработкой 
на отказ, равной 20 000 часов, будет работать в четыре раза надежнее. Поскольку эта 
конструкция не имеет никакой избыточности, ее нельзя считать настоящей RAID-
системой.


background image

5.4. Диски   

419

Рис. 5.16. RAID-системы уровней с 0 по 6; закрашены дублирующие приводы 

и приводы дисков четности


background image

420  

 Глава 5. Ввод и вывод информации 

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

В отличие от RAID-систем уровней 0 и 1, работающих с блоками, состоящими из сек-
торов, RAID-система уровня 2 работает на основе слов и даже байтов. Представьте себе 
разбиение каждого байта единого виртуального диска на пару 4-битовых полубайтов, 
затем добавление к каждому из них кода Хэмминга с образованием 7-битового слова, 
в котором биты 1, 2 и 4 являются битами четности. Затем представьте, что семь дисков 
(рис. 5.16, в) синхронизированы по позициям блока головок и угловому положению. 
В таком случае появится возможность записать закодированное по Хэммингу 7-бито-
вое слово на семь дисков, по биту на каждый дисковый привод.

Эта схема использовалась в компьютере CM-2 фирмы Thinking Machines. Бралось 
32-разрядное слово данных, к нему добавлялись 6 битов четности, чтобы получилось 
38-разрядное слово Хэмминга, плюс дополнительный бит четности. Полученное 39-раз-
рядное слово записывалось на 39 дисков. При этом достигалась превосходная общая 
пропускная способность, поскольку за время, отводимое на работу с одним сектором, 
можно было записать 32 сектора данных, имеющих информационную значимость. По-
теря одного из дисковых приводов также не создавала никакой проблемы, поскольку 
при этом терялся только один бит в каждом считываемом 39-разрядном слове, с вос-
становлением которого код Хэмминга легко справлялся на лету.

Недостаток этой схемы заключался в том, что для ее работы требовалась синхрони-
зация вращения всех дисков. Кроме того, такая схема имела смысл лишь при значи-
тельном количестве дисковых приводов (даже при наличии 32 дисковых приводов, 
хранящих данные, и 6 приводов с битами четности издержки составляли 19 %). Кроме 
этого к контроллеру предъявлялись слишком высокие дополнительные требования, 
поскольку он должен был выдавать с каждым битом контрольную сумму по Хэммингу.

RAID-система уровня 3 является упрощенной версией RAID уровня 2. Она показана на 
рис. 5.16, г. Здесь для каждого слова данных вычисляется один бит четности, который 
записывается на отдельный диск четности. Как и в RAID-системе уровня 2, приводы 
дисков должны быть точно синхронизированы, поскольку отдельные слова данных 
разбросаны по нескольким дискам.

На первый взгляд может показаться, что единственный бит четности дает возможность 
лишь определить, а не исправить ошибку. Это умозаключение верно для случая про-
извольных неопределимых ошибок. Но в случае отказа дискового привода этот бит 
предоставляет возможность полной одноразрядной коррекции ошибки, поскольку по-
зиция выпавшего бита уже известна. При отказе привода контроллер просто делает вид, 
что все находящиеся на нем биты равны нулю. Если слово вызывает ошибку четности, 
значит, бит с отказавшего привода должен был содержать 1, поэтому он подвергается 
коррекции. Хотя RAID-системы уровней 2 и 3 обеспечивают очень высокую скорость