У меня только что появился HP DL180 G6, который имеет 25 дисков SAS по 146 ГБ, 15 тыс. Ради интереса я сконфигурировал их все в одном массиве RAID 0 и установил на него Ubuntu, чтобы посмотреть, насколько быстро он может работать с 25 дисками на контроллере HP Smart Array P410 с 512 МБ ОЗУ.
Когда я запускал hdparm -tT / dev / mapper / concorde - vg-root, я получаю
Timing cached reads: 5658MB in 1.99 seconds = 2834.13 MB/sec
Timing buffered disk reads: 1192 MB in 3.00 seconds = 397.13 MB/sec
Когда я запускаю ту же команду на другом моем сервере (HP DL360 G5 - 32 ГБ ОЗУ - 2X 2,66 ГГц 667 МГц), который имеет только 4 диска 15K, я получаю:
Timing cached reads: 13268 MB in 1.99 seconds = 6665.18 MB/sec
Timing buffered disk reads: 712 MB in 3.00 seconds = 237.17 MB/sec
Я ожидал, что это будет работать в 5 раз быстрее, чем старый, а не медленнее. Сервер предназначен для доставки потокового мультимедиа, поэтому мне нужен сверхбыстрый доступ и передача, чтобы не отставать от 2 сетевых портов 1 ГБ, которые я надеюсь время от времени использовать до максимума вместе с выполнением других задач.
Я просто собрал кучу копий файла MP4 размером 400 МБ, чтобы получить 45 ГБ для копирования из одного каталога в другой, и это заняло 96 секунд, что кажется неправильным для всего, что я когда-либо слышал о повышении производительности RAID 0.
Он настроен как аппаратный рейд. Что мне нужно сделать в Linux, чтобы воспользоваться дополнительной скоростью, которая должна быть там? Имеет ли значение, какую версию Linux я использую? Мне комфортно с CentOS и Ubuntu, но при необходимости я могу использовать и другие.
Есть ли другая команда, которую я должен использовать для измерения производительности? Вчера я попытался использовать iotop и iostat для мониторинга использования RAID и не смог заставить его сообщать об использовании при копировании файлов размером 2 ГБ через FTP, поэтому я застрял, пытаясь установить тест, сравнивая его производительность на серверах и отслеживая его, поэтому я знать, когда жесткие диски достигают максимума и их необходимо заменить на SSD.
Вау ... Здесь есть к чему обратиться.
Производительность диска - это не только пропускная способность. Есть понятие IOPS, задержки и времени обслуживания, с которыми нужно бороться. Большинство рабочих нагрузок носят случайный характер, поэтому 25 корпоративных дисков в массиве всегда будут превосходить 4 диска с точки зрения IOPS.
hdparm
не подходит для тестирования корпоративных хранилищ. Посмотрите на специализированные программы вроде iozone
и fio
.
Пример команды iozone, которая может быть вам полезна: (запускать из большого каталога на массиве дисков, который вы хотите протестировать): iozone -t1 -i0 -i1 -i2 -r1m -s72g
Конструкция этого сервера означает, что на объединительной плате вашего диска превышена подписка. На сервере есть микросхема расширения, и эти 25 дисков совместно используют 4-канальное соединение 6 Гбит / с с контроллером RAID. Это означает, что у вас теоретическая максимальная пропускная способность 24 Гбит / с. (или 3000 мегабайт в секунду) в массив. Это потолок, и после этого вы не увидите производительности.
Ubuntu почти никогда не бывает лучшим выбором, когда речь идет о драйверах оборудования и поддержке. Официально он не поддерживается сервером. CentOS или RHEL больше подходят для этого оборудования.
Контроллеры HP Smart Array могут разделить группу дисков (массив) на несколько логических дисков разной емкости и уровней RAID. В приведенном ниже примере показан массив из 4 дисков, разделенный на три логических диска. Один из логических дисков настроен с другим уровнем RAID, чем другие.
Интеллектуальный массив P420i в слоте 0 (встроенный) (sn: 0014380296200A0)
logicaldrive 1 (72.0 GB, RAID 1+0, OK) logicaldrive 2 (1024.0 GB, RAID 1+0, OK) logicaldrive 3 (869.1 GB, RAID 5, OK) physicaldrive 1I:2:1 (port 1I:box 2:bay 1, SAS, 900.1 GB, OK) physicaldrive 1I:2:2 (port 1I:box 2:bay 2, SAS, 900.1 GB, OK) physicaldrive 1I:2:3 (port 1I:box 2:bay 3, SAS, 900.1 GB, OK) physicaldrive 1I:2:4 (port 1I:box 2:bay 4, SAS, 900.1 GB, OK)
Ни в коем случае нельзя использовать RAID 0 для логического диска здесь. Если вы можете сэкономить место, RAID 1 + 0 будет очень хорошо работать с этой комбинацией оборудования.
У вас есть LVM. Это не лучший подход при работе с этими RAID-контроллерами HP Smart Array. Это дополнительный уровень абстракции, и вы не увидите максимальной производительности (хотя его можно настроить для хорошей работы).
Прошивка. Вам нужно обновить микропрограмму сервера и связанных компонентов. Функциональные возможности улучшаются с каждой версией микропрограммы контроллера HP RAID.
Конфигурация кеш-памяти RAID. Убедитесь, что батарея RAID исправна и что баланс чтения / записи кеша подходит для вашей рабочей нагрузки.
Выбор файловой системы. XFS - хороший вариант для потоковой передачи мультимедиа. Но запрашиваемые вами ставки относительно низкие. Любая современная файловая система Linux должна подойти.
Одна вещь, которая сразу бросается в глаза, - это низкий кешированный througput на новом сервере, что указывает на то, что у вас есть узкое место с оперативной памятью. Вы упомянули, что в нем 36 ГБ оперативной памяти, что немного нечетное число. Я держу пари, что вам не удалось установить плунжер попарно (или 3 раза, если этот процессор / плата поддерживает тройное чередование, как я подозреваю), и поэтому плунжер не чередуется должным образом. Вы можете бежать memtest86+
чтобы получить хорошее измерение пропускной способности памяти.
Что касается фактической пропускной способности ввода-вывода, для такого большого массива вы, вероятно, не бросаете на него достаточно запросов. hdparm
читает только 2 МБ за раз, поэтому, если в массиве используется коэффициент полосы 512 КБ, одновременно будут заняты только 4 диска. Для других команд, таких как dd
, это зависит от размера опережения чтения, а размер опережения чтения по умолчанию составляет всего 128 КБ. Попробуйте использовать dd
вместо того hdparm
(без iflag=direct
) и увеличьте коэффициент опережения чтения в / sys / block / dm-X / queue / read_ahead_kb, чтобы ядро отправляло достаточно большие запросы, чтобы все диски были заняты, или если вы действительно используете iflag=direct
с участием dd
, затем убедитесь, что вы используете очень большое значение для bs=
, например, 32 МБ, и тогда настройка опережения чтения ядра не имеет значения.