Маркетинговые штучки: сноб-потребитель и HDD #2.
реклама
Маркетинговые штучки: сноб-потребитель и слишком большой и быстрый HDD.
В этой серии заметок мы поговорим о неутомимой борьбе сноба-потребителя с такими энергонезависимыми накопителями информации, как жесткие диски. Как обычно, пойдем в обход, используя много вводного материала.
Часть вторая.
Сегодня лекция:
Сеансы Компьютерной Магии
(с полным её разоблачением)
Общественный разоблачитель, гр.: grizlyk
СКМ выпуск #1: RAID 0 и страхи.
«- А мне до крайности не нравится эта затея и вообще я удивляюсь, как ему разрешили это!
- Нет, не скажи, это очень тонкий шаг. Тут вся соль в разоблачении.»
Из разговора.
«На запрос "RAID низкоуровневый формат" поисковик у меня выводит целую кучу информации для нашего профилактория для пользователей с математическим уклоном - с цветными картинками, о том как "данные располагаются на N дисках" и математическими формулами описывающими вероятности отказов.
Я не против картинок и формул, я напротив, за, но кроме этого должна быть и полезная информация, а ее отсутствие это жадность или это моральная и неизбежно следующая за ней интеллектуальная деградация?
Никак не найти как данные посекторно размещаются, например, на массиве RAID 0? Какая служебная информация используется и где она размещается? Кто подскажет где можно прочитать об этом?»
Из письма простого возмущенного пользователя.
Содержание.
1. Что такое RAID?
2. Зачем нам RAID 0?
3. Как пугать с помощью RAID 0 (Швейк, который не боялся пироксилина).
1. Что такое RAID?
RAID это несколько обычных жестких дисков, которые логически объединяются в группу (массив) для совместного использования.
Если мы обычным образом подключим несколько обычных дисков и будем их совместно использовать (на каждом создадим отдельный раздел и у нас будет две буквы дисков в Windows), они не образуют RAID. Значит, при RAID эти независимые диски используются специальным образом, а как именно специально зависит от номера после RAID.
2. Зачем нам RAID 0?
Многие чипсеты современных матплат имеют встроенный SATA контроллер, который поддерживает RAID 0, так что вы "получаете его совершенно бесплатно, а платите только за покупку матплаты", другими словами наличие оплаченной опции побуждает к ее изучению и использования, а вдруг это очень ценная вещь?
Если есть желание задействовать RAID 0 на матплате, чипсет которой RAID 0 не поддерживает, то можно приобрести дополнительный RAID 0 контроллер для шины PCI или PCIe-x1 (SATA I / IDE) по цене от 10уе.
Нас сегодня будет интересовать RAID 0 (ноль). RAID 0 это такой режим работы нескольких (для простоты рассмотрим работу двух) физических дисков, когда данные разбиваются на части и записываются поочередно на каждый из дисков.
2.1 Как разместить данные на магнитном диске?
Чтобы привести пример реализации RAID 0 мне придется открыть великую тайну, скрытую в других описаниях RAID 0 - данные на жестких дисках разделены на блоки (обычно по 512 байт, но теперь уже и по 4Кбайта), которые называются секторами.
Сектора пришли к нам из глубины веков дискостроения. Диск (пластина) в дисковом накопителе имеет две поверхности (стороны), над каждой из которой может (для простоты, по радиусу) перемещаться головка чтения/записи. Остановившись на некоторой позиции от центра, головка будет описывать над вращающимся диском окружность — трек. Если мы имеем несколько поверхностей (один диск или несколько вращающихся вместе пластин) и несколько головок чтения/записи для них, то для данной позиции головок все их треки образуют группу, называемую цилиндр.
Изобретение диска произошло не только из-за изобретения колеса. По сравнению с головкой чтения/записи над магнитной лентой, данные на всей поверхности диска доступны очень быстро, поскольку поверхность вращается, а головка может перемещаться по радиусу. Но в мире все относительно, поэтому скорость доступа к данным, расположенным на одном треке выше, чем к данным на разных треках, это потому что скорость перемещение головки от трека к треку значительно меньше скорости вращения диска.
Чем больше треков в цилиндре, тем больше данных можно читать/писать без перемещения головок по трекам и тем больше головок чтения/записи могут читать/писать данные одновременно, это два фактора (доступ к треку и одновременный доступ к разным головкам), которые ведут к росту средней скорости чтения записи на блоках, размер которых более одного трека.
В пределах одного трека скорость доступа к данным зависит от порядка их расположения на этой окружности. Для простоты мы будем считать, что современный накопитель попав головкой на трек считывает его полностью в специальный кэш трека, а уходя с трека записывает на него все модифицированные данные из этого кэша. Это значит, что в пределах трека скорость доступа к данным одинаковая.
В пределах трека данные сохраняются блоками, которые называются сектора. Это все от того, что все точки окружности одинаковые, нет у окружности ни начала, ни конца. Для того, чтобы попав на произвольное место окружности можно было бы понять где начинаются, а где заканчиваются данные трека нужны какие-то метки. Не долго думая, во времена гибких дисков люди пробили в некоторой точке диска дыру, когда дыра пролетала над датчиком это указывало на начало трека и головка могла бы начать писать и читать данные трека. Контакт номер 8 для 34-жильного кабеля флоппи-диска называется #index и на самом деле низким уровнем напряжения непосредственно служит для отражения факта прохождения дыры в диске над датчиком этой дыры в дисководе.
Первая проблема в том, что магнитный носитель вещь довольно ненадежная, поверхность там и сям может иметь повреждения, которые полностью исключают эти участки диска из операций чтения/записи данных, разделение трека на более мелкие сектора позволяет исключать поврежденные участки трека. Вторая проблема в том, что для скорости иногда выгодно проводить операции частичного чтения/записи данных на трек, в этом случае нам нужно разделить трек на более мелкие сектора. Третья проблема в том, что трек может быть довольно-таки большим, в общем он может быть произвольного размера, размер зависит от конструкции конкретного диска, поэтому данные на треке дополнительно дробятся и хранятся в логических блоках унифицированного размера - секторах, что упрощает обмен данными между дисками разной конструкции.
Если механически отметить (нарисовать) на нашем гипотетическом диске границы всех секторов и посмотреть на диск сверху, то он бы выглядел как круглый торт, классически нарезанный на равные дольки по радиусам, начиная от радиуса, проходящего через дырку начала трека. Это все не от того, что древние производители дисков очень любили торты и выразили свою мечту в металле, а от того, что все точки диска вращаются с равной угловой скоростью w (покажем, что мы тоже не против математики). Эта умная фраза значит, что при вращении диска головка чтения/записи за одинаковое время повернется на одинаковый угол независимо от того, на каком расстоянии от центра она находится. При фиксированной скорости чтения/записи получаем фиксированное время чтения/записи, получаем фиксированный угол чтения/записи, получаем торт.
Если где-то прибыло, значит где-то убыло, равная угловая скорость означает разную линейную скорость v=w*r (скорость, с которой головка движется по линии окружности), чем дальше от центра r, тем с большей скоростью несется диск под головкой (метров/секунду).
Природа магнитной записи такова, что запись высокочастотного сигнала (для простоты частота сигнала это скорость чтения/записи данных (бит/секунду), чем выше скорость, тем выше частота) зависит от качества магнитной поверхности при фиксированной скорости ее движения. Грубо чем меньше минимальный геометрический размер отдельной магнитной области, тем более высокую частоту можно записать. Чем выше скорость движения магнитной поверхности при фиксированном качестве магнитной поверхности, тем более высокую частоту можно записать (тем более крупные отдельные магнитные области можно использовать). Получается,что на таком диске (с магнитной поверхностью одинакового качества и фиксированной скоростью вращения) в наихудших условиях находятся треки, которые ближе всего к центру диска (т.к. для них линейная скорость движения магнитной поверхности минимальна).
Сочетание минимальной линейной скорости движения магнитного носителя (в м/с) и максимальной для нее скорости чтения/записи (в бит/с) дает нам максимальную линейную плотность хранения данных в бит/м = (бит/с) / (м/с), которая зависит только от качества магнитной поверхности (грубо). Любое допустимое для качества магнитной поверхности сочетание линейной скорости и скорости чтения/записи дает нам используемую линейную плотность.
Линейная плотность чтения/записи для самых внутренних треков, сгодится и для внешних треков (но не наоборот, если при фиксированной скорости вращения диска задаться слишком большой скоростью чтения/записи, то внутренние треки использовать будет нельзя из-за низкого качества магнитной поверхности). Чтобы записывать данные с фиксированной (максимальной) линейной плотностью (бит/м) на всех треках, при росте линейной скорости надо повышать скорость чтения/записи (иначе линейная плотность хранения уменьшается по мере удаления от центра диска). Если записывать данные на всех цилиндрах с фиксированной линейной плотностью (взятой от внутренних треков, которая определяется фиксированным качеством магнитной поверхности и фиксированной скоростью вращения диска), то на разных треках мы получим разное количество секторов — секторов тем больше, чем дальше от центра диска. Вместо тортика получаем набор бубликов разного диаметра, вложенных друг в друга.
А сейчас нам интересно знать только то, что сектора на накопителе можно линейно адресовать числом от 0 до max-1 (LBA адресация), где max это число всех секторов на данном диске.
Из такой адресации можно увидеть проблему 2Tb предела для жестких дисков - если поле адреса сектора имеет размер 32 бита, то 2 в степени 32 секторов умножить на 512байт/сектор даст как раз 2Тбайта/диск. Складывая быстроту доступа к данным, расположенным на одном треке с ростом числа секторов на треке мы получаем (при фиксированной скорости вращения диска и фиксированной линейной скорости чтения/записи) прирост скорости доступа к данным для секторов на внешних дорожках, которые имеют младшие адреса, т.е. для секторов с номерами 0,1 и т.д.
2.2 Как разместить данные на RAID 0 массиве?
Итак, теперь можно себе представить, что при RAID 0 четные сектора 0, 2, 4 и т.д. записываются на диск 0 в сектора 0,1,2; а нечетные сектора 1, 3, 5 и т.д. на диск 1 в сектора 0,1,2. Несложно.
2.3 Что может RAID 0?
Представить это несложно. Вопрос только зачем? Зачем записывать данные поочередно на каждый из дисков?
Затем, что несколько дисков могут читать/писать подряд больше данных без перемещения головки по трекам, т.е. несколько дисков эквивалентно добавлению нескольких пластин в накопитель, что как мы выяснили, дает сразу два фактора, ускоряющего доступ — больше треков в цилиндре (без перепозиционирования головок) и одновременный доступ к нескольким трекам. Вот в чем первый секрет RAID 0. Диски можно будет объединять в RAID 0 до тех пор, пока скорость перемещения по трекам меньше чем скорость доступа к данным трека. Некий критерий предела числа накопителей в RAID 0 массиве это скорость перепозиционирования первого накопителя на соседний трек станет равна скорости «дочитывания» цилиндра всеми остальными накопителями.
Заметим, что два накопителя гарантируют одновременный доступ к нескольким трекам, а один накопитель с таким же количеством пластин - нет, все зависит от конструкции накопителя, плохой накопитель не сможет обрабатывать данные сразу от всех головок цилиндра.
Хороший накопитель имеет внутри себя кэш с отложенной записью, данные в который записываются достаточно быстро (на максимальной скорости интерфейса, например SATA I - 150 Мбайт/с), но как только кэш заполнится, то накопитель будет записывать данные из кэша на сам магнитный диск, что бывает много медленнее. Второй секрет RAID 0 в том, что несколько накопителей RAID 0 предлагают больше такого кэша, чем один накопитель.
Третий секрет RAID 0 в том, что несколько накопителей в современных вычислительных системах могут одновременно обращаться к системной памяти работая на полной скорости своего дискового интерфейса, т.е. помимо увеличения размера кэша, кэш каждого накопителя будет работать одновременно.
Четвертый секрет RAID 0 в том, что доступ ко всем накопителям происходит одновременно, что позволяет расширить возможности как SATA интерфейса, если он является ограничителем скорости, так и SSD устройств, которые не имеют потерь, связанных с перемещением головок, но доступ к данным у которых много медленнее чем к системной памяти.
Заметим, что накопитель соединяется с контроллером через интерфейс, имеющий ограниченную пропускную способность по отношению к пропускной способности системной памяти, несколько раздельных накопителей позволяют обойти ограничения этого интерфейса по сравнению с одним накопителем с таким же количеством пластин. Путь «память — периферийный_интерфейс — дисковый_интерфейс» имеет два места, где могут образоваться заторы. Современный HDD типа green способен передавать данные со скоростью до 1Гбит/с, это полностью загрузит такой «дисковый_интерфейс» как SATA1 и такой «периферийный_интерфейс» как PCI. Ставить RAID 0 массив на SATA1 контроллер RAID для шины PCI из таких накопителей нет смысла, узкое место - PCI. Можно поставить RAID 0 массив из двух дисков на SATA1 или лучше контроллер RAID для шины PCIe версии v1 или лучше; или из четырех дисков на SATA1 или лучше контроллер RAID для шины PCIe версии v2 или лучше.
Значит, RAID 0 можно применять тогда, когда скорость доступа к системной памяти много раз больше скорости работы одного накопителя, а периферийный интерфейс позволяет накопителям работать параллельно. Число дисков в RAID 0 можно увеличивать до тех пор, пока скорость RAID 0 массива и скорость памяти не станут близки.
Конечно, лучше было бы сразу поставить более мощный накопитель, с большим числом пластин, более быстрым интерфейсом и всеми параметрами как у RAID 0 массива и выиграть в массе и потребляемой энергии, но таких накопителей в продаже нет. Или есть рыночные причины, или есть технические проблемы с созданием многопластинных накопителей, но пока что единственный путь улучшить скорость диска это RAID 0 сборка из «обычных» дисков. Также RAID 0 массив можно наращивать постепенно, докупая дорогостоящие накопители и добавляя их в RAID 0 массив.
И еще, объединение накопителей в RAID 0 массив складывает емкости всех накопителей и представляет их как один большой диск, что позволяет создавать разделы большего размера. Пока что производители софта саботируют диски большого размера, требуя для их подключения оркестра и почетного караула, но может быть им станет стыдно и они одумаются?
2.4 Что не может RAID 0?
RAID 0 не может улучшить скорость каждого диска в отдельности, поэтому когда операция чтения/записи не выходит за пределы одного диска в массиве RAID 0, прироста скорости нет. Например, в нашем массиве из двух дисков скорость обмена с RAID 0 накопителем блоками размером в один сектор не увеличивается, но для блоков в 2 сектора скорость вырастет в два раза. Таким образом выгода RAID 0 накопителя нарастает, когда нарастает объем данных в операциях чтения/записи (или количество коротких операций чтения/записи в единицу времени). Чем больше накопителей в RAID 0 массиве, тем больше должен быть объем данных, который может быть ускорен с помощью RAID 0.
Тесты скорости известных мне недорогих SSD показывают, что их внутренняя организация аналогична RAID 0, с ростом размера блока скорость резко возрастает и затем почти фиксируется на неком значении размера блока. Следующие картинки призваны показать не преимущество SSD перед HDD, а то, что скорость доступа к SSD в зависимости от размера блока подобна скорости доступа к HDD RAID 0 массиву.
Легко увидеть, что если мы начнем обмениваться с нашим RAID 0 накопителем серией блоков произвольного размера, но содержащих только четные или только нечетные сектора, прироста скорости не будет. Ситуация полностью аналогична плохо фрагментированному файлу на одном диске, доступ к которому будет много медленней, чем к дефрагментированному утилитой оптимизации доступа к диску.
Итак, прирост скорости RAID 0 массива может быть во столько раз больше скорости одного накопителя, сколько накопителей в RAID 0 массиве — в два, три, четыре и т.д. раз. При этом важно, чтобы расположение данных в операциях чтения/записи было бы оптимизировано под RAID 0 массив.
Влияет ли размер блока, который непрерывно пишется на один накопитель в RAID 0 массиве (в нашем примере размер блока равен одному сектору) на оптимизацию данных для RAID 0 массива и если да, то какой размер блока выбрать: один, два или более секторов? Существующие контроллеры RAID 0 не дают вам возможность свободно выбирать между размерами блока и по каким-то своим соображениям предлагают только несколько вариантов размеров блока. На первый взгляд чем меньше блок, тем лучше, но теоретически минимальный размер такого блока может быть в конкретной системе аппаратно ограничен тем, что запуск операции чтения-записи на некоторых интерфейсах может быть весьма затратным в смысле больших накладных расходов при подготовке к передаче данных, поэтому в каждой операции надо передать не менее некоторого объема данных, чтобы накладные расходы были хотя бы в десять раз меньше, чем расходы на передачу полезных данных. Подробности надо смотреть в каждом конкретном случае.
Первые, кто безусловно выигрывает от RAID 0, это большие файлы — аудио, видео, картинки и архивы, которые располагаются на секторах RAID 0 последовательно (обычно они так и располагаются). Конечно, для просмотра и прослушивания очень больших скоростей не надо, но вот для копирования или преобразования таких файлов скорость диска критична, также важна скорость диска при работе с архивами и их копировании.
Для HDD применение RAID 0 не дает заметных выгод при загрузке ОС, ограничивающим фактором здесь является большая фрагментация файлов (много мелких файлов), что приводит к постоянным операциям перемещения головок HDD, которые и ограничивают скорость. Для SSD потерь на перемещение головок нет, поэтому выгода заметна, хотя из-за мелких файлов максимального ускорения не достигнуть.
Для HDD применение RAID 0 не дает заметных выгод при использовании массива в качестве файла подкачки. Ограничивающим фактором является низкая скорость одного накопителя и низкая скорость перемещения головок HDD.
Для HDD применение RAID 0 не дает заметных выгод при копировании данных в пределах одного RAID 0 массива; при чтении/записи множества мелких файлов между RAID 0 массивом и другим накопителем; а также при использовании одного RAID 0 массива для совместного хранения файлов подкачки, программ и данных, поскольку ограничивающим фактором является низкая скорость перемещения головок HDD.
Отметим, что при использовании одного SSD для тех же целей мы теряем максимальную скорость работы с большими файлами, потому как диск разделяется между всеми приложениями и системными программами, которых всегда работает достаточно много, что ведет к падению скорости для каждого приложения.
Вывод:
Теоретически и из небольших практических наблюдений следует, что применение RAID 0 для HDD оправданно всегда, а особенно для HDD дисков типа green, поскольку получается тихий накопитель большой емкости с высокой скоростью последовательного доступа. Применение RAID 0 для SSD оправданно всегда.
При существующих ценах на HDD и SDD наиболее эффективным по параметрам максимизации скорости и минимизации цены за гигабайт является комбинация из RAID 0 массивов HDD дисков большой емкости и RAID 0 массивов SSD дисков малой емкости. HDD используются для хранения системы, программ и данных, а SSD для фала подкачки, особых программ и данных пользователя, а также для интеллектуального кэширования HDD для ускорения работы и загрузки ОС.
Интеллектуальное кэширование может быть реализовано наилучшим образом только силами ОС, поскольку ОС может не только вести долговременный подсчет использования блоков и не замусоривать кэш редко используемыми данными, но и знает о файлах, которые надо поместить в кэш независимо от статистики их использования (для ускорения загрузки и работы) и файлах, которые точно не надо помещать в кэш (файлы видео, если об этом не просит специально пользователь). На сегодня проблема в том, что superfetch для windows это надстройка, а не ключевой компонент системы, поэтому качество работы кэширования далеко от идеального.
3. Как пугать с помощью RAID 0 (Швейк, который не боялся пироксилина).
"RAID 0 представлен как дисковый массив повышенной производительности и меньшей отказоустойчивости."
Из http://ru.wikipedia.org/wiki/RAID
Вот эта вот "меньшая отказоустойчивость", радостно растиражированная в тысячах статей в интернете, откровенно пугает, так и представляю себе - поставил два диска рядышком и началось - поломка за поломкой, данным алес капут. Однако, сомнения сразу закрались, почему это так? Давайте предоставим трибуну нашему возмущенному пользователю.
«И еще, я не могу понять растиражированные в сети заявления о низкой надежности RAID 0, особенно при малом числе дисков, люди вообще задумываются над тем, что пишут?
Чем надежность, например, двух дисков хуже чем у одного? Если однодисковый накопитель (без RAID) выйдет из строя, то неужели данные не пострадают? А если у однодискового накопителя отвалится только одна пластина, то мы будем сожалеть, что многопластинные диски менее надежны чем однопластинные? Какая-то ерунда. Кажется, кто-то из профилактория нашел таки формулу вычисления вероятностей и вовсю ее применяет, по мере способностей (подставляет чиселки).
Нельзя диски в RAID 0 рассматривать как отдельные накопители, надежность RAID 0 массива определяется надежностью самого ненадежного компонента - одного накопителя. Нет никакой фактической информации, что десять дисков работая рядом делают это хуже, чем один диск. Тоже самое, например, с автомобилями.
Напротив, при повреждении одного из накопителей RAID 0 массива и после восстановления поврежденных данных (которое мало отличается от восстановления данных на одном винчестере), можно пересобрать RAID 0 массив меньшей емкости и скорости, так что ремонтопригодность (а значит и надежность) RAID 0 накопителя даже возрастает по сравнению с однодисковым накопителем.»
Из письма простого возмущенного пользователя.
Много шума от оратора, но в общем ему интуитивно понятно, что нет никаких причин, чтобы надежность RAID 0 накопителя была бы хуже, чем надежность накопителей из которых он собран. Только он выразить это не может. Про снижение надежности RAID 0 при нашем применении написали жертвы нашего "формального образования на базе рефератов", если под рефератами понимать копирование чужой работы в свою собственную. Катаклизм. Жертвы действительно нашли формулу и подставили в нее чиселки, не вникая в подробности.
Нет, ну а на самом деле, ведь чем больше деталей в изделии, тем меньше надежность, разве нет? В принципе «да», формула правильная, но в числах «нет», ее физическое применение некорректно. Реальное снижение надежности от двух накопителей из огромной партии накопителей, где сбой происходит в 1 из 1000 накопителей находится далеко за гранью практики.
Помимо некорректного применения формулы, здесь дело еще и в том, что растиражировали некий частный разговор людей, ничего не поняв о том, что они говорили. Разговор этих людей касался серверных систем, где существует такие параметры как «время работы сервера без отказов накопителей», «время восстановления после такого отказа» и «время работы до потери данных». Это проблемы очень далеки от потребностей десктопных компьютеров и понимания их пользователей. Достаточно сказать, что на такой сервер невозможно установить один накопитель, чтобы вписаться в эти параметры, но подавляющее число десктопов имеют только один накопитель и при этом чувствуют себя защищенными.
Другими словами, жертвы бодро сравнили один накопитель на десктопе с RAID 0 массивом на сервере и сославшись на разговор о серверах и формулу доказали снижение надежности.
На десктопе совсем другие задачи, там применяется система хранения в виде «периодическое сжатие в архив и запись на архивный носитель важных измененных файлов». В зависимости от типа архивного носителя сохраняется вся история модификаций или архивный носитель организован как кольцевой буфер. Потому что объемы данных не те, как на серверах. На десктопе потеря данных из-за повреждения файловой системы или необходимость полной перестановки операционной системы случается намного чаще, чем отказ аппаратуры диска, поэтому применение каких-либо RAID массивов, кроме RAID 0 на десктопе просто бессмысленно. То же касается и тех серверов, для которых приемлема установка только одного накопителя.
Вывод:
Для сохранения данных с одного накопителя или с RAID 0 массива пользуйтесь, пожалуйста, периодическим архивированием модификаций важных для вас файлов на резервный накопитель.
Хороший способ архивировать — использовать удаленное сетевое устройство как резервный накопитель, где для записи открыт только один каталог, а программа на удаленном компьютере автоматически переносит данные с этого каталога в защищенный каталог, доступный только для чтения.
Продолжение следует...
Обсуждение этой заметки в форуме.
Создано: 08.09.12
Последний раз отредактировано: 08.09.12
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают