Archive for the ‘commands’ Category.

Полезные команды: nfsstat

Несколько ранее я рассказывал уже о средствах анализа нагрузки системы по протоколу CIFS, например с помошью команды cifs top. Для анализа статистики нагрузки протокола NFS пригодится команда nfsstat.

В своем обычном виде команда nfsstat показывает общую статистику по всму трафику NFS и RPC, и полезна при настройке и поиске ошибок сетевой передачи. Однако, если вы включите в системных опциях Data ONTAP по умолчанию выключенную опцию nfs.per_client_stats.enable, то вам будет доступна статистика отдельно по каждому клиенту NFS (под клиентом понимается хост, но не пользователь).

Включим учет статистики раздельно по клиентам:

fas1> options nfs.per_client_stats.enable on

fas1> nfsstat –h [ip | hostname] – покажет статистику отдельно по конкретному клиенту

fas1> nfsstat –l – покажет статистику по 256 клиентам по убыванию NFS-активности

Подробнее о команде:
http://now.netapp.com/NOW/knowledge/docs/ontap/rel732_vs/html/ontap/cmdref/man1/na_nfsstat.1.htm

FlexShare - управление приоритетами томов

FlexShare это технология управления приоритетами в обслуживании томов данных, своеобразный квази-QoS (хотя и не QoS в чистом виде). Эта технология входит во все современные версии Data ONTAP, бесплатна, однако сравнительно малоизвестна.
FlexShare задает отноительный приоритет (а не абсолютный, как в “чистом” QoS) обслуживания для томов данных. Если с ее помощью вы зададите пониженный приоритет томам данных, используемым для, например, хранения дистрибутивов, образов виртуальных машин, резервных копий, и прочих данных, время доступа к которым не является для ваших задач критичным, и наоборот, повысите приоритет для томов с базой данных или критичными для бизнеса виртуальными машинами, то контроллер будет распределять свое “внимание” и процессорные “тики” не равномерно, как по умолчанию, а в соответствии с заданными приоритетами. В результате вы сможете несколько улучшить показатели быстродействия для критичных данных.

no FlexShare

no FlexShare


with FlexShare

with FlexShare

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

fas> priority on

Для более детального управления следует воспользоваться командой priority set:

fas> priority set volume vol1 level=high system=low cache=reuse

Эта команда указывает высокий приоритет обслуживания тома vol1 для операций пользователей и приложений, устанавливает для данного тома пониженный приоритет системным задачам его обслуживания, а также задает политику использования кэша с более быстрым сбросом (flush) его содержимого, по сравнению c политикой по-умолчанию.
Уже установленные приоритеты можно посмотреть с помощью команды:
fas> priority show volume

Остальные опции команды priority вы как всегда можете найти во встроенном хелпе и в выводе команды help priority.

Скорость RAID Reconstruction

При выходе из строя жесткого диска система начинает процесс RAID reconstruction. Время его завершения зависит от загрузки системы задачами ввода-вывода и установленного приоритета задачи реконструкции. Это приоритет (вернее степень влияния на производительность системы в целом задачей реконструкции) может быть настроен с помощью системной опции:

fas1> options raid.reconstruct.perf_impact [high | medium | low]

Обратите внимание, эта опция и ее изменение глобально (для всех RAID-групп системы в целом), и, что важно, не работает для уже запустившейся reconstruction. То есть увидеть слишком долгий процесс восстановления, поменять ее на high и ждать, что процесс ускорится, не стоит.

По умолчанию она установлена в medium, и менять ее стоит только если вы в самом деле хорошо представляете зачем вы это делаете.

Недокументированные команды: hammer

В прошлый раз мы нашли и посмотрели команду filersio – внутренний генератор нагрузки ввода-вывода. Однако оказывается, такая штука, как stress test tool, внутри Data ONTAP есть не одна.

Еще один инструмент нагрузочного тестирования системы хранения – hammer

*** WARNING *** Hammer is a system level stress test.
CPU utilization may approach 100 percent
with very high disk IO rate when hammer is run.
This may adversely affect system performance
and may cause loss of filer service.
Hammer is an undocumented, unsuppported command.

usage: hammer [abort|pause|restart|status|
       [-f]<# Runs><fileName><# BlocksInFile> (<# Runs> == -1 runs hammer forever)|
       fill <writeSize> (use all available disk space)]

hammer это в чистом виде stress load generator, не делающий ничего, кроме нагрузки. Если вы хотите не просто “подвесить систему”, но еще и наблюдать за тем, что эта нагрузка дает вам в плане показателей, воспользуйтесь средствами sysstat или stats.

filer1*> hammer -f 5 /vol/vol0/hammer.txt 400
Mon Dec  8 12:32:02 GMT [blacksmith:warning]: blacksmith #0: Starting work.
filer1*> hammer status
blacksmith #0: file /vol/vol0/hammer.txt, 580 KB of 1600 KB writesize 4096 bytes, iteration 1 of 5 – Writing
filer1*> hammer status
blacksmith #0: file /vol/vol0/hammer.txt, 1600 KB of 1600 KB writesize 4096 bytes, iteration 1 of 5 – Writing
filer1*> hammer status
blacksmith #0: file /vol/vol0/hammer.txt, 652 KB of 1600 KB writesize 4096 bytes, iteration 2 of 5 – Writing
filer1*> hammer status
blacksmith #0: file /vol/vol0/hammer.txt, 1600 KB of 1600 KB writesize 4096 bytes, iteration 2 of 5 – Writing
filer1*> Mon Dec  8 12:32:13 GMT [blacksmith:info]: blacksmith #0: No errors detected. Stopping work

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

Недокументированные команды: filersio

В недрах Data ONTAP кроме малоизвестных команд можно отрыть и какие-то совсем загадочные вещи. Занятие по отрыванию таких загадок никак нельзя рекомендовать как безопасное, но иногда находятся интересные штуки.

Вот, например, команда filersio (доступна в advanced mode)

filer1*> filersio
The following commands are available; For more information
filersio help
asyncio_pause asyncio_active spc1
status stop

Эта команда включает встроенный генератор ввода-вывода нагрузки на систему хранения.

filer1*> filersio asyncio_active 50 -r 50 4 0 10m 60 5 /vol/vol0/filersio.test -create -print_stats 5
filersio: workload initiated asynchronously. Results will be displayed on the
console after completion
filersio: starting workload asyncio_active, instance 0

Read I/Os       Avg. read       Max. read       Write I/Os      Avg. write      Max write
                latency(ms)     latency(ms)                     latency(ms)     latency(ms)
6087            0               11              6216            3               981
4410            0               471             4300            5               1551
5323            0               11              5375            4               1121
5439            0               113             5379            4               1151
4354            0               105             4304            5               1674
4307            0               411             4300            5               1171
5459            0               20              5371            5               1260
5384            0               180             5379            4               1071
5439            0               211             5375            4               1011
4396            0               71              4300            5               1311

Statistics for active_active model, instance 0
Running for 60s
Total read latency(ms) 16383
Read I/Os 51687
Avg. read IOPS 861
Avg. read latency(ms) 0
Max read latency(ms) 471
Total write latency(ms) 286501
Write I/Os 51413
Avg. write IOPS 856
Avg. write latency(ms) 5
Max write latency(ms) 4891
filersio: instance 0: workload completed successfully

Напомню еще раз, что все команды, доступные в advanced mode, могут быть небезопасны, не требуются для повседневного администрировани и конфигурирования, и использование их требует ясного понимания возможных результатов и рисков использования и настоятельно не рекомендуется на “боевых” системах с рабочими даными. ?? уж тем более это так для команд из “недокументированного” и “слабодокументирванного” списка.

vol copy или ndmpcopy?

Администратору системы хранения иногда приходится перебрасывать данные с тома на том. Чуть ранее я уже рассказал про один из способов решения, инструменте ndmpcopy, позволяющий произвести копирование данных тома силами самой системы хранения, по протоколу NDMP.

Однако существует и другой способ копирования содержимого тома, это команда vol copy. Оба эти способа бесплатно присутствуют во всех системах хранения NetApp, но имеют отличия, давайте рассмотрим разницу.

ndmpcopy это копирование по сетевому протоколу NDMP. Даже когда это происходит в пределах одной системы, все равно это копирование происходит по сетевому сокету, и, как правило, этот процесс медленнее, чем копирование vol copy, который осуществляется непосредственно, а не по сети.

vol copy копирует содержимое тома поблочно, в отличие от ndmpcopy, причем копируется также и структура блоков, в том виде, в каком она находится на томе. То есть, например, сильно фрагментированный том, при копировании с помощью vol copy будет скопирован также фрагментированным, в то время, как копирование ndmpcopy происходит “пофайлово”, и при этом копирование сложит скопированные данные наиболе оптимальным образом.

Ограничения при использовании vol copy таковы:

  • Том-источник данных и том-получатель данных должны быть одного типа. ??ли оба flexible, или оба traditional
  • Том-получатель должен быть равен или больше по объему, чем том-источник
  • Обе системы хранения, участвующие в копировании, должны быть в доверительных отношениях (trust relationship), на обоих должен быть включен доступ по rsh (Remote Shell)
  • Том-получатель на момент начала копирования должен существовать
  • Нельзя скопировать root volume
  • Том-получатель будет полностью затерт содержимым тома-источника
  • Состояние тома-источника на момент запуска процесса должно быть online, а тома-получателя – offline.

Полезные команды: filestats

Малоизвестной, но полезной командой для администратора NAS является команда filestats.
С ее помощью можно быстро составить картину распределения файлов на системе хранения по размеру, времени хранения, владельцу, и использовать это в планировании и администрировании.

Вот простой пример использования. Выведем статистику по файлам тома vol0 (системного root-vol), взяв для анализа снэпшот hourly.1:

toaster> filestats volume vol0 snapshot hourly.1
VOL=vol0 SNAPSHOT=hourly.1
INODES=274528 COUNTED_INODES=875 TOTAL_BYTостой примеррES=458354190 TOTAL_KB=143556

FILE SIZE         CUMULATIVE COUNT       CUMULATIVE TOTAL KB
1K                465                    1576
10K               832                    3356
100K              853                    3980
1M                856                    4660
10M               864                    32808
100M              875                    143524
1G                875                    143254
MAX               875                    143254

AGE(ATIME)        CUMULATIVE COUNT       CUMULATIVE TOTAL KB
0                 0                      0
30D               841                    132780
60D               850                    132932
90D               859                    143464
120D              875                    143528
MAX               875                    143528

UID               COUNT                  TOTAL KB
#0                873                    143528
#20041            2                      0

GID               COUNT                  TOTAL KB
#0                851                    41556
#30               21                     1972
#1                3                      0

Обратите внимание: счетчик количества выводится “накопительный” (cumulative). То есть, например, число файлов размера “до 1K” равно 465. А число файлов “до 10К (включая и файлы, посчитанные ранее в “до 1К”)” – 832. Таким образом число файлов “больше 1К, но меньше 10К” равно 832-465=367.

Эта же команда имеет и некоторые другие ключи и способы использования, смотрите примеры и описания во встроенной помощи и “манах”.

Полезные команды: led_on

??ногда в работе админа случается необходимость найти и идентифицировать, например в целом шкафу дисков, какой-то конкретный. Допустим, вы не ведете подробную документацию по установленой системе (а зря), и расположение дисков и полок системы у вас не записано. Допустим вы хотите извлечь из стойки spare disk и переставить его в другую полку. Как найти правильный диск, и не выдернуть, ненароком, неправильный, рабочий?

На помошь приходит специальная команда led_on

fas1> priv set advanced – включаем режим повышенного приоритета (будьте осторожны!)
fas1> led_on 0c.54 – зажигает на диске с данным номером светодиод (LED) желтого цвета
fas1> led_off 0c.54 – гасит светодиод на диске с данным номером
fas1> priv set – выводит консоль из режима повышенных привелегий

Аналогично работает команда blink_on/blink_off, с понятным отличием, она светодиодом мигает.

Полезные команды: source

Хотя в Data ONTAP и нет таких мощных скриптовых средств командной строки, как bash или PowerShell в Windows, но что-то для простейших скриптовых действий все же есть.

Команда называется source, и просто воспроизводит из поданного на вход файла команды одну за другой.

fas1> source /etc/my_scripts/vol_create.txt

Она может применяться, например, для массового и однообразного изменения каких-то параметров, например на множестве идентичных томов.

Сама по себе команда весьма примитивна, и имет множество недостатков и ограничений, о которых стоит помнить, начиная ее использовать.

  • ??сполнение не прерывается и не останавливается в случае ошибок, так что следует быть особенно внимательным при создании скрипта, условием в котором является обязательное выполнение каких-то предшествующих шагов. Особенно внимательно проверяйте опечатки и ошибки в аргументах и ключах.
  • Команда не умеет делать пайп (|) или перенаправление вывода в лог-файл.
  • Не поддерживаются wildcards (?, *, %).
  • Нет условного выполнения (IF THEN ELSE)
  • Нет операции паузы, так что команды выполняются последовательно и одна за другой, даже если какая-то команда может быть и не завершила операцию (например процесс выполнения команды продолжителен). Простой workaround – запускать команду sysstat между командами.
  • Почти единственное отклонение от простого листинга команд – возможность использовать # в качестве знака комментария. Строка, начинающаяся с # в подаваемой на вход source последователности команд, игнорируется.

Полезные команды: dd

Несмотря на то, что Data ONTAP не только не является “Линуксом”, она даже UNIX в общепринятом смысле этого слова не является (не устаю это повторять снова и снова, потому что это один из самых распространенных мифов в отношении NetApp), тем не менее, для удобства администраторов, а первыми администраторами систем хранения NetApp были, конечно же, администраторы UNIX-систем, в ней многое сделано “очень похожим на UNIX”. Структура директорий, правила именования файлов, и даже большинство команд похожи на свои аналоги из мира Юникса.

Вот, например, даже имется хорошо известная команда dd, хотя она и немного спрятана.

Отдайте в консоли команду

fas1> priv set advanced

Эта команда переведет вас в специальный “расширенный режим”, в котором вы получаете доступ к расширенному набору команд, но, ВН??МАН??Е, эти команды могут быть опасны для работы системы, и для сохранности данных! Пользуйтсь ими с ответственностью, и исключительно на свой страх и риск!
После ввода этой команды вы заметите изменившийся значок подсказки. Он указывает вам на то, что вы работаете в режиме повышенных привилегий. Для того, чтобы вернуться на обычный уровень, введите команду priv set admin или просто priv set

Среди множества дополнительных команд вам будет доступна и команда dd – disk dump, прямого посектороного копирования.

fas1*> dd if=/vol/vol0/etc/rc of=/vol/newroot/etc/rc – копирование rc в новое место 
  
Обратите внимание, вы НЕ можете запустить команду dd в фоне (еще раз напомню, что Data ONTAP это не линукс, и внешняя схожесть команд еще не значит внутреннего подобия), поэтому, если вы используете dd, то все копирование будет происходить “основной задачей”, наберитесь терпения. Кстати это еще один повод использовать вместо dd что-нибудь более продвинутое, например ndmpcopy.
Прервать работу dd можно нажатием Ctrl-C