Назад | Перейти на главную страницу

распределение доступа по нескольким дискам

У меня довольно большое приложение, которое требует одновременного доступа к довольно большому количеству (300+) больших файлов и обращается к ним, читая их все одновременно.

Если все файлы помещаются на 1 диск (если у меня есть даже достаточно большой диск), скорость выполнения приложения падает до минимума. Чтобы обойти это, я распределяю файлы по нескольким физическим дискам и машинам, NFS монтирует разделы и использую сценарии bash для создания множества символьных ссылок, чтобы все файлы находились в одном огромном каталоге. Это творит чудеса для повышения скорости выполнения, разделение на 3 диска увеличивает скорость выполнения в 10 или более раз.

Есть ли у кого-нибудь предложения по менее громоздкому способу настройки? Я опасаюсь, что чередование, как в RAID или Gluster, может работать не очень хорошо, поскольку высокая скорость чтения любого файла никогда не требуется, но всегда требуется большое количество одновременных обращений.

  • Использование NFS вместо многих локальных дисков значительно снизит вашу скорость, поскольку любой современный диск может заполнить 1 ГБ Ethernet-соединения, не говоря уже о более чем одном.
  • Использование RAID0 также значительно повысит вашу скорость без административных накладных расходов, но в среднем теоретически это будет только около 50% от увеличения скорости такого же количества дисков с разметкой символических ссылок (50%, потому что ваша производительность зависит от того, сколько полос может использоваться одновременно - в худшем случае ваше приложение должно читать все только с одного диска, в лучшем случае оно может читать с каждого отдельного диска).
  • Использование твердотельных накопителей значительно повысит вашу производительность. Это дорого, но в этом случае ничто не сравнится с SSD.

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