В связи с нынешней активизацией на рынке SSD и Flash, возможно кому-то будет интересно посмотреть, какие продвинутые методы применяют разработчики решений, для преодоления присущей flash-memory по своей природе ограничений на число циклов записи. Ограничения сегодня уже достаточно далеко отодвинуты, но, тем не менее, совсем сбрасывать со счетов этот фактор нельзя. Основной метод, применяемый для преодоления этого недостатка, это так называемый wear-leveling. Что это, и как работает, в объяснении “на пальцах” найдено в FAQ компании Corsair (89KB, PDF).
Команда консоли sysstat похожа на vmstat и iostat свернутые в одну команду. Она сообщает данные производительности систем хранения, такие как CPU utilization, размеры дискового трафика, объемы ввода-вывода, как сетевого, так и по FC, а также трафик передачи данных на ленту, если она используется. При запуске без опций, sysstat печатает новую строку каждые 15 секунд, с базовым набором информации. Вы можете прервать вывод нажав control-C (^c) или установить при запуске определенный интервал работы (-c count ) для автоматической остановки через заданное время.
Список ключей команды:
-f статистика FCP -i статистика iSCSI -b расширенная статистика SAN (’blocks’) -u расширенная статистика загрузки системы (’utilization’) -x расширенный (’extended’) формат вывода. Включает в себя все доступные поля вывода.
Обратите внимание, что вывод производится в формате шире чем 80 символов, и предназначен скорее для “off-line” анализа, чем для непосредственного чтения с экрана.
-m отображает статистику по загрузке CPU на многопроцессорных системах. Применимо только на многопроцессорных системах, не работает на однопроцессорных.
Описания некоторых колонок вывода команды sysstat.
Cache age : возраст в минутах старейшего read-only блока в кэше. Значение в этой колонке показывает, насколько быстро операции чтения проходят через память системы; когда система читает очень большие файлы, значение buffer cache age будет низким. Кроме этого, если чтение преимущественно случайное, то cache age также будет низок. Если вы столкнулись с проблемой низкой производительности на чтении, то значение этого поля сможет помочь определить что вам нужно больше кэша, или нужно проанализировать работу приложения, чтобы снизить уровень “случайности” его запросов.
Cache hit : Величина в процентах для WAFL cache hit rate. Показывает, в скольки процентах читаемых с WAFL блоков они оказывались при этом уже в кэше. Прочерк в этой колонке, означает, что в измеряемый период данные не читались.
CP Ty : Тип (’type’) Consistency Point (CP). Показывает, что было причиной создания CP в рассматриваемом интервале. Тип CP может быть:
- не было CP в заданный интервал (не было записей на диск в указанный период времени)
(число) число CP, созданных в заданном интервале
B : Back to back CPs (CP generated CP) (система настолько загружена, что она начинает писать новую CP сразу за окончанием записи предыдущей)
b : задержанные back to back CPs (CP generated CP) (условия, вызвавшие состояние back to back стали хуже)
F : CP вызван заполнением NVLog (половина nvram log была заполнена, и он был сброшен на диск)
H : CP вызван high water mark (редко встречается. Система полностью заполнила одну половину nvram logs, и решила сбросить данные на диск).
L : CP вызван low water mark
S : CP вызван операцией создания snapshot
T : CP вызван таймером (каждые 10 секунд система хранения сбрасывает данные кэша на диск (flush))
U : CP вызван сбросом данных на диск (flush)
: продолжение CP с предыдущего интервала (означает, что CP все еще создается, например во время 1-секундного интервала)
Символ, следующий далее, показывает проходящую фазу создания CP на момент окончания интервала замера. Если CP завершился полностью во время интервала измерения, то второй символ будет пустой. Фазы могут быть следующие:
0 ??нициализация n обработка обычных файлов s обработка специальных файлов f сброс измененных данных на диск v сброс измененного суперблока на диск
Большинство перечисленных выше значений можно увидеть только в случае предельно малых интервалов замеров, или на сильно загруженных системах, так как сброс CP происходит очень быстро. Обычно в поле CP ty вы будете видеть ‘T’, штатный сброс Consistency Point по таймеру.
Давайте разберем пример.
sysstat.txt (для более удобного вида отключите в нотепаде word wrap и расширьте окно)
Что мы можем сказать о данной системе?
Это малозагруженная, практичеси находящаяся в покое система (параметры CPU, Disk Usage и Total), использующая CIFS и FCP (небольшие ненулевые значения показывают фоновые операции по этим протоколам). Большиство операций в этой покоящейся системе совершается в виде чтения содержимого кэша (значение Cache hit). Кэш практически пуст, на что указывает монотонное возрастание значения Cache age, данные лежат, и ничто их не вытесняет. Consistency Points создаются исключительно сбросом по таймеру, что нормальное поведение для незагруженной системы.
Довольно высокие значения Disk read write при малой загрузке CPU, практически нулевом сетевом траффике и операциях ввода-вывода по блочным протоколам указывает на работу процесса Disk Scrubbing, фонового процесса контроля целостности данных и дисков, при котором система перечитывает и перезаписывает данные на дисках, возможно также что работает дедупликация, хотя она обычно дает повыше чем 1-3% загрузку, также, возможно, это признак работы дефрагментации WAFL (wafl reallocate).
Так выглядит типичный вывод sysstat малонагруженной типовой системы NetApp FAS.
А вот так выглядит система под рабочей нагрузкой: sysstat3.txt
Как видите, уже заметно нагружен процессор (это FAS6070, поэтому запас еще весьма существеннен ;), около 20%. Так как система используется как SAN, то весь трафик идет по колонке FCP. Несмотря на заметную нагрузку, ниже приведенный отчет по utilization показывает производительность около 15000 IOPS, и около 23 MB/s чтения с дисков ( и 70-90MB/s по интерфейсам FC), это не перегрузило систему. Большой объем кэша на чтение позволяет 90% операций читаться из кэша, а не с дисков.
Возраст самого старого блока в кэше составляет примерно 10-12 минут, то есть кэш еще далек от заполнения.
Здесь уже периодически проскакивают символы, показывающие фазу сброса CP, и само время записи CP увеличилось, так как вырос объем записи, хотя он и составляет всего около 1/10 от объемов чтения.
Таким образом, используя даже штатные средства контроля и анализа системы, имеющиеся в административной консоли, можно увидеть много интересного.
В конце прошлого года организация glassdoor.com опубликовала результаты анонимного опроса сотрудников американских компаний (не только IT) и составила “топ-10 самых клевых, и самых злобных боссов” (a list of the naughtiest and nicest chief executives of 2008).
Любопытно было увидеть в топе лучших Дэна Уорменховена (Dan Warmenhoven, CEO of NetApp), в компании с Джобсом и Шмидтом (CEO Google), например.
?? совсем неожиданно было заметить в “боттоме” (заднице-10) Джонатана Шварца (Jonathan Schwartz, CEO of SUN), половина из 386 ответивших 50% отозвались о его работе как CEO неодобрительно (26%, тем не менее одобрили).
А у него такой имидж своего парня, блог там, за опенсорс стеной, все такое…
Подозреваю, что причина скорее в очень тяжелом положении в SUN и продолжающихся увольнениях в компании.
Начну, пожалуй, небольшую серию постов “записные книжки стораджадмина”. Наверняка у многих админов есть такие, куда пишутся какие-нибудь полезные команды и прочие админские хитрости, для имения под руками без “манов”.
Есть такие и для NetApp.
license add xxxx
Добавляет лицензию на ту или иную функцию системы
df -h
Отображает степень занятости дискового тома (volume)
df -i
Отображает использование inode на томе
df -A -h
Отображает степень занятости aggregate
maxfiles
Увеличивает число inodes на том
sysstat -us 1
начинает вывод значений загрузки (utilization) системы хранения с 1-секундным интервалом (для остановки - crtl-c)
statit -b / statit -e
Начинает (-b) или заканчивает (-e) performance workload sampling
nfsstat -d [-z]
Выводит статистику nfs с последней перезагрузки (-z обнуляет счетчики)
nfs_hist [-z]
Отображает гистограмму задержек операций nfs с последней перезагрузки (-z обнуляет счетчики)
aggr status -i
Отображает aggregate и тома, содержащиеся на каждом aggregate
date -u
Показывает дату в формате UTC
storage show disk -p
Показывает пути подключения (primary и secondary) для каждого диска
fcadmin device_map
Показывает, где какой диск в полках
nfsstat -l [-z]<br />
Показывает статистику по клиентам nfs.
lun stats -o
Отображает статистику загрузки lun
lun show -m
Отображает информацию о lun mapping
qtree stats
shows statistics per qtree
sysconfig [-a]
Отображает аппаратную конфигурацию системы (-a для более подробного вывода)
environment
Отображает статус состояния среды (температура, и т.д.) полок и шасси системы хранения
led_on 4a.17
Зажигает лампочку на диске 4a.17 (или любом другом) :)
disk_fw_update
Обновляет firmware дисков (может вызывать downtime если у вас не кластер!)
iscsi show initiator
Показывает подключенные iscsi initiators
rm /vol/vol0/some_file
Встроенная команда rm (только для файлов, но не для папок!)
version [-v]
Показывает версию Data OnTap вашей системы. -v показывает,
оптимизировано ли ядро.
ndmpcopy /vol/vol0/qtree1 /vol/vol1/qtree1
Копирование данных с тома на том, средствами самой системы хранения, при помощи NDMP
rdfile /etc/resolv.conf
Показывает содержимое текстового файла