Смотри также
Когда навалом процессоров… Часть 1
Когда навалом процессоров… Часть 2
Когда навалом процессоров… Часть 3

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

Итак, определим, на какой шине pci расположены адаптеры qlc :
# cat /etc/path_to_inst |grep \"qlc\"
"/pci@400/pci@2/pci@0/pci@1/pci@0/pci@2/SUNW,qlc@0" 3 "qlc"
"/pci@400/pci@2/pci@0/pci@1/pci@0/pci@2/SUNW,qlc@0,1" 4 "qlc"
"/pci@400/pci@2/pci@0/pci@2/pci@0/pci@2/SUNW,qlc@0" 7 "qlc"
"/pci@400/pci@2/pci@0/pci@2/pci@0/pci@2/SUNW,qlc@0,1" 8 "qlc"
"/pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0" 2 "qlc"
"/pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0,1" 11 "qlc"
"/pci@500/pci@2/pci@0/pci@2/pci@0/pci@2/SUNW,qlc@0" 5 "qlc"
"/pci@500/pci@2/pci@0/pci@2/pci@0/pci@2/SUNW,qlc@0,1" 6 "qlc"
"/pci@500/pci@1/pci@0/pci@1/pci@0/pci@2/SUNW,qlc@0" 9 "qlc"
"/pci@500/pci@1/pci@0/pci@1/pci@0/pci@2/SUNW,qlc@0,1" 10 "qlc"
"/pci@700/pci@2/pci@0/pci@3/pci@0/pci@2/SUNW,qlc@0" 0 "qlc"
"/pci@700/pci@2/pci@0/pci@3/pci@0/pci@2/SUNW,qlc@0,1" 1 "qlc"

Смотрим, какой процессор обрабатывает прерывания устройств на шине /pci@600
# pcitool /pci@600 -i
ino 6 mapped to cpu aa
Device: /pci@600/pci@1/pci@0/pci@4
Driver: pcieb, instance 42
ino 7 mapped to cpu 87
Device: /pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0
Driver: qlc, instance 2
ino 8 mapped to cpu 86
Device: /pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0
Driver: qlc, instance 2
ino 9 mapped to cpu 85
Device: /pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0,1
Driver: qlc, instance 11
ino a mapped to cpu 84
Device: /pci@600/pci@1/pci@0/pci@4/pci@0/pci@2/SUNW,qlc@0,1
Driver: qlc, instance 11
...

номер прерывания (ino) и номер процессора (cpu) в шеснадцатеричном виде.

Перенесем прерывание ino 7 с процессора 87 на процессор ff
# pcitool /pci@600 -i ino=7 -w cpu=ff
Interrupts on ino 7 reassigned: Old cpu:87, New cpu:ff

Ну и далее — переносим все прерывания устройств ввода-вывода на один или несколько выделенных процессоров и объединяем их в процессорный сэт ( psrset ).

  1. luxadm. Часть 1. Посмотреть
  2. luxadm. Часть 2. Сделать

Что можно сделать с помощью команды luxadm

При мультипатинге STMS(MPXIO) переключение пути с primary на secondary (на дисковых массивах в режиме active-passive). Посмотреть какие пути primary/secondary с помощью luxadm display /dev/rdsk/c14t6d0s2
# luxadm failover secondary /dev/rdsk/c14t6d0s2
Error: Device does not support failover
# luxadm failover primary /dev/rdsk/c14t6d0s2
Error: Device does not support failover

Переинициализировать порт hba (погасить и зажечь порт). Помогает при залипаниях и добавлении новых дисков со стороны массива.
# luxadm -e forcelip /dev/cfg/c3
# tail -100 /var/adm/messages
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.05F1]emlxs1: NOTICE: 730: Link reset. (Resetting link...)
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.031F]emlxs1: NOTICE: 710: Link down.
Oct 26 17:32:22 pioneer emlxs: [ID 349649 kern.info] [ 5.0631]emlxs1: NOTICE: 730: Link reset.
Oct 26 17:32:24 pioneer emlxs: [ID 349649 kern.info] [ 5.0549]emlxs1: NOTICE: 720: Link up. (4Gb, fabric, initiator)

Перевести устройство в offline (полезно при удалении определенных LUNов с массивов)
# luxadm -e offline /dev/rdsk/c14t6d0s2

Перевести устройство в online
# luxadm -e online /dev/rdsk/c14t6d0s2

Послать устройству команду reset
# luxadm -e dev_reset /dev/rdsk/c14t6d0s2

Зажечь или погасить лампочку на диске (работает только на некоторых устройствах)
# luxadm led /dev/rdsk/c14t6d0s2
# luxadm led_on /dev/rdsk/c14t6d0s2
# luxadm led_off /dev/rdsk/c14t6d0s2
# luxadm led_blink /dev/rdsk/c14t6d0s2

Обновить прошивку на hba (лучше пользоваться загрузчиком из firmware патча)
# luxadm fcode_download -d /path_to_firmware

  1. luxadm. Часть 1. Посмотреть
  2. luxadm. Часть 2. Сделать

Команда luxadm используется для работы с различными fc устройствами. Создавалась она для администрирования внутренних дисков серверов sf880 и fc-al, а в дальнейшем добавился функционал и эта утилита стала основной при работе с fc (в Solaris 10 появились команды fcinfo и mpathadm ). Синтаксис у команды непростой, но попробую ее причесать.
Итак, какие аргументы можно использовать
физический путь к fc портам hba или контроллеру (типа /devices/pci@700/pci@0/pci@c/SUNW,emlxs@0,1/fp@0,0:devctl или /dev/cfg/c6 )
WWN массива (типа 10000000c98b08d3)
путь к диску или ленте (/dev/rdsk/c6t1d0s2 или /dev/rmt/2)
Читать полностью »

На серверах c ILOM (это сервера Sun/Oracle T5x40, T3-x, T4-x, X22x0 итд ) можно смотреть и администрировать сообщения fma (Fault Management) как из Solaris (команды fmadm, fmdump, итд), так и из ILOM.  Если вдруг после сбоя система не грузится, то диагностировать можно с системного контроллера:
Читать полностью »

Век живи — век учись ;)

Многие (в том числе я) обычно пользуются самым простым набором команд в vi для удаления и вставки:

dd — удалить строку

yy — скопировать строку в буфер

p — вставить из буфера

итд

Откройте для себя маркер — поставили в любом месте и применили уже изученные команды для вставки и удаления:

ma — поставить маркер

d’a — удалить все от текущей строки до маркера

y’a — скопировать строки от текущей до маркера в буфер

p — вставить из буфера после текущей строки

‘a — перейти к маркеру a

ЗЫ: на самом деле маркеров можно установить 26 — по количеству символов латинского алфавита, например:

ma — поставили один маркер

mb — поставили второй маркер

mc — поставили третий маркер

и соответственно

‘b — перейти к маркеру b

d’c — удалить от текущей строки до маркера с

Ссылки в тему:

Справка по редактору vi

Путь для установленного DeviceManger (HDvM):
http://host:23015/DeviceManager/

Путь для установленного Storage Navigator Modular 2 (SNM2):
http://host:23015/StorageNavigatorModular/

Оба продукта должны быть установлены на один хост.
Если предполагается использовать старые модульные массивы (9200,9500, ams), то необходимо запустить скриптик /opt/HiCommand/HiCommandServer/tools/launchapptool.sh
Не забыть добавить нового пользователя с админскими правами на модульном массиве и при добавлении массива в HDvM использовать именно его (пользователя root использовать нельзя).

Остановить/запустить сервисы HDvM:
/opt/HiCommand/Base/bin/hcmdssrv { -start | -stop | -check | -status }

Агент HDvM :
При установке агента лучше не менять логин/пароль (HaUser/haset)
Остановить/запустить агента:
/opt/HDVM/HBaseAgent/bin/hbsasrv { start | stop [-f] | status }

Обновление vxvm при LU:

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

При переходе с ufs на zfs на есть только одна засада — нужно чтобы загрузочный диск имел SMI лэйбл и новый zpool располагался на слайсе (для порядка — лучше всего на слайсе 0).
Итак, если нужно перелэйбливаем диск и удаляем ненужные разделы.

Создаем слайс 0 размером с весь диск:
Читать полностью »

В продолжение этой заметки — та же задача, для x86-й версии соляриса.

Идеология немного другая — вначале создаём MBR-раздел на сыром диске,  и уже в нём нарезаем привычные слайсы.

1. Создаём раздел с помощью fdisk. Raw-устройство в формате cxtxdxpx:

fdisk -B /dev/rdsk/c0t0d0p0

2. Создаём слайс(ы) с помощью format, либо копируем их посредством fmthard. В качестве аргументов нужно уже использовать формат cxtxdxsx:

echo label | format /dev/rdsk/c0t0d0s2
prtvtoc /dev/rdsk/c0t0d0s4 | fmthard -s - /dev/rdsk/c1t0d0s4

То что в предыдущих версия Solaris запускалось из /etc/init.d — /etc/rc?.d, в Solaris 10 устанавливается и управляется как службы (SMF — Service Management Facility)
Как быстро создать свою службу, без того, чтобы перерыть кучу документации ?
Две небольшие инструкции, в которых все очень подробно описано:

Для создания SMF конфига манифеста можно воспользоваться шаблонами из вышеприведенных источников, а можно воспользоваться
Читать полностью »