На сервере, что будет в роли AI:
Скачать AI.iso
installadm set-server -M (выключили обновление dhcp, мы без него)
installadm set-server -p 7000 (порт будет 7000, умолчательный 5555)
installadm create-service -s /root/sol11.2ai.iso -y
ok setenv network-boot-arguments host-ip=IP-OUR,router-ip=IP-GW,subnet-mask=MASK.0,file=http://IP-AI_SRV:7000/cgi-bin/wanboot-cgi
ok boot net - install
Никакой безопасности - времянка для установки, обновления. Потом закрыть, снести!
Включить форвардинг глобально на ipv4:
ipadm set-prop -p forwarding=on ipv4
routeadm
1. /etc/ipf/ipf.conf:
pass in all
pass out all
2. /etc/ipf/ipnat.conf
map net0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map net0 192.168.0.0/24 -> 0/32
3. /etc/ipf/pfil.ap
net -1 0 pfil
4. svcadm enable ipfilter
net0 - внешний интерфейс.
net1 - сетка с внутренними машинками 192.168.0.0/24
На машинах внутри сетки ставим default gateway на адрес роутера нашего.
Есть сервер T5220. Ставим Solaris 11.1 + SRU12. Это важно, что бы был SRU12 или SRU8. При других вариантах не сможете сделать ASM группы. Кстати, можно сразу скачать ISO с Solaris 11.1+SRU12 на сайте оракла.
Пошагово нечего расписывать - ставим солярис, конфигурим сеть, делаем два домена. Ставим в них солярис 11.1+SRU12. В основном домене делаем сервер пакетов, с которого потом можно ставить пакеты на доменах и обновлять ОС в дальнейшем. Обо всем этом есть отдельные статьи в этом же блоге.
На что обратить внимание - это опишу ниже.
Swap нужно сделать сообразно требований инсталятора оракла.
Настроить работы DNS. Resolv.conf править руками НЕ надо. Как надо - в статье в этом блоге есть.
NTP обязательно настроить и запустить. Для того что бы оракловый инсталятор не ругался, после запуска ntp, в конфиг /etc/inet/ntp.conf дописать две опции disable pll и slewalways yes
в Solaris 11 ntp.conf не принимает опции, которые проверяет preCheck Oracle RAC: disable pll / slewalways yes.
Последняя опция делает так: svccfg -s svc:/network/ntp:default setprop config/slew_always = true svcadm refresh ntp svcadm restart ntp
Ставить будем RAC 11g на Solaris 11.1 sparc. Машина для тестов T5220. Одна. Будем поднимать два домена на одном сервере. Дисковые ресурсы будут на базе ASM сделаны для СУБД, а значит будем передавать с СХД на Primary LDOM, на нем же настроим MPxIO, и уже эти ресурсы отдадим как общие в гостевые LDOMs.
Ставим Solaris 11.1 на сервер. Далее настраиваем домены как в статье .
Ресурсы делим как можно + как нужно. У меня на стенде было 32 ГБ памяти. Я отдал 10ГБ Primary (zfs будет кэшировать LDOM-тома корень/swap/u), и по 12 ГБ доменам. Но это не важно - как нужно так и делите. Мой случай это просто тестовый стенд.
Сделаем два Network vSwitch. Один публичный а второй для интерконнекта. Мне потребовалось два интерфейса в публичную сеть и по одному интерфейсу в интерконнект.
Сеть настраиваем как в статье.
Диски с СХД отдаем primary, включаем MPxIO. Слайсы нарезаем по одному (нулевой) начиная с 1-го цилиндра обязательно. Отдаем именно слайс s0 в домены.
Тут есть хитрость (или дурость) но другого пути найти не смог. Нельзя отдать один и тот же диск в два LDOM (только если в режиме RO а нам надо в RW). Потому я сделал каталог /etc/asm, и в него сделал символьные линки с устройств s0:raw каждое устройство дважды. Например OCR1 у меня был слинкован дважды как ocr1-1 и ocr1-2. После чего уже добавлял ресурсы в primary-vsw0 и оттуда в домены. Иначе нельзя, ldm не даст этого сделать. Вот что вышло в итоге:
#ldm ls-bindings primary
VSW
NAME MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-LINK
primary-vsw0 00:14:4f:fa:a4:df net0 0 switch@0 1 1 1500 on
PEER MAC PVID VID MTU LINKPROP INTERVNETLINK
vnet1@node1 00:14:4f:fb:25:76 1 1500
vnet1@node2 00:14:4f:f8:5e:53 1 1500
vnet3@node1 00:14:4f:fb:fd:91 1 1500
vnet3@node2 00:14:4f:f9:24:31 1 1500
NAME MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-LINK
primary-vsw1 00:14:4f:f9:72:5d 1 switch@1 1 1 1500 on
PEER MAC PVID VID MTU LINKPROP INTERVNETLINK
vnet2@node1 00:14:4f:fb:7a:8a 1 1500
vnet2@node2 00:14:4f:fb:d7:01 1 1500
Но как бы не старался, пречеки выдали ошибки на диски Я проверил, что диски точно те что я отдал обоим доменам:
#echo "test test" >/tmp/qq
node1# dd if=/tmp/qq of=/etc/asm/ocr1 count=1
node2# dd if=/etc/asm/ocr1 of=/tmp/qq count=1
в файле на node2 должен быть файлик qq с содержимым test test.
Ошибку игнорим.
NTP: svccfg -s svc:/network/ntp:default setprop config/slew_always = true svcadm refresh ntpsvcadm restart ntp У меня пречек попрежнему ругался на slewingalways true & disable pll. Поставил я эти опции в /etc/inet/ntp.conf и перезапустил ntpd, он сругался на эти строки потому что их нет в этой версии ntp. Зато пречек на ура прошел :( А вот победить DNS я так и не смог. Checking DNS response time for an unreachable node Node Name Status ------------------------------------ ------------------------ node2 failed node1 failed PRVF-5636 : The DNS response time for an unreachable node exceeded "15000" ms on following nodes: node2
Как и ранее есть инструмент ndd:
#ndd -get /dev/tcp \?
Получим список параметров для просмотра и настройки:
...
tcp_use_smss_as_mss_opt (read and write)
tcp_keepalive_abort_interval (read and write)
tcp_wroff_xtra (read and write)
tcp_reass_timeout (read and write)
tcp_extra_priv_ports_add (write only)
tcp_extra_priv_ports_del (write only)
...
Конкретное значение параметра можно увидеть так:
#ndd -get /dev/tcp tcp_conn_req_max_q
128
Еще инструмент:
#ipadm show-prop [tcp/udp/sctp]
PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE
Замечу, что количество параметров при выводе ndd и ipadm разное. У последнего инструмент из значительно меньше. Но можно ручками смотреть и менять все параметры типа read_write и при помощи ipadm. Вoт пример:
# ndd -get /dev/tcp tcp_conn_req_max_q
128
Теперь также для ipadm:
#ipadm show-prop -p _conn_req_max_q tcp
PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE
tcp _conn_req_max_q rw 128 -- 128 1-4294967295
То есть параметр в ndd tcp_conn_req_max_q надо переделать так - убрать название протокола (в данном случае tcp) из параметра и оставить подчерк. Было tcp_conn_req_max_q, должно остаться _conn_req_max_q.
Начиная с версии драйвера 2.50 не производится больше обновление драйверов Emulex и их нужно обновлять руками. У нас драйвер 2.70 - он же последний на момент написания статьи. Осталось подтвердить версию что бы не получать эти предупреждения каждый раз:
#luxadm -e forcelip /dev/cfg/c9
#luxadm -e forcelip /dev/cfg/c10
#luxadm -e forcelip /dev/cfg/c11
#luxadm -e forcelip /dev/cfg/c12
Цитирую текст:
luxadm -e forcelip is intrusive. Do not issue this command while there is activity down the paths. Halt I/O to the targets on the paths that require the firmware upgrade prior to issuing the luxadm -e forcelip command.
luxadm -e forcelip may also be required for a "firmware downgrade" in the event that the firmware detected on the HBA is different than the current patch level firmware in the OS.
Beginning with Solaris 11, fcadm may also be used to perform the firmware upgrade.
#fcadm hba-port
Make note of the WWN of the HBA port(s) that require a firmware upgrade.
Для ограничения и спасения дискового массива (особенно используемых совместно с другими) нужно ограничить глубину очереди. Это рекомендуется и производителями массивов в том числе. EMC например для своих VMAX рекомендует начать настройку с цифры 20 и далее вести ее до 32. HDS сразу предлагает с 32 начать.
Параметры выставляются в /etc/system
set ssd:ssd_max_throttle=32
set sd:sd_max_throttle=32
# echo sd_max_throttle/D | mdb -k
# echo ssd_max_throttle/D | mdb -k
Это выставит ограничитель на 32 глобально для дисков sd и ssd (не путать с флешами, это solaris:)))
И вот что заметилось - эти параметры были актуальны при работе с UFS. У ZFS есть свой параметр, который делает то же самое и по умолчанию он выставлен в 10.
Проверим сначала:
#echo
zfs_vdev_max_pending/D | mdb -k Увидим 10. Теперь установим в 32: - через /etc/system set zfs:zfs_vdev_max_pending=32
- на ходу для попробовать: #echo zfs_vdev_max_pending/W0t32 | mdb -kw
Кстати, что бы посмотреть влияние этого параметра , стоило запустить генератор нагрузки vdbench и iostat -zxne 5 посмотреть на колонку actv, это и есть показатель глубины очереди. Для ZFS дисков он был бы не более 10. После установки в 32, сделать тот же тест и посмотреть влияние. Если массив достаточно мощен, мы получим не плохой процент роста производительности. PS: mdb -k ::memstat Смотрим ZFS File Data - это то что забирает ZFS под свои кэши. Если не ограничить параметрами, то памяти не останется и плевать, что написано в доках о том, что мол ZFS отдаст сразу память как только она потребуется другому приложению. Этого не происходит (по крайней мере так как ждет приложение).
Скачать последний SRU. Далее кусок из Quick Start Guide
The basic steps to use the repository copy for updating your local system is as follows. Note that "sruN" represents the number of this SRU (e.g. sru1):
1. Mount the ISO image as a filesystem:
$ mount -F hsfs {full_path_to}/sol-11-1111-sruN-incr-repo.iso /mnt
2. Add the publisher to the system:
$ pkg set-publisher -G '*' -g file:///mnt/repo solaris
3. Perform the upgrade:
$ pkg update
Теперь сделаем все же свой репозитарий: 1. #zfs create rpool/export/repoSolaris11 2. #zfs set atime=off rpool/export/repoSolaris11 3. #pkgrepo create /export/repoSolaris11 4. #mount -F hsfs /distr/sol-11_1-repo-full.iso /mnt 5. #rsync -aP /mnt/repo/ /export/repoSolaris11 6. #umount /mnt 7. #pkgrepo -s /export/repoSolaris11 refresh
для доступа к репозитарию по NFS: #zfs set share=name=s11repo,path=/export/repoSolaris11,prot=nfs rpool/export/repoSolaris11 #zfs set sharenfs=on rpool/export/repoSolaris11 на клиенте: #pkg set-publisher -G '*' -M '*' -g /net/HOST_IP_or_NAME/export/repoSolaris11/ solaris для доступа к репозитарию по http: #svccfg -s application/pkg/server setprop pkg/inst_root=/export/repoSolaris11 #svccfg -s application/pkg/server setprop pkg/readonly=true #svcprop -p pkg/inst_root application/pkg/server #svccfg -s application/pkg/server setprop pkg/port=PORT_NUMBER (1111 например) #svcadm refresh application/pkg/server #svcadm enable application/pkg/server на клиенте: #pkg set-publisher -G '*' -M '*' -g http://IP:PORT_NUMBER/ solaris
Если вышли обновления для репозитария (SRU), качаем ISO (например называться будет так sol-11_1_9_5_1-incr-repo.iso) и :
#mount -F hsfs /distr/sol-11_1_9_5_1-incr-repo.iso /mnt
#pkgrecv -s /mnt/repo/ -d /export/repoSolaris11 '*' #pkgrepo -s /export/repoSolaris11 refresh или: #mount -F hsfs /distr/sol-11_1_9_5-incr-repo.iso /mnt #rsync -aP /mnt/repo #pkgrepo rebuild -s /export/repoSolaris11
Смотрим что у нас с репозитарием: #pkgrepo info -s /export/repoSolaris11 #pkgrepo get -s /export/repoSolaris11
Update: Для того, что бы обновить Solaris 11.2 на 11.3 из локального репозитория, нужно установить этот новый репо, как выше указано задать верный publisher и: #pkg list -af entire #pkg update --accept entire
Хмм. В 11-м солярисе нет установленного по умолчанию SVM. ZFS в полный рост.
Но надо поставить и не использовать ZFS а работать с UFS.
#metadb
metadb: command not found
#pkg info -r svm
Name: storage/svm
Summary: Solaris Volume Manager
Description: Solaris Volume Manager commands
Category: System/Core
State: Not installed
Publisher: solaris
Version: 0.5.11
Build Release: 5.11
Branch: 0.175.0.0.0.2.1
Packaging Date: Wed Oct 19 06:42:14 2011
Size: 3.48 MB
FMRI: pkg://solaris/storage/svm@0.5.11,5.11-0.175.0.0.0.2.1:20111019T064214Z
Много вещей из привычных настроек в файлах уехало в SMF.
Вот так теперь зона времени настраивается (зато не надо перезагрузок):
#date
Fri Jun 1 10:12:54 MSK 2012
# svccfg -s timezone:default setprop timezone/localtime= astring: Asia/Novosibirsk
# svcadm refresh timezone:default
# date
Fri Jun 1 13:20:05 NOVT 2012
Качать образы ОС AI, Repo, Text.
Я поставил с CD text Solaris 11 sparc. Далее делал на его базе AI. AI - Automatic Install.
Сделал файловую систему для хранения (zfs create -o mountpoint=/pub rpool/pub)
installadm (пакет) у меня уже был установлен. Если нету - поставить надо (pkg install installadm )
Настроить DHCP сервер, включить multicast (svcadm enable dns/multicast)
Далее ставим сервис (installadm create-service -n s11ai -i 10.10.10.10 -c 10 -s /tmp/sol-11-1111-ai-sparc.iso -d /pub/images
s11ai - это некое имя сервиса, к которому можно цеплять клиентов с условиями.
10.10.10.10 - это для меня была настройка с которого адреса начиная выдавать IP от DHCP
-c 10 - 10 клиентов разрешаем
-s - где лежит ISO AI c которого мы делаем сервер
-d - куда уложить файлы для работы AI
Далее надо создать локальный репозитарий. Берем диск repo (он порядка 6.5ГБ). Монтируем через lofi (lofiadm -a /path_to_iso.iso) && mount -F hsfs /dev/lofi/1 /mnt).
Делаем файлуху для репозитария (zfs create -o mountpoint=/IPS rpool/IPS)
Запускаем синк базы (rsync -aP /mnt/repo /IPS )
По завершению синка размонтировать /mnt, удалить lofi (lofiadm -d /dev/lofi/1)
Теперь строим сервер репозитария:
-svccfg -s pkg/server setprop pkg/inst_root=/IPS/repo
-svccfg -s pkg/server setprop pkg/readonly=true
-svccfg -s pkg/server setprop pkg/port=10000
-svcadm restart pkg/server
Зададим локальный репозитарий как один и правильный (pkg set-publisher -G "*" -g /IPS/repo solaris
Надо теперь сказать AI где лежит репозитарий. Я ставил AI в /pub/images. Там есть файл default.xml (это линк на умолчательный манифест). В нем правим расположение репозитария. Моя секция выглядит так:
10.10.10.1 - это мой AI сервер.
10000 - порт сервера репозитария что сделали выше.
Теперь надо обновить манифест:
installadm update-manifest -n default-sparc -f /pub/images/auto_install/default.xml -m orig_default
Теперь можно грузить клиентов.
ok boot net:dhcp - install
Оно загрузится непривычно для глаза (wget будет работать). Далее появится ввод логина - root/solaris.
И что бы понять как идет процесс установки - смотрим лог
tail -f /system/volatile/install_log на клиенте
С наскока вновь установленный Solaris 11 не смог переделать по адресам. Систему конфигурации адресов и интерфейсов сместили в сторону утилит, которые были вспомогательные ранее. Как я понял, можно по идее и старым способом сделать, но предпочтение отдают новому - утилитам ipadm, dladm.
Вот например так
ipadm create-addr -T static -a 172.16.114.39/24 net0/v4
ipadm show-addr
Если адрес уже был назначен и нужно его изменить:
#ipadm delete-ip net0
#ipadm create-ip net0
#ipadm create-addr -T static -a IP/MASK net0/v4