У меня есть веб-сайт для хранения файлов среднего размера, который позволяет людям делать резервные копии своих данных в Интернете. Многие из этих файлов являются общими и получают большой объем трафика. У меня есть несколько типов серверов, и мне еще предстоит найти "золотую середину", где я мог бы использовать большую часть места на жестком диске, не достигая пределов ввода-вывода дисков.
Самый производительный сервер, который у меня есть, - это 8 твердотельных накопителей по 128 ГБ в блоках raid5 4K. Его пики составляют около 320 МБ / с при случайном чтении, и похоже, что у него все еще есть место, чтобы подтолкнуть его. Затем у меня есть 3 x 300GB 15k SAS raid0 box, который едва может сделать 45 МБ / с, прежде чем достигнет своего предела io, и загрузка резко возрастет.
Когда я смотрю на различные тесты накопителей, я вижу, что большинство современных твердотельных накопителей могут выполнять произвольное чтение ~ 50 МБ / с. Означает ли это, что он масштабируется более или менее линейно? Итак, если бы у меня было 12 таких в raid0, я мог бы выполнять произвольное чтение около 600 МБ / с? Насколько сильно raid5 снижает производительность?
Также я слышал, что TRIM отключается при использовании RAID, поэтому производительность снижается быстрее. Я что правда?
Если диски SAS являются достойным индикатором ваших шаблонов ввода-вывода, то кажется, что ваш размер считываемого ввода-вывода составляет около 64 КБ - при условии, что диски в порядке и шаблон в основном случайный. Это имеет смысл для описываемого вами типа использования.
Если то же самое относится к вашему SSD, вы получаете только около 600IOP на диск, что довольно плохо для SSD IMO. С приличным контроллером должно быть очень мало накладных расходов на чтение из пакета RAID 5 - данные есть на всех дисках (вещь с распределенной четностью), поэтому операции чтения должны быть отправлены на все диски параллельно при условии, что у вас достаточно запросов для контроллера. делать свое дело. Проблема может заключаться в том, что ваш контроллер не может справиться ни с общей нагрузкой ввода-вывода, ни с максимальной скоростью передачи данных, которую вы пытаетесь выдвинуть - какой это тип контроллера? Другое дело, что если вообще будут происходить какие-либо записи, они резко повлияют на ситуацию - с RAID 5 ваша емкость ввода-вывода записи составляет четверть скорости чтения (с хорошим контроллером, хуже с плохим), и запись SSD обычно медленнее, чем чтение, поэтому штраф за запись для RAID 5 с SSD обычно ближе к 6x. Если вы уверены, что записи не сбивают с толку проблему, вы можете не учитывать это.
Размер полосы и выравнивание разделов могут занять значительный кусок из этого, если вы не учли их. Вы говорите, что у вас есть SSD, настроенный в RAID 5 с блоками 4K - если этот 4K является вашим размером полосы, то это далеко. Размер полосы должен быть кратным размеру блока чтения SSD, который будет намного больше, чем 4 КБ, в зависимости от SSD, блок чтения будет 64 КБ / 128 КБ или, возможно, больше. Попробуйте поэкспериментировать с размером полосы, не зная модели SSD и вашего контроллера. Я не могу дать вам никаких рекомендаций относительно того, какой размер может быть подходящим, но не забудьте проверить, действительно ли ваш контроллер может масштабироваться выше скорости ввода-вывода и значений пропускной способности, которые вы используете. уже видите, если контроллер исчерпал себя, это первое узкое место, которое вам нужно исправить.
Скорость случайного чтения 50 МБ / с зависит от размера ввода-вывода - для небольших операций чтения (в диапазоне 4 КБ) на приличном SSD (Intel X-25E, 35 КБ операций ввода-вывода в секунду при случайном чтении) вы должны увидеть 140 МБ / с. Более дешевые диски потребительского уровня будут немного медленнее, но ваш RAID-пакет серьезно отстает, независимо от того, какие диски он использует.
Вы правы, что TRIM не может использоваться с RAID в настоящий момент - чтобы сделать это правильно, потребуется сопоставление между тем, что ОС считает удаленными блоками данных, и тем, как это преобразуется в блоки на физических дисках. Это недоступно прямо сейчас, и я бы не стал задерживать дыхание из-за этого в ближайшее время, это вызывает беспокойство, только если вы много пишете на диски и многократно заполняете, а затем удаляете данные. Если ваш шаблон ввода-вывода в основном читается, и вы не заполняете и не удаляете данные повторно, то поддержка TRIM не беспокоит вас.
SSD имеют очень низкое время доступа, поэтому они очень хороши при произвольном вводе-выводе, что, я считаю, именно то, чего вы пытаетесь достичь, когда спрашиваете, «масштабируются ли они линейно». Вращающиеся диски 15K могут работать только со скоростью 45 МБ / с, а затем нагрузка возрастает, потому что их среднее время доступа в 25 раз выше, чем у твердотельных накопителей (5 мс против 0,2 мс). Вот почему они лучше справляются с более высокими нагрузками.
Вращающиеся диски 15K также масштабируются линейно, они просто масштабируются с гораздо меньшей позиции.
Накладные расходы RAID-5 в основном связаны с записью, поэтому, если ваша нагрузка слишком большая для чтения, накладные расходы будут небольшими, если вообще будут, по сравнению с RAID-0.
Однако помните об ограничениях автобусов; если вы увеличиваете скорость до 300 МБ / с с 8 дисками, 12 дисков приближают вас к 500 МБ / с. Убедитесь, что они распределены по соответствующему количеству шин SATA / SAS и что хост-адаптеры также имеют достаточную пропускную способность шины на материнской плате / объединительной плате.
Я тоже слышал то же самое о TRIM и RAID, но у меня не было опыта с этим на практике. Но действительно ли это зависит от SSD, нужно ли им это. В частности, корпоративные диски здесь не представляют проблемы. Кроме того, если ваше приложение в основном предназначено для чтения, это не будет проблемой, потому что у дисков будет время «догнать» стираемые блоки после того, как вы записываете данные.