Настройка NetApp FAS – Часть 3

Часть третья настройки NetApp FAS (disk ownership, raid group, aggregate, volume, qtree, lun).

Часть первая >>>
Часть вторая >>>
Часть четвертая >>>
Часть пятая >>>

Третья часть, в большинстве своем, будет теорией, немного разбавленной случайными командами.

В DataONTAP существует несколько уровней абстракции – диски, дисковые группы (raid groups), aggregate, flex volume, qtree, lun) и выглядит это как-то так:

Диски и raid group

Отдельные диски объединятся в raid group, которая может содержать один (RAID-4) или два (RAID-DP) диска проверки четности (parity disk) и один или более дисков с данными (data disk). Создать непосредственно raid group нельзя, они создаются автоматически при создании aggregate. Еще одним типом дисков является spare – запасной диск. При выходе из строя data или parity диска в raid group он займет его место автоматически.

Диски в системах NetApp закрепляются за контроллером, текущего владельца можно узнать командой disk show. К примеру, в системе FAS2040 диски в конфигурации “из коробки” назначены следующим образом:

что оставляет владельцам системы всего 6 дисков под данные из 12 (good practice):

но можно сделать и так (если стоит задача создать том максимального размера по емкости и по количеству IOPS):

Проверим диски без владельца, закрепим один из них за контроллером FAS2040-A, а затем передадим его-же на FAS2040-B, предварительно подключившись к нему:

FAS2040-A> disk show -n
0c.00.1 Not Owned
FAS2040-A> disk assign 0c.00.1 -o FAS2040-A
FAS2040-A> priv set advanced
FAS2040-A*> disk remove_ownership 0c.00.1
FAS2040-B> disk assign 0c.00.1 -o FAS2040-B

Обратите внимание, что можно использовать wildcard, так например disk assign 0c.* -o FAS2040-A закрепит все диски, присоединенные к интерфесу 0c за FAS2040-A.

Spare диски

Spare дисками считаются те диски, которые имеют владельца, но не имеют информации на них. Как только диск добавляется в aggregate он перестает быть spare. Если это был последний spare disk файлер начнет грязно ругаться. Вы не сможете удалять диски из aggregate, так что будьте осторожны. Посмотреть доступные spare диски можно с помощью vol status -s.

Размер raid group

По умолчанию (и по рекомендациям NetApp, если я правильно понял) размер составляет 16 (14data+2partiy) для SAS/FC дисков при условии использования RAID-DP и 14 (12data+2parity) для SATA. Raid group может быть конвертирована командой aggr options aggr_name raid type [ raid_dp | raid4 ].

Aggregate

Aggregate, в свою очередь, может содержать одну или более raid group. Если вы планируете использовать несколько raid group, то следует создавать их одинакового размера.
Мне нравится думать о aggregate как о большем жестком диске, который перед использованием следует разбить на партиции – тома (volume), при чем том Vol0 – корневой том, содержащий в себе операционную систему DataONTAP уже, по понятным причинам, присутствует :)

Несколько примеров:

Создадим 32bit, RAID-4 aggregate с именем aggr1 из 2-ух дисков 0c.00.1  и 0c.00.2:

FAS2040-A> aggr create aggr1 –B 32 -t raid4 -d  0c.00.1  0c.00.2

Добавим к aggr1 один SAS диск размером 450Gb в Raid Group 0:

FAS2040-A> aggr add aggr1 1@408 –f –g rg0

Посмотрим информацию о aggr1, включая raidsize и raid groups:

FAS2040-A> aggr status aggr1 -v

Создадим aggragete с именем aggr2 содержащий в себе две полных raid group из 16 дисков и типом raid – RAID-DP (скорость при этом будет [самая медленная raid group]*2):

FAS2040-A> aggr create aggr2 32 -r 16 -t raid_dp

Обратите внимание на то, что в последнем примере мы не создавали никакие raid group, это делает за нас ONTAP, базируясь на типе raid и на размере raid group.

Volume

Логическая абстракция поверх aggregate, содержащая файловую систему и связанные с ним различный параметры, такие как расписание снимков. Бывают flexible (на данный момент как раз и представляют наибольший интерес) и traditional. Traditional – это том, лежащий на отдельном aggregate. Увеличивать его можно только добавлением дисков. Тома могут содержать файлы и каталоги, qtree, lun.

Свежесозданный aggregate девственно чист и пахнет ромашками. Он может содержать несколько совершенно отдельных независимых flexible томов. Flexible тома можно восстановить из снимка (snapshot), скопировать или, с помощью SnapMirror, поддерживать зеркало другого тома в пределах одного aggregate. С помощью технологии SnapLock можно создавать WORM тома.

Как только вы создадите на aggregate том, вы не сможете его удалить до тех пока все тома, лежащие на этом aggregate не будут переведены в режим offline. Это сделано для того, чтобы все протоколы, которые используют информацию, лежащую на томах, смогли в штатном режиме закончить работу с ними. В отличии от aggregate размер томов может быть как увеличен (до 16Tb для 32bit aggregate), так и уменьшен (до 20мб).

Том можно клонировать. В начале клон будет использовать одно место в aggregate с прародителем до тех пор пока вы не решите разделить их. Можно создавать клоны клонов :)

У тома есть 3 состояния – online, restricted (можно снимать копии, но доступ к информации запрещен) и offline.

Остановимся на командах по управлению томами, создав vol1 на aggregate aggr0 размером 10Gb и, затем, удалив его:

FAS2040-A> vol create vol1 -s volume aggr0 10g
FAS2040-A> vol offline vol1
FAS2040-A> vol destroy vol1 -f

Ключ -s может принимать значения none, file, volume и указывает на то, сколько места на диске должно быть зарезервировано. Volume резервирует все место, которое было указано при создания тома (10Gb из примера выше) и является значением по умолчанию. Ключ file говорит о том, что место будет зарезервировано для всех файлов и LUN для которых так же производилось резервирование. Ключ none отключает резервирование вовсе. Ключи file и none позволяют отдать томам больше места чем физически есть у aggregate.
Ключ -f удаляет vol1 без подтверждения и, как вы успели заметить, перед этим потребовалось перевести vol1 в режим offline.

Тома можно увеличить или уменьшить: vol size vol1 [+|-] number[k,m,g,t]

Qtrees

Концепция qtrees очень похожа на том и представляет собой опциональный третий уровень разделения дискового пространства. Диски собираются в aggregate, место на agreggate разделяется между томами, место в томах может быть поделено с помощью qtrees. Qtrees обладают большей гибкостью, занимаемое ими пространство может быть изменено в любое время.

Помимо квот пространства (/etc/quotas) qtrees позволяют вам применять такие атрибуты как oplocks (CIFS read-ahead caching, write back на стороне клиента без необходимости постоянно оповещать сервер о том, что идет работа с файлом, что уменьшает сетевой трафик) и security style на какую-то определенную часть файлов и каталогов вместо целого тома.

LUN

Он и в Африке LUN :) Так же как и тома LUN можно клонировать (ведет он себя при этом так же), разделить с родителем, создавать, удалять как на томе, так и в qtree. По умолчанию LUN резервирует под свой размер дисковое пространство.

Для создания LUN есть визард, который запускается командой lun setup. Делать это руками, понятно дело, никто не запрещает с помощью команты lun create.

Процедура подключения LUN примерно следующая:

На файлере создаем LUN, создаем igroup (iSCSI или FC), маскируем LUN за igroup (делается для того, чтобы хосты не видели LUN друг друга и не мешали работе).

На хосте: настраиваем FCP или iSCSI на подключения к таргету и форматируем LUN как обычный жесткий диск.

Хорошей практикой считается не создавать LUN на root томе. Убедитесь в том, что на томе нет файлов и каталогов, в противном случае создайте qtree, в котором планируется разместить LUN. Если к одному тому подключаются несколько хостов, то имеет смысл хранить LUN каждого хоста в отдельном qtree. Проверьте, чтобы на томе была включена опция create_ucode и давайте LUN осмысленные имена – разбираться потом что есть lun2, а что lun22 не очень круто :)