Сделать DUMP

27.02.2010

Что делать если Solaris завис намертво? На «break» с системного контроллера не реагирует, в OBP не переходит, если kmdb загружен – и в него не переходит, только reset спасает… Что подвесило – не понятно, походу баг в ядре, или драйвер кривой. Нужно понять в чем проблема, попробовать как-нибудь вытащить дамп при следующем подвисании.
Добавляем в /etc/system параметры:


set snooping=1
set snoop_interval=120000000

и перегружаем сервер.

Этот параметр включает Deadman таймер, который по 15-му прерыванию раз в секунду проверяет, обновилась ли переменная ядра lbolt. Если переменная lbolt не была увеличена за определенный период времени (по умолчанию 50 секунд, или 120 секунд, как в моем примере), то это вызовет панику.
Дальше – анализируем полученный дамп и делаем выводы.

Ссылки
Core Dump Management on the Solaris OS
Writing Device Drivers-Enable the Deadman Feature to Avoid a Hard Hang

Обычно, когда заканчивается место на файловой системе – ищем растущие файлы (обычно это логи всякие) и удаляем их.
Итак, как правильно удалять файлы? ;)
Проверяем, что этот файл не открыт каким-нибудь процессом:
fuser /dir/filename

Если файл занят, что прибиваем процесс (или делаем корректные действия, чтобы процесс отпустил файл), после этого удаляем.

А что делать, если никто ничего не проверял, файлик грохнули, а вот место не освободилось?
Читать полностью »

ILOM или ALOM

12.01.2010

Как правильно отметил jsn – если привык к ALOM, то ILOM поначалу сильно раздражает ;) А на серверах t5240, t5440 итд – по умолчанию установлен как раз режим ILOM.
Итак как перейти к привычному виду команд на системном контроллере с ILOM? Создаем нового пользователя и устанавливаем ему режим alom:

-> create /SP/users/admin
Creating user...
Enter new password: ********
Enter new password again: ********
Created /SP/users/admin
-> set /SP/users/admin role=aucro
Set 'role' to 'aucro'
->set /SP/users/admin cli_mode=alom
Set 'cli_mode' to 'alom'

( Роль можно также устанавливается так: -> set /SP/users/admin role=Administrator)

UPDATE: 2010.01.26
Найдена табличка соответствия между командами ilom и alom в html-виде для T5140-T5240:
Локальная версия / версия на сайте docs.sun.com

Ссылки в тему:
Sun Integrated Lights Out Manager 3.0 Supplement for Sun SPARC Enterprise T5440 Server
Рекомендую также в этом документе посмотреть табличку «ILOM and ALOM CMT Command Comparison»

На новых серверах Sun с поддержкой LDOM (t5440, t5240 итд) просто так в {ok} не перейдешь. Т.е. когда все в порядке – ‘init 0′ и ты там, а вот если какие-нибудь проблемы – тут все и начинается. Когда посылаешь break – вываливаешься в меню типа «нефиг, нафиг, пофиг» (reset, sync, continue). Причем ни reset, ни sync – в {ok} ни разу не приведут.
Итак, танцы с бубном:
Заходим на системный контроллер.
Если установлен режиме ILOM:

set /HOST/bootmode script="setenv auto-boot? false"
reset /SYS
start /SP/console

Если установлен режиме ALOM:

bootmode bootscript="setenv auto-boot? false"
reset
console

Ссылки в тему:
Sun Integrated Lights Out Manager 3.0 Supplement for Sun SPARC Enterprise T5440 Server

UPDATE: 2010.01.12

Есть такой убойный сервис у Sun, называется Shared shell. Нужен для предоставления удаленного доступа к telnet-ssh сервисам по https.
Обычно используют RemoteAdmin или что-нибудь подобное, чтобы удаленно настроить приложения, но очень часто у клиентов зарезаны порты и вообще, доступ к интернету сильно ограничен. Это приложение позволяет обойти эти ограничения для настройки терминальных приложений.
Это java приложение, работает через всякие прокси, хорошо себя ведет на слабых каналах. Позволяет предоставить полный доступ к консоли или доступ только для просмотра, тут же есть чат с поддержкой русского языка, карандашик, которым можно выделить что-нибудь. Один человек создает сессию, соединяется по telnet или ssh. Затем, меню «Conference-Invite» получает ключ, который отправляете человеку, который присоединяется к вашей сессии. Весь интерфейс интуитивно понятен. Вообщем – швейцарский нож, рекомендую ;)
Shared shell

shared_shell_1

shared_shell_2

Смотри также Когда навалом процессоров… Часть 1
Если процессоров не так прямо уж и много, или сервер состоит из системных плат, объединенных через общую шину (типа sf4800, sf6900, e25k итд) – то можно пойти другим путем – привязать процессы к процессорному сэту и запретить прерывания для этого сэта. Тем самым повышаем попадания в кэш, уменьшится трафик между системными платами, можно выделить как бы гарантированный квант процессорных ресурсов приложению.
Итак, пусть у нас средняя железка, 24 процессора. Создадим
процессорный сэт из процессоров 0-7
Читать полностью »

Смотри также Когда навалом процессоров… Часть 2
Для улучшения производительности в многопроцессорных (в том числе Multithreading ) системах с ОС Solaris можно использовать выделенные процессоры для обработки прерываний устройств ввода-вывода. Это позволяем снизить количество переключений контекста для процессоров, увеличить попадания в кэш, в конечном счете отдать больше ресурсов для обработки пользовательских задач.

Solaris 10:

Для того, чтобы привязать процессор к обработке прерываний устройства:
1.  Определяем процессор, на который попадает большинство системных прерываний по данному адаптеру (например по сетевому адаптеру nxge):
Читать полностью »

Несколько скриптов-однострочников для быстрого взгляда на то, как используется память в Solaris:

Физическая память:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /physmem/ { print "Physical memory = " $2 * pgsize/1073741824 "Gb"}'

Память ядра:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /pp_kernel/ { print "Kernel memory = " $2 * pgsize/1073741824 "Gb"}'

Разделяемая (shared) память:
ipcs -mb | awk '/^m/ {sm=sm+$7}END{ print "Shared memory " sm/1073741824 "Gb"}'

Свободная память:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /freemem/ { print "Free memory = " $2 * pgsize/1073741824 "Gb"}'

И еще, если присмотреться, то можно увидеть, как в awk можно выполнить команду shell и прочитать ее вывод ;)

Updated: 29.09.2009/Добавлен однострочник для свободной памяти. Вообщем-то получился не плохой скриптик – все однострочники в одном файле:
solarismem
Пример вывода:
# ./solarismem.sh
Physical memory = 31.2031Gb
Kernel memory = 3.29826Gb
Shared memory 12.9697Gb
Free memory = 13.5944Gb

До Solaris10 управлять мультипатингом MPxIO можно было только с помощью luxadm, да и то, очень ограничено.
В Solaris 10 появилась командочка mpathadm, которая позволяет облагородить этот процесс,
не танцевать с бубном, а нормально админить ;)

Итак, вспоминаем – включение MPxIO на весь сервер:
stmsboot -e ; reboot
Можно включить на некоторые порты итд ( man stmsboot )
Обычно этим и ограничиваются все настройки ;) но попробуем заглянуть глубже.

Диски

Посмотреть диски:
Читать полностью »

По мотивам стандартной документации Perlvar.

Считать целиком файл в переменную:

open (MOCK, $filename) or die "$!";
local $/;
# переопределяем встроенную переменную "разделитель строк" ($/ или $INPUT_RECORD_SEPARATOR или $RS)
$_ =<MOCK> ;    # захавать моск файл целиком
close (MOCK);

Напечатать содержимое массива:
@a=qw( 1 2fewf wf g ag f);
local $,="\n";
# переопределяем встроенную переменную "разделитель полей" ($, или $OUTPUT_FIELD_SEPARATOR или $OFS)
print @a;

Читать полностью »