NB M7-8 per corecluster calculation (L3 cache aware)

SUN_logo2_smallDo-not-forget 😉 Very dirty shit for LDOMprimary domain with CPU intensive workload profile also with 2nd Guest Root dom.

#!/bin/bash
# per-corecluster spreading cores on cpu
# m7-8, 1pdom, 2ldom (primary root+guest root domain)
# 

cid=0           # 1st cid (possible shift when using explict control domain)
factor=1        # spreading core factor
coreshift=4     # shift into corecluster
echo "# per-core-cluster config for primary"
echo -n "ldm set-core cid="
while [ $cid -le 511 ] ; do 
        let n0cid=cid           # 1st
        let n1cid=cid+factor*1  # 2nd
        let n2cid=cid+factor*2  # 3..
        let n3cid=cid+factor*3  # 4...
        let n4cid=cid+factor*4+coreshift
        let n5cid=cid+factor*5+coreshift
        let n6cid=cid+factor*6+coreshift
        let n7cid=cid+factor*7+coreshift
        let cid=cid+64 
        echo -n "$n0cid,$n1cid,$n2cid,$n3cid,$n4cid,$n5cid,$n6cid,$n7cid"
        [ $cid -lt 511 ] && echo -n "," 
done
echo " primary"
echo "# check with lgrinfo after rebooting "

guest next…

#!/bin/bash
# per-corecluster spreading cores on cpu
# m7-8, 1pdom, 2ldom (primary root+guest root domain)
# 

cid=0            # 1st cid (possible shift when using explict control domain)

echo "# per-core-cluster config for dom1"
echo -n "ldm set-core cid="
while [ $cid -le 511 ] ; do
        let i=0
        while [ $i -lt 4 ] ; do # use 4 core-cluster per CMP
                let k=0
                while [ $k -lt 4 ] ; do # 4 core ...
                        let tmp=$cid+16+$i*8+$k # 16 cc shift 8 number of possible cores
                        echo -n $tmp
                        echo -n ","
                        let k++
                done
                let i++
        done
        let cid=cid+64 # next CMP
#        [ $cid -lt 511 ] && echo -n "," 
done
echo " dom1"
echo "# check with lgrinfo after rebooting "

NB LDOM (and so on) rpool clone w/ beadm

SUN_logo2_smallTask: copy current ZFS rpool (only for boot) to another physical destination. New disk is c2t1d0.

zpool create -f rpool_new c2t1d0
beadm create -p rpool_new sol11.3.6.5.0
zpool set bootfs=rpool_new/ROOT/sol11.3.6.5.0 rpool_new
installboot -F zfs \
 /usr/platform/`uname -i`/lib/fs/zfs/bootblk \
 /dev/rdsk/c2t1d0s0
# as required by installation
zfs create -V 8G -o refreservation=8G rpool_new/dump 
zfs create -V 4G -o refreservation=4G rpool_new/swap
beadm mount sol11.3.6.5.0 /mnt
# vim /etc/vfstab etc you need
# zfs create -o mountpoint=/export rpool_new/export # just ignore error...
# zfs create ... as you need 
# also may be copy something you need
beadm unmount sol11.3.6.5.0
zpool export rpool_new

Do not forget run re-run dumpadm after booting from new rpool_new and run sysconfig unconfigure –destructive . That’s it.

DTrace one-liners

SUN_logo2_small
В очередной раз задолбался искать в плюсике…
What writing in directory:

dtrace -qn 'syscall::write*:entry /pid!=$pid && fds[arg0].fi_fs=="zfs" && fds[arg0].fi_mount == "/export/home/ilyxa" / { printf("Process %s \t PID %d \t write to %s \n", execname, pid, fds[arg0].fi_pathname); }'

What writing in file:

dtrace -qn 'syscall::write*:entry /fds[arg0].fi_pathname=="/etc/hosts~"/ { printf("Process %s \t PID %d \t write to %s \n", execname, pid, fds[arg0].fi_pathname); }'

И снова простота от ZFS с Solaris Kernel Zones / LDOMs

Продолжаем ранее начатый монолог про простоту ZFS и функционал, который может доставить некоторые проблемы в реальной эксплуатации, короче, очередной занудный пост о пользе снэпшотов и вреде от упрощения администрирования. Правильно делать вот так, мы же сделаем все неправильно! 🙂

Далее, чтобы не бегать по тексту, и читать напрасные слова, эта заметка – просто маленькое предостережение админам, я лично сам такие вот странности воспринимаю как нюансы и не особо заморачиваюсь насчет возможных последствий, используя все предоставленные в распоряжение механизмы (мгновенные снимки на ZFS обычно полезно делать, даже перед изменением банальных параметров, есть лишь ряд очень ограниченных ситуаций, когда использование снимков на ZFS приведет к возможной остановке приложения). Важно четко понимать, каким образом себя можно подстраховать, ну а мне же всегда интересно разгребать такие ситуации на живых системах (к сожалению, в некоторых случаях констатируя потерю данных).

Нужно: увеличить размер rpool в Solaris Kernel Zone (или гостевой домен – не суть важно – главное zvol “внизу” и поверх него rpool в “гостевой” ОС).

ZFS vol + volsize = большая проблема

… или занудный пост о пользе снэпшотов и вреде от упрощения администрирования…

Дано: Solaris 11, iSCSI target (которые новые уже, с sbd* и it*), том ZFS (создан давно, работает), роздан по iSCSI на Win 2003 (далее в примере – рабочая солярка 11.2 с последними патчами, без данных CU, для быстрой оценки перспектив восстановления, в процессе были получены совсем любопытные результаты).

root@snooky:~# zfs get volsize storarray/test_vol
NAME                PROPERTY  VALUE  SOURCE
storarray/test_vol  volsize   512M   local

Надо увеличить размер тома. Совсем просто:

root@snooky:~# zfs set volsize=1024K storarray/test_vol
root@snooky:~# zfs get volsize storarray/test_vol
NAME                PROPERTY  VALUE  SOURCE
storarray/test_vol  volsize   1M     local

Вместо 1024M поставили 1024K.

Тома с данными больше нет.

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

Есть, правда, один нюанс – мгновенные снимки перед началом проведения любой операции. Работают безотказно, проверено, но, увы, не всегда они есть…

Далее простыня с игрушками, картина с IT + win + NTFS еще более удручающая и намного менее наглядная:

SUNW Oracle Solaris 11.2 Beta

Ну, поздравляем себя и Oracle с выходом Solaris 11.2.

Кратенько по основным “фишкам” релиза.

Во-первых – это бета. Никакой объявленной программы Solaris Express, никаких рассуждений – открытая бета, которую может добыть каждый, при желании, конечно. Это – не очень хорошо, не позволит даже попробовать систему на мало мальски большом инстансе Oracle DB EE, только игрушечки вокруг да около. Плохо.

Во-вторых, модное слово Cloud зОхватило мир, мозги и операционные системы. Сие означает, что полный (не уверен) Cloud Stack в виде проекта OpenStack теперь интегрирован в ОС Solaris. Видимо, сие круто, но пока не понятно.

В-третьих, как попробовать. pkg set-publisher -g http://pkg.oracle.com/solaris/beta/ solaris – раз. pkg update –accept – два. Все остальное читаем здесь.

Ну теперь – что новенького. Я попытаюсь написать по-русски, переводя термины, получится не айс, скорее всего, но позволит сложить общее впечатление.

После того, как осмотрюсь в инсталляции – что-нибудь добавлю свое.

  • Ядерные Зоны (Kernel Zones) (не ядреные). Новый уровень изоляции зон, полностью независимое ядро, действительно крутая вещь, которую в ближайшее время засмотрим и оценим.
  • Унифицированные архивы (Unified Archives). Средства клонирования инстанции ОС, насколько я понимаю – аналог flar, мощный facelift. Круть, есть куда притулить.
  • Автоматизация IT-процессов с помощью Puppet. Ни добавить – ни убавить. Удобная простая “морда” для выполнения задач на множестве узлов. Будет засмотрено отдельно. Хомячкам вроде меня понравиться функционал веб-морды (если оно там есть).
  • Новая пакетная группа solaris-minimal-server, позволяет ставить базовый серверный набор без десктопов и прочей “шелупони”.
  • Неизменные глобальные зоны (Immutable Global Zones). Собственно, хорошая штука для стабильной инсталляции, выставленной “мордой”, например, в интернеты – включил, корень переводится в RO.
  • Простое зеркалирование репозитариев (Easy Repository Mirroring). Удобная штука, не нужно теперь морочиться и подновлять несколько репозиториев руками, опробуем обязательно.
  • Рекурсивный pkg (Recursive Package Operations in Oracle Solaris Zones). Запускаем одной командой установку пакета по всем зонам на хосте. Удобно и иногда нужно.
  • Базовая инсталляция IPS (Baseline Installations with IPS). Мегаполезная для меня штука – ставишь какой-либо пакет, он натягивает с собой еще целую пачку зависимостей, от которых потом избавляться – отдельная песня (а зависимостей там обычно бывает в разы больше по объему, чем самого пакета!). Теперь откат на базовую инсталляцию – простая команда, все, что лишнее – будет снесено. СУПЕР.
  • Отчет о ходе исполнения ZFS send. Мега-вещь, позволяет легко и непринужденно мониторить процесс передачи снимка. Очередной раз – долой колхоз! 🙂
  • Увеличение скорости работы resilver (актуализации данных, не могу подобрать верного слова) ZFS. Существенно скажется при замене диска, теперь поддерживаются последовательные операции. +40% в карму к скорости. Ну и параллельные коммит тоже плюсом – ибо ранее это было узким местом.
  • Динамическое изменение конфигурации зон. Это одна из сурово востребованных “фичек” в Solaris начиная с момента появления зон. Теперь можно без колхоза, плясок с бубном и тыкания палкам без остановки зоны: изменять к-цию сети, добавлять-удалять файловые системы, управлять менеджером ресурсов.
  • Автоматизация переименования зон. Это очень славно, теперь можно переименовать зону одной командой.
  • Утилиты мониторинга сетевого трафика ipstat и tcpstat. DTrace рулит, без комментариев 😉 Очень востребованные утилитки.
  • Наконец-то у команды svcs появился ключ для просмотра логов сервиса.
  • Оптимизация ядерного дампа – оно теперь (должно быть) режется на куски, актуально для больших машин, удобно загружать.
  • Команда numatop. Наконец-то (за уже более чем 8 лет) активной работы на NUMA-like машинах начинают появляться специфичные средства для работы с ними.
  • Новый драйвер qlc (SunFC Qlogic FCA v20140211-5.00) – смотрю и с перспективой, и с опаской, ибо есть кое-какие предпосылки.
  • netstat -f inet -u умеет изобразить pid процесса.

Ну и далее все подряд.

NB Note Solaris SMF VBox Autostart VMs on Host Boot (без “костылей”)

На память оставим. Мне нужно, чтобы некоторые (маленькие) сервисные виртуалки запускались автоматом на Solaris Host. Долой костылинг, даешъ прямые решения (ну почти прямые).

# если не прописать - будет задействована группа staff, а у меня в ней еще несколько пользователей
# без виртуалок, скрипт /opt/VirtualBox/smf-vboxautostart.sh start будет валиться с ошибкой и
# сервис svc:/application/virtualbox/autostart:default будет становиться в maintenance, если же пользователь
# один - можно ничего не делать
sudo svccfg -s svc:/application/virtualbox/autostart:default setprop config/vboxgroup = vboxuser
# все равно будет взят по умолчанию, но мы пропишем "в лоб"
sudo svccfg -s svc:/application/virtualbox/autostart:default setprop config/config=/etc/vbox/autostart.cfg
# по умолчанию всем (всей группе!) до свидания, пройдемся по исключениям (они, кстати,
# не работают как положено - если пользователь deny - сервис валиться с ошибкой 1 и дальше
# не движется - мне оно и не надо, соблюдаем формализмЪ)
sudo mkdir /etc/vbox
sudo cat << EOF > /etc/vbox/autostart.cfg
> default_policy = deny
> ilyxa = {
> allow = true
> startup_delay = 5
> }
> EOF
sudo groupmod -U +ilyxa vboxuser

VBoxManage modifyvm windows --autostart-enabled on
VBoxManage modifyvm windows --autostart-delay 5 # опционально, перекрывается autostart.cfg

На виндовой виртуалке (winXP, за NATом, запускаем несколько специфичных сервисов аля Hardware Emul Serial Port и логгер для зарядника) автомонтинрование шары делаем так:
net use y: \\server\share password /user:username

Собственно.

Solaris 11.1 Home NAS

Собственно, “обновил” (читай – собрал с нуля) свой NAS-сервер, пока конфигурация далеко не максимально производительная, чисто на “взлет”, а далее посмотрим.

Железо:

+ LSI 9212 (4 SATA порта, на радиатор нужно поставить дополнительный вентилятор, потому как изначально адаптеры предназначены под обдув воздухом, а из-за особенностей маленького корпуса реализация обдува сильно затруднена), +4 диска SATA 400GB Seagate 1.5Gbps (на тесты), +2x4Gb DDR3 ECCU RAM. При использовании solaris хочешь или нет, а на HCL посмотреть придется…