Заметки о Nexenta: Выбор железа

nexenta
Rate this post

Поскольку материалов и идей по поводу такой системы как Nexenta и ZFS у меня довольно много, появилась мысль набросать небольшой цикл статей, в котором отобразить основные моменты по поводу работы с данной системой. До этого немного ранее я написал небольшую заметочку об различных вариантах raidZ и их работы. Статья получилась несколько вырванной из контекста, так что лучше начать все сначала, от самих истоков, от выбора железа и установки.

Почему вообще возникла мысль работать с Nexenta? Все очень просто, нужно система для мощного, надежного сетевого хранилища, способного подключаться к клиентским серверам по различным протоколам, например NFS или iSCISI. Что обратило взгляд именно на Nexenta? Вообще изначально была идея использовать ZFS. Когда начал копать под ZFS все само собою вытекло к Nexenta. Это и не удивительно, ибо Nexenta – это очень удачный порт с Sun Solaris, в котором реализованные самые новые технологии по хранению данных. Ну например дедупликация, очень вкусная плюшка. Она например присутствует у только самых продвинутых производителей специализированных хранилищ за большие деньги, не будем называть имен, те кто немного в теме прекрасно понимают о ком я.

Вариантов как использовать данное хранилище, у меня было много. Основной рассматривался как хранение бекапов, очень удобно и просто. Другие варианты более сложные, это в качестве iSCISI хранилищ для разных вариантов виртуализации, например для Hyper-v. Ну, а пока что до них руки не дошли, думаю обязательно попробую как нужда заставит, а там и будет повод написать об этом. Пока что, в бою используется вариант как сетевого хранилища для бекапа. Ну что раз сказано, надо делать.

Что у нас есть? Есть сервер, точнее 2 примерно одинаковых сервера, но сейчас речь пойдет об одном. Следующей конфигурации: процессор Intel(R) Xeon(R) CPU X3440 @ 2.53GHz CPU, память 12Гб, 16*2Tb SATA disk. Таким образом, емкости на дисках около 32Тб, но это если просто на дисках, нам же важно еще скорость, удобство и прежде всего надежность. Чтобы все это получить мы и ставим Nexenta. Есть маленький нюанс. Как заметит пытливый читатель, каким образом я подключил все 16 дисков к одной материнской плате? Да, все верно, диски подключаются не напрямую, а через адаптер. Поскольку нам тут не требовалось навороченного адаптера, который мог бы поддерживать сложные, многодисковые рейды, а нужна простенькая плата, которая бы просто транслировала бы диски и позволяла бы загружаться с них, то изначально выбор пал на LSI SAS HBA. Однако тут я столкнулся с первой проблемой, которая чуть не стала последней. Система упорно не хотела ставиться, точнее делала это очень долго и очень меееедленно, настолько долго, что даже прождав сутки я так и не дождался установки до конца.

Такой поворот событий подействовал на меня довольно угнетающе, но все-таки я упорный парень и немного потанцевав с бубном и потыкав диски, было обнаружено, что такая проблема наблюдалась на дисках одного производителя (Western Digital), однако на дисках другого производителя (Seagate) такой проблемы не было. И при этом такое было только в сочетании с платой от LSI. Вот такая вот загогулина. Между прочим, на сайте LSI написано, что Solaris они не поддерживают в принципе. Так что после некоторого размышления, было принято волевое решение, отказаться от данной платы, в пользу старого, проверенного рейда от Adaptec. Но кто хочет пользоваться платами от LSI, у меня она работала только вместе с дисками от Seagate, при этом работала неплохо, но с другими вендорами работать отказывалась напрочь.

На самом деле информации по железу и совместимостям у меня не так уж много, тестировалось мною это не на таком уж большом количестве различных вариантов, так что в будущем, мне кажется, ожидается еще немало удивительных открытий. В любом случае, рекомендации по железу можно выразить следующие. Основное здесь дисковая подсистема, поскольку дисков можно использовать много, практически до бесконечности, то используем большие корпуса с хорошей вентиляцией, с контроллерами, куда можно воткнуть много дисков. Так как с LSI контроллерами я уже обжегся, то использую контроллеры Adaptec, диски подключаются как jbod или simple volume. Система сама по себе много места не требует, так что, под систему используются диски небольшого размера 250Гб вполне подойдет, запросто можно и меньше, у меня меньше просто не нашлось.

По поводу памяти. Память  на хранилище особо ни к чему, если только не запускать на нем приложения какие-то, но тогда это уж не просто хранилище получается. Однако есть один момент, помять нужна для дедупликации, поскольку вся информация о блоках пишется в память, то для этой цели она используется очень активно. Вообще есть вот такая формула:

[number of blocks used] * 320 = [RAM requirements in bytes]

т.е. чем больше блоков у вас в системе и меньше их размер, то тем больше вам требуется памяти. Но память сейчас не такая уж дорогая, так что при необходимости можно дорастить, либо не пользоваться дедупликацией, если она вам не особо нужна. Весь вопрос упирается в целесообразность. Как, в общем-то, и всегда.

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

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