Table of Contents

, , , , , , , ,

Техническое задание на подготовку и оптимизацию сервера с аппаратным raid10 из N x 3Tb (до 16TB) CentOS 6.x

Максимальный размер fs, который поддерживает ext4 - 16TB, в связи с чем на 16TB+ массивах приходится использовать btrfs.

Операционная система:
Linux CentOS 6.x amd64 последней версии

Роль сервера:
хранилище

Описание хранимых данных:
10% файлы по 5-7 Mb, 90% файлы 0.5-5Gb

Рейд-контроллер:
Просьба сразу обновить firmware на raid-контроллере до последней версии, предварительно сохранив копию заводской прошивки.
Убедиться что не будет проблем с HDD firmware и данной моделью контроллера. При необходимости обновить прошивку и на дисках.
Если у рейд-контроллера есть возможность отправки почтовых извещений о проблемах - настроить ее.
Совместимость дисков: http://www.adaptec.com/en-us/_common/compatibility/

IPMI:
Если есть возможность - крайне желательно подключить ipmi-интерфейс в dedicated порт и выделить отдельный IP.
Если внешнее подключение невозможно и если позволяют стойки - соединить порт ipmi-интерфейса SOHO-свитчом с 2nd NIC любого из серверов.
Очень важно чтобы ipmi-интерфейс не работал в shared режиме через сетевые интерфейсы сервера. Иначе при аппаратных проблемах сервер будет полностью недоступен.
Так же следует обновить прошивку IPMI-интерфейса, т.к. у Supermicro очень часто бывают проблемы с удаленной работой через консоль IPMI.

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

Swap:
не использовать вообще

Корневая файловая система:
единым разделом /dev/md0 подмонтировать в /
файловая система ext3 или ext4
никаких отдельных разделов создавать не следует
опции монтирования в /etc/fstab оставить по-умолчанию
флаги fs так же можно оставить по-умолчанию

Приложения:
огромная просьба ставить всё нужное из официального репозитория, не собирая ничего из исходников

RAID10:
  Расчет приблизительной производительности рейда
  http://www.wesworld.net/raidcalculator.html
  Расчет размера stride
  http://busybox.net/~aldot/mkfs_stride.html

Важно
1. обеспечить автоматический failover при сбоях дисков
2. обеспечить максимальную скорость перестройки массива
3. минимизировать потери дискового пространства

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

Создание RAID10 для 24 дисков:
  raid10 на 20 диска + 2 диска установить в hotspare
  stripe size установить в максимальное значение 4096K

Файловая система ext4:
На массиве будут храниться файлы с размером >4Mb, что позволяет выставить размер блока fs в максимальные 64k.
По этой же причине нет нужды в большом количестве инод, поэтому можно уменьшить их общее количество для освобождения зарезервированного места.
Это делается при запуске mkfs.ext4 изменением соотношения количества инод к количеству байт с 1 иноды к 16384 байтам на 1 иноду к 32768 байтам.

Так же при создании файловой системы ext4 необходимо задать правильный размер stride и stripe-width.

stride или размер шага - это количество блоков, которые должны быть прочитаны или записаны на диск перед переходом к следующему.
Выставление этого параметра позволяет равномерно распределять метаданные по массиву, не позволяя им скапливаться на одном диске.
Если этого не сделать, то в будущем возможно значительное уменьшение скорости работы с RAID-массивом.
  Stride size = Stripe Size / Block Size
  
stripe width или ширина полосы - параметр, позволяющий задать ширину страйпа в блоках fs.
Правильное выставление этого параметра выравнивает файловую систему относительно границ дисков,
позволяя избавиться от традиционного недостатка RAID-массивов с контролем четности - операций read-modify-write.
Формула расчета stripe width для raid10: 
  Stripe width = Stride size * ( Raid10 Disk Members / 2)

Команда для создания файловой системы на raid10 с размером stripe в 4096k:
  mkfs.ext4 /dev/raid10 –b 65536 -i 32768 –E stride=64,stripe-width=704

Освобождение зарезервированных под суперпользователя блоков, отключение автоматического запуска fsck:
  tune2fs -i 0 -m 0 -c 0

Точка монтирования raid10:
/home

Опции монтирования raid10:
  noatime,nodiratime,errors=remount-ro
  так же в /etc/fstab два последних поля - fs_freq и fs_passno - должны быть выставлены в 0.