На эти выходные я абсолютно спонтанно попал на два дня конференции BarCamp Central Asia 2009. Сказать честно, если бы не мои друзья я и вообще не знал бы об этом ивенте. Никакой рекламы на радио, спам-enterprise рассылок или банеров на популярных ресурсах. Быстро ознакомившись с расписанием докладчиков, я ничему и не удивился, так как попал практически не в свою сферу :) Web-разработка, Блогинг, Видеохостинг, Подкастинг, CMS, e-Commerceи т.д. - вот те темы, которые обсуждались здесь. Очень яркие примеры тому доклады компаний Google, Opera Software, а также более 30 различных презентаций докладчиков со всего Казахстана и сран СНГ.
Проходила конференция в новом здании на территории университета KIMEP. Организаторы хочу отметить молодцы во всем. Две очень милые и симпатичные девушки прекрасно организованная Казнет-тусовку, где был бесплатный интернет (WLAN), халявный RedBull, много докладов и просто приятная и не напрягающая атмосфера. Мало того выражаю огромное спасибо HelpTeam'ерам которые отыскали и вернули мои случайно утеряные ключи от машины :)
Что я для себя познал? Оказывается KIMEP это не только длинный корпус по ул. Абая :D
Казнет начинает развиваться. Причем действительно активно. Если я раньше допустим, не знал о таких ресурсах как kiwi.kz, kaztube.kz или допустим nur.kz, то сейчас я уже могу сказать - О да, я наслышан... Хотя честно говоря ничем не удивили. Последние вообще хотят выставить себя аля rambler.ru в Казнете с кучей доп. сервисов и основной упор делать не на почтовом сервисе и поиске, а на новостной ленте. Задумка на самом деле хорошая, заставить со временем пользователей Казнета пересесть с той же lenta.ru на что то свое. Но вопрос, смогут ли ? Kazakhstan Today почти монополитизировал этот рынок, но у них ацтойный сайт да еще и частично платный ... Удачи Nur'y !
В целом лично мое мнение (IMHO), за 2 дня просмотра 10-15 презентаций я увидел только 3 проекта которые мне действительно понравились.
1. kaznavi.kz
Как активный пользователь GPS навигации эта сфера мне интересна. А именно векторные карты Алматы и как они собираются работать с пробками. Какими способами соберать данные о них и т.д. Если для кого секрет то компания Казахтелеком планирует внедрить технологию Babysitter в Алматы в ближайшие 1-2 года. Это около 700 000 IP камер по всему городу. На каждом перекрестке, в каждом магазине, квартире, офисе итд. Эта технология одна из многих используемых в Яндекс Пробки. Так называемый Babysitter уже давно зарекомендовал себя на Западе и кто видел такие фильмы как "Eagle Eye" и "Echelon Conspiracy" знают что выйдет :D
2. wormie.kz
Мне просто понравился доклад. Четко и понятно все сказано. Отличный незамудреный дизайн который не режет глаза кучей ненужных кнопок. Такие проекты нам нужны. Абсолютно заслужено наградили девушку которая презентовала этот проект.
3. podkazt.kz
Это для меня было наверное открытие. Поначалу после презентации я бы назвал их Интернет-балаболами, но придя домой я просто задумался а ведь действительно в этом что то есть. Например техническую документацию обязательно надо именно читать, но вот выразить свои мысли, мнение или рассказ о чем либо - подкаст идеальный способ. Этим же вечероми я добрался до radio-t.com и linux.rpod.ru. Сказать честно даже эти ресурсы не впечатляют но это уже что то! Конечно я сомневаюсь что скоро появятся подкасты от архитекторов SAN сетей на основе Cisco/Brocade, подкасты систем хранения данных Hitachi, EMC, NetApp или более охваченные темами про Enterprise UNIX. В любом случае начало положено ... Может этим и занятся ? :) Что касается наших казахстанских ребят, то у них все еще впереди и я лишь от всего сердца желаю им удачи.
Подводя итог хочу отметить что в целом я не жалею что сходил на даный ивент. Очень позитивно провел свои выходные и организаторам еще раз выражаю большое спасибо.
воскресенье, 19 апреля 2009 г.
BarCamp Central Asia 2009
на 22:23 0 коммент.
пятница, 13 марта 2009 г.
Cobbler/Koan средство установки RPM-Based OS
В начале этого года компания RedHat в лице Michael DeHaan'a представила ПО Cobbler способное упростить сетевую установку операционных систем, что особенно необходимо при масштабных инсталляциях, например, в дата-центрах. Буквально через пару недель ПО Cobbler интегрировали в Open Source проект Spacewalk и предполагается, что в недалеком будующем Cobbler заменит соответствующую подсистему в Spacewalk, а в дальнейшем, видимо, и в Red Hat Network Satellite Server.
На сегодняшний день о технических особеностях Cobbler/Koan и Spacewalk достаточно написано. Про Spacewalk вы можете прочитать здесь, про Cobbler/Koan здесь.
Итак мы не будем углублятся в дальнейшую историю, а сразу возмемся за его настройку.
Cobbler управляется 2 способами: CLI и WEB. Мы пропустим настройку через WEB и сразу попробем понять настройку через CLI. Она же просто командная строка. Но сами пакет WEB-сервера все же поставим в показательных целях.
Будем считать что необходимые репозитарий для установок пакетов httpd, модулей python и т.д. у вас уже настроены, поэтому даем комманду
# yum install -y cobbler koan yum-utils cman httpd dhcp xinetd tftp-server
Запускаем службы.
После успешной установки начнем настройку с сервиса DHCP. Это первая служба к которой обратится компьютер загружаемый с PXE.
Вот простейшая конфигурация (/etc/dhcp.conf)
ddns-update-style none;
ignore client-updates;
use-host-decl-names on;
authoritative;
set vendorclass = option vendor-class-identifier;
# Указываем свою сеть
subnet 192.168.1.0 netmask 255.255.255.0 {
# Указываем шлюз по умолчанию
option routers 192.168.1.100;
# Маска подсети
option subnet-mask 255.255.255.0;
# DNS Сервер
option domain-name-servers 192.168.1.200;
# Часовой пояс
option time-offset -18000; #EST
# Диапазон IP адресов которые будем выдавать по DHCP
pool {
range dynamic-bootp 192.168.1.10 192.168.1.100;
default-lease-time 86400;
max-lease-time 86400;
}
# Cервер с которого ббудет проходить загрузка
next-server 192.168.1.140;
# Файл PXE который необходимо скачать по tftp с сервера загрузки
filename "pxelinux.0";
# Соответсвенно разрешаем загрузку
allow bootp;
allow booting;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
}
При наличии нескольких сетевых интерфейсов мы можем указать какой их них прослушивать в файле
/etc/sysconfig/dhcpd, указывая :
DHCPDARGS=ethX
В файле /etc/xinet.d/tftp в строке disable указываем значение no.
disable = no
Далее запускаем службы :
# service dhcpd start
# service httpd start
# service xinetd start
# chkconfig dhcpd on
# chkcondig httpd on
# chkconfig xinetd on
Ну что же. Время проверить всели мы настроили для успешного старта Cobbler.
# cobbler check
The following potential problems were detected:
#0: service cobblerd is not running
Все в порядке. осталось лишь запустить службу cobbler.
# service cobbler start
# chkconfig cobbler on
Заходя вперед хочу сразу же отметить что у нашего cobbler есть великомлепный man, а также конфигурационый файл /etc/cobbler/settings. Для нашей сегодняшей цели мы должны в этом файле поменять лишь 2 раздела. Это server и next_server. По умолчанию они содержат значение 127.0.0.1, а вы должны заменить его либо DNS именем вашего Cobbler сервера либо IP.
Начнем установку дистрибутива RHEL 5.3. Укажем cobbler'у директорию где лежат установочные файлы
# cobbler import --name=RHEL5.3 --mirror=/media/cdrom
Это займет у вас от 10 и более минут, поэтому можете либо пристально наблюдать за процессом либо отойти и попить чая. После импорта посмотрим что у нас вышло
# cobbler distro list
RHEL5.3-i386
RHEL5.3-xen-i386
# cobbler profile list
RHEL5.3-i386
RHEL5.3-xen-i386
rescue-RHEL5.3-i386
Как вы видите у нас есть дистриюутив RHEL 5.3 и default профайлы к нему.
Давайте создадим несколько новых profiles.
# cobbler profile copy --name=RHEL5.3-i386 --newname=dbase-server
# cobbler profile copy --name=RHEL5.3-i386 --newname=proxy-server
# cobbler profile copy --name=RHEL5.3-i386 --newname=web-server
Да все правильно. Мы их не создали а просто продублипровали с default конфига. Но в дальнейшем мы можем их редактировать как нам захочется.
# cobbler profile list
RHEL5.3-i386
RHEL5.3-xen-i386
database-server
proxy-server
rescue-RHEL5.3-i386
web-server
Profile это не просто имя установки. Это файл параметров установки к котиорому четко привязан дистрибутив, kickstart конфиг и различные параметры установки, ядра итд.
Кстати я еше не говорил что с помощью Cobbler можно устанавливать не только RHEL/Fedora, но и SuSE и Debian? Ну вот теперь вы знаете. Кстати проект Spacewalk способен устанавливать Sun Solaris.
# cobbler profile report --name=web-server
profile : web-server
distro : RHEL5.3-i386
comment :
created : Wed Mar 11 13:00:12 2009
dhcp tag : default
enable menu : True
kernel options : {}
kickstart : /var/lib/cobbler/kickstarts/sample.ks
ks metadata : {}
mgmt classes : []
modified : Wed Mar 11 13:13:31 2009
name servers : []
owners : ['admin']
post kernel options : {}
redhat mgmt key : <>
repos : []
server : <>
template_files : {}
virt bridge : xenbr0
virt cpus : 1
virt file size : 5
virt path :
virt ram : 512
virt type : qemu
Допустим к примеру мы создали свой скрипт для Web-server'a и даем команду на редактировоание профайла web-server.
# cobbler profile edit --name=web-server --kickstart=/var/lib/cobbler/kickstarts/web-server.ks
Впринципе на базовом уровне это все. Нам осталось лишь добавить клиента, то есть компьютер на который мы хотим установить ОС и проверить PXE + tftp.
Я использую в качестве компьютера виртуальную машину Sun xVM VirtualBox. Сразу хочу отметить что ОЗУ выделяемов для установки ОС с Cobbler необходимо выставлять более 256 Мб! На самом деле 256М для Linux это нормально, но у Cobbler'a на момент написания статьи существует некий баг который из за нехватки памяти скачивает minstg2.img в котором отсутсвует утилита lspci. Обычно системы скачивают stage2.img. Данная ошибка при установке выглядит так.
Добавляем систему:
# cobbler system add --name=caprica --profile=web-server --mac=08:00:27:2B:BC:4D
Смотрим ее параметры.
# cobbler system list
caprica
# cobbler system report
system : caprica
profile : web-server
comment :
created : Wed Mar 11 13:39:22 2009
gateway :
hostname :
image :
kernel options : {}
kernel options post : {}
kickstart : <>
ks metadata : {}
mgmt classes : []
modified : Wed Mar 11 13:39:22 2009
name servers :
netboot enabled? : True
owners : ['admin']
server : <>
template files : {}
virt cpus : <>
virt file size : <>
virt path : <>
virt ram : <>
virt type : <>
power type : ipmitool
power address :
power user :
power password :
power id :
interface : eth0
mac address : 08:00:27:2B:BC:4D
bonding :
bonding_master :
bonding_opts :
is static? : False
ip address :
subnet :
static routes : []
dns name :
dhcp tag :
virt bridge :
Проверяем настройки PXE и TFTP
# ls -l /tftpboot/pxelinux.cfg/
total 8
-rw-r--r-- 1 root root 291 Mar 11 13:39 01-08-00-27-2b-bc-4d
-rw-r--r-- 1 root root 1757 Mar 11 13:26 default
# cat /tftpboot/pxelinux.cfg/01-08-00-27-2b-bc-4d
default linux
prompt 0
timeout 1
label linux
kernel /images/RHEL5.3-i386/vmlinuz
ipappend 2
append initrd=/images/RHEL5.3-i386/initrd.img ksdevice=eth0 lang= kssendmac
syslog=kobol.rhca.com:25150 text ks=http://kobol.rhca.com/cblr/svc/op/ks/system/caprica
Все... Включаем наш компьютер и выставляем в BIOS загрузку по сети. ПК автоматически подгрузит ядро по PXE и начнет автоматическую уставновку.
Дополнение.
Собствено это все не ограничивается возможностями Cobbler. У него есть масса возможностей описаных на официальном сайте проекта. Некоторые из них описал на русском языке Дмитрий Василец.
Про Koan я возможно опишу в следующий раз. Это ПО работает вместе с Cobbler и отвечает за установку виртуальных станций (KVM, Xen, Qemu итд). Интеграция со Spacewalk дало последнему значительное преимущество и возможно следующая статья будет посвящена имено этой связке, мало того я попробую установить Sun Solaris 10 с нее. На последок хочу поделится интересными ссылками на:
- Видеоинтервью с создателем Cobbler
- Статья в RedHat Magazine с создателем Cobbler
- Скринкаст от создателя Cobbler
- Официальный сайт проекта Cobbler/Koan
на 9:14 0 коммент.
вторник, 11 ноября 2008 г.
Автоматическая установка Sun Solaris при помощи инструментария Jumpstart
Последнее время появилась необходимость чаще и быстрее устанавливать ОС Sun Solaris 10 (SPARC). Связано это соответствено с расширением инфраструктуры моей компании. Поэтому чтобы не тратить по два часа на установку ОС с DVD привода, я решил потратить эти 2 часа на создание Jumpstart сервера и в дальнейшем осуществлять установки максимум за 30 минут имея ту конфигурацию на каждом сервере, которая мне необходима.
Итак. Даная инструкция будет короткая и показательным примером того как примерно вам настраивать ваш Jumpstart.
Jumpstart состоит из двух частей.
1) Install сервер (установочный)
2) Boot сервер (загрузочный)
То есть если в серверной #1 подсеть 10.10.10.0/24, в в серверной #2 подсеть 10.20.20.0/24, то соответсвено в каждой из серверных нам необходимо развернуть по boot серверу, которые будут раскидывать ARP BROADCAST и при установке ссылаться напрямую к install серверу. Install сервер может находится где угодно и быть одним.
Install и Boot сервисы в моем Jumpstart будут находится вместе на одном сервере.
Итак...
Часть 1. Подготавливаем установочную часть.
1. Создаем директорию для установочной части
# mkdir /export/install
2. Переходим в DVD привод
# cd /cdrom/s0/Solaris_10/Tools
3. Запускаем скрипт для копирования образа Solaris 10 в директорию установки.
# ./setup_install_server -b /export/install
Процесс может занять около 30 минут.
Кстати лично я делаю это с образа DVD - iso файла. Намного быстрее и удобнее.
# lofiadm -a /opt/install/sun10sparc.img
/dev/lofi/1
# mount /dev/lofi/1 /cdrom
Часть 2. Подготавливаем загрузочную часть.
1. Отредактируйте файл /etc/ethers вписав в него МАС адресс клиента (машину на которую будем ставить ОС)
0:14:4f:ac:58:64 client.example.com
2. Отредактируйте файл /etc/hosts вписав в него
10.10.10.100 server.example.com loghost timehost
10.10.10.200 client.example.com client
3. Отредактируйте файл /etc/netmasks
10.10.10.0 255.255.255.0
4. Вставте DVD диск в привод сервера и создайте директорию конфигурации
# mkdir /export/config
5. Поменяйте директорию на /cdrom/s0/Solaris_10/Misc/jumpstart_sample и скопируйте example-configs в директорию /export/config
# cd /cdrom/s0/Solaris_10/Misc/jumpstart_sample
# cp -r * /export/config/
6. Отредактируйте файл /export/config/rules под ваши нужды.
# cd /export/config
# mv rules rules.orig
# vi rules
hostname client.example.com - host_class finish_script
Синтаксис этого файла следующий:
hostname имя сервера pre-install script configuration file post-install script
7. Отредактируйте конфигурационый файл host_class (Имя файла кстати вы можете выбрать любое которое вам нравится)
# pwd
/export/config
# vi host_class
install_type initial_install
system_type standalone
partitioning explicit
filesys mirror:d10 c1t0d0s0 c1t1d0s0 15360 /
filesys mirror:d20 c1t0d0s1 c1t1d0s1 8192 swap
filesys mirror:d30 c1t0d0s3 c1t1d0s3 112640 /data
metadb c1t0d0s7 count 3
metadb c1t0d0s7 count 3
cluster SUNWCall
cluster SUNWCapache delete
cluster SUNWCaudd delete
cluster SUNWCdtdev delete
cluster SUNWCdtrun delete
cluster SUNWCdtusr delete
cluster SUNWCdtrunx delete
cluster SUNWCfs delete
cluster SUNWClp delete
cluster SUNWCsppp delete
cluster SUNWCwget delete
cluster SUNWCwsdk delete
cluster SUNWCGtk delete
package SUNWmozilla delete
package SUNWmozilla-devel delete
package Cluster-Sol-10-SPARC-local add
В даной конфигурации я сразу же стою RAID-1 (Mirror) и редактирую необходимые мне пакеты установки.
8. Создаем файл finish_script всего с двумя строчками
# vi finish_script
#!/bin/sh
touch /a/noautoshutdown
# chmod 644 finish_script
Эта команда конфигурирует Jumpstart клиент на использование автовыключения питания.
9. Запускаем скрипт проверки нашей конфигурации
# ./check
Должен появится файл rules.ok
10. Создаем файл sysidcfg с ответми на вопросы инсталятора
# vi sysidcfg
network_interface=e1000g0 { primary hostname=client.example.com
ip_address=10.10.10.200
protocol_ipv6=no
netmask=255.255.255.0
default_route=10.10.10.1}
name_service=none
timezone=Asia/Almaty
system_locale=C
security_policy=none
root_password=aTBAweXzif5T3
timeserver=localhost
terminal=vt100
11. Теперь предоставляем Jumpstart по NFS.
Редактируем файл /etc/dfs/dfstab
# vi /etc/dfs/dfstab
share -F nfs -o ro /export/config
share -F nfs -o ro,anon=0 /export/install
Проверяем на запуск службу NFS
# svcs -a | grep nfs
online Oct_02 svc:/network/nfs/mapid:default
online Oct_02 svc:/network/nfs/status:default
online Oct_02 svc:/network/nfs/nlockmgr:default
online Oct_02 svc:/network/nfs/client:default
online Oct_02 svc:/network/nfs/rquota:default
online Nov_05 svc:/network/nfs/cbd:default
disable Nov_06 svc:/network/nfs/server:default
# svcadm enable svc:/network/nfs/server:defaul
# svcs -l svc:/network/nfs/server:default
fmri svc:/network/nfs/server:default
name NFS server
enabled true
state online
next_state none
state_time Thu Nov 06 14:12:16 2008
logfile /var/svc/log/network-nfs-server:default.log
restarter svc:/system/svc/restarter:default
contract_id 17162
dependency require_any/error svc:/milestone/network (online)
dependency require_all/error svc:/network/nfs/nlockmgr (online)
dependency optional_all/error svc:/network/nfs/mapid (online)
dependency require_all/restart svc:/network/rpc/bind (online)
dependency optional_all/none svc:/network/rpc/keyserv (maintenance)
dependency optional_all/none svc:/network/rpc/gss (online)
dependency require_all/error svc:/system/filesystem/local (online)
12. Добавляем нашего клиента в установщик
# cd /export/install/Solaris_10/Tools
# ./add_install_client -c server.example.com:/export/config \
> -p server.example.com:/export/config client.example.com sun4x
Все ... Теперь заходя в OpenBoot на сервере клиента (Например через ILOM) мы даем команду :
ok boot net - install nowin
Система начнет ставится автоматически и установится в течении получаса (в зависимости от вашей конфигурации).
На этом все...
на 12:01 0 коммент.
понедельник, 10 ноября 2008 г.
Настройка СХД HP MSA1500CS через CLI
Недавно встретился с необходимостью настройки системы хранения даных (СХД) - HP MSA1500CS. Вся проблема заключалась в том что даный продукт не поддерживает LAN и соответствено не может администрироваться через фиксированый IP адресс по HTTP. А затем после чтения различного рода документации и консультации с представительством HP Kazakhstan, было принято решение о настройке даной СХД с помощью CLI (Command Line Interface). Именно о специфике настройки СХД через CLI я и хочу поговорить в сегодняшней заметке.
CLI (Command Line Interface), говоря простым языком - Интерфейс командной строки, то есть в нашем случае управление СХД через дата-кабель (COM => RJ45) подключеный к ноутбуку на котором происходит соединение к СХД.
Соединение можно проводить как стандартным Hyper-Terminal, так и с помощью SecureCRT как это делал я например. Настройки соединения следующие:
Bits per Second: 19200
Data bits: 8
Parity: None
Stop bits: 1
Flow control: None
При успешном соединении мы попадаем в тот самый CLI, а выглядит он просто
CLI>
Поменять это приглашение вы можете так
CLI> set prompt MSA-1
MSA-1>
После даного приглашения вы и должны вводить команды управления, которые делятся на 2 вида
- Возможные глаголы (Например: copy, delete, set, add)
- Возможные существительные (Например: disk, unit, acl, global)
Команды так и пишутся [глагол] [существительное] [параметры]
Я не буду описывать все команды, а лишь приведу те что мне понадобились.
Для начала представим ситуацию что настройку СХД будем осуществлять с нуля.
Смотрим информацию о существющих дисковых полках и дисках в них.
MSA-1> show disks
Disk List: (box,bay) (B:T:L) Size Speed Units
Enclosure 1: SATA (0:03:00) PROLIANT 8LCE 2.02
Disk101 (1,01) (0:03:01) 500.0GB 160 MB/s none
Disk102 (1,02) (0:03:02) 500.0GB 160 MB/s none
Disk103 (1,03) (0:03:03) 500.0GB 160 MB/s none
Disk104 (1,04) (0:03:04) 500.0GB 160 MB/s none
Disk105 (1,05) (0:03:05) 500.0GB 160 MB/s none
Disk106 (1,06) (0:03:06) 500.0GB 160 MB/s none
Disk107 (1,07) (0:03:07) 500.0GB 160 MB/s none
Disk108 (1,08) (0:03:08) 500.0GB 160 MB/s none
Disk109 (1,09) (0:03:09) 500.0GB 160 MB/s none
Disk110 (1,10) (0:03:10) 500.0GB 160 MB/s none
Disk111 (1,11) (0:03:11) 500.0GB 160 MB/s none
Disk112 (1,12) (0:03:12) 500.0GB 160 MB/s none
Enclosure 2: SATA (1:03:00) PROLIANT 8LCE 2.02
Disk201 (2,01) (1:03:01) 500.0GB 160 MB/s none
Disk202 (2,02) (1:03:02) 500.0GB 160 MB/s none
Disk203 (2,03) (1:03:03) 500.0GB 160 MB/s none
Disk204 (2,04) (1:03:04) 500.0GB 160 MB/s none
Disk205 (2,05) (1:03:05) 500.0GB 160 MB/s none
Disk206 (2,06) (1:03:06) 500.0GB 160 MB/s none
Disk207 (2,07) (1:03:07) 500.0GB 160 MB/s none
Disk208 (2,08) (1:03:08) 500.0GB 160 MB/s none
Disk209 (2,09) (1:03:09) 500.0GB 160 MB/s none
Disk210 (2,10) (1:03:10) 500.0GB 160 MB/s none
Disk211 (2,11) (1:03:11) 500.0GB 160 MB/s none
Disk212 (2,12) (1:03:12) 500.0GB 160 MB/s none
Notes:
The speed is the currently negotiated speed to the disk. This may
be less than the maximum speed supported by the device due to bus
faults, loss of signal integrity, etc.
И так мы видим что MSA определил 2 дисковые полки по 12 дисков объемом в 500Гб на каждой полке. Итого 24 диска в общем.
В разделе Units мы видим none на всех дисках. Это значит что ниодин диск пока не построен в LUN'ы. (Unit)
Disk101 - означает что это первая дисковая полка и первый жесткий диск. Disk211 - вторая дисковая полка и 11 диск.
Очень полезным в будующем может оказаться для вас команда locate которая позволяет подсветить какой либо избраный диск, диапозон дисков, все диски.
То есть например мы столкнулись с ситуацией когда вышел из строя один из дисков и необходимо его срочно заменить. Чтобы его долго не искать среди кучи остальных (и мы знаем имя диска, например это disk108), мы можем дать простую команду:
MSA-1> locate disk disk107
Давайте теперь создадим пару лунов. Сразу же хочу отметить что 1 создаваемый нами LUN не должен превышать объем в 2 Тб !!!
MSA-1> add unit 1 data="disk101-disk104" raid_level=0 stripe_size=64
First volume to be configured on these drives.
Logical Unit size = 1907624 MB
RAID overhead = 0 MB
Total space occupied by new unit = 1907624 MB
Free space left on this array: = 0 MB
Unit 1 is created successfully.
MSA-1> add unit 2 data="disk105-disk109" raid_level=5 stripe_size=64
First volume to be configured on these drives.
Logical Unit size = 1907624 MB
RAID overhead = 476906 MB
Total space occupied by new unit = 2384530 MB
Free space left on this array: = 0 MB
Unit 2 is created successfully.
MSA-1> add unit 3 data="disk201-disk202" raid_level=1 stripe_size=64
First volume to be configured on these drives.
Logical Unit size = 476906 MB
RAID overhead = 476906 MB
Total space occupied by new unit = 953812 MB
Free space left on this array: = 0 MB
Unit 3 is created successfully.
Итак, мы создали 3 LUN'a (units) в RAID'ах 0,5 и 1 соответствено. Давайте посмотрим теперь например на 1-ый.
MSA-1> show unit 1Unit 1:
In PDLA mode, Unit 1 is Lun 2; In VSA mode, Unit 1 is Lun 1.
Unit Identifier :
Device Identifier : 600508B3-00951790-C9886E34-87A5004E
Preferred Path : Controller 1 (this controller)
Cache Status : Enabled
Max Boot Partition: Enabled
Volume Status : VOLUME OK
4 Data Disk(s) used by lun 1:
Disk101: Box 1, Bay 01, (B:T:L 1:03:01)
Disk102: Box 1, Bay 02, (B:T:L 1:03:02)
Disk103: Box 1, Bay 03, (B:T:L 1:03:03)
Disk104: Box 1, Bay 04, (B:T:L 1:03:04)
Spare Disk(s) used by lun 1:
No spare drive is designated.
Logical Volume Raid Level: NO FAULT TOLERANCE (RAID 0)
stripe_size=64kB
Logical Volume Capacity : 1,907,624MB
Теперь нам необходимо настроить ACL. Например у нас есть 3 сервера подключеных через SAN коммутатор к СХД по оптоволоконому каналу.
Для начала нам необходимо настроить так называемый profile.
MSA-1> add connection server-1 wwpn=10000000-xxxxxxxx profile=linux
Connection has been added successfully.
Profile linux is set for the new connection.
MSA-1> add connection server-2 wwpn=10000000-xxxxxxxx profile=linux
Connection has been added successfully.
Profile linux is set for the new connection.
MSA-1> add connection server-3 wwpn=10000000-xxxxxxxx profile=linux
Connection has been added successfully.
Profile linux is set for the new connection.
Проверяем командой show
MSA-1> show connections
Connection Name: server-1
Host WWNN = 20000000-xxxxxxxx
Host WWPN = 10000000-xxxxxxxx
Profile Name = Linux
Unit Offset = 0
Controller 1 Port 1 Status = Online
Connection Name: server-2
Host WWNN = 20000000-xxxxxxxx
Host WWPN = 10000000-xxxxxxxx
Profile Name = Linux
Unit Offset = 0
Controller 1 Port 1 Status = Online
Connection Name: server-3
Host WWNN = 20000000-xxxxxxxx
Host WWPN = 10000000-xxxxxxxx
Profile Name = Linux
Unit Offset = 0
Controller 1 Port 1 Status = Online
Здесь мы создали 3 соединения-алиаса - server-1,2,3 и присвоили каждому уникальный идентификатор - WWN адресс HBA-адаптера. С помощью этого мы теперь будем строить правила доступа.
Чтобы все сервера не видели все 3 диска надо настроить ACL так чтобы каждый сервер мог видеть только те диски, которые ему положено видеть.
Теперь делаем так:
MSA-1> show acl
ACL is disabled. To enable ACL use 'add acl'.
Все правильно! Правил пока что нет. Сейчас будем их создавать.
MSA-1> add acl connection=server-1 unit=1
Enabling ACL.
Allowing 10000000-xxxxxxxx access to unit 1.
MSA-1> add acl connection=server-2 unit=2
Allowing 10000000-xxxxxxxx access to unit 2.
MSA-1> add acl connection=server-3 unit=3
Allowing 10000000-xxxxxxxx access to unit 3.
Вот и все. Теперь каждый из серверов будет видеть и работать только с тем диском который положено ему видеть.
Это можно проверить зайдя на сервер и дать команду fdisk -l (если это Linux)
На этом я закончу эту уже длинную заметку о настройке системы хранения даных HP MSA1500CS через CLI.
Допольнительную информацию вы можете найти на сайте компании HP: http://www.hp.com/
на 3:31 0 коммент.
воскресенье, 4 мая 2008 г.
Sun Service Day 2008
28 апреля компания Sun Microsystems, Kazakhstan совместо с Jet Infosystems провела в Алматы семинар Sun Service Day 2008. Данный семинар был посвящен ообзору профессиональных услуг компании Sun Microsystems. На семинаре выступили специалисты Корпорации Sun Microsystems и Компании Jet Infosystems., которые с радостью поделились слайдами с данного семинара, за что я выражаю им огромную благодарность.
Темы раскрытые на семинаре :
Спектр услуг Sun Professionаl Services
Денисюк А.С., начальник отдела продаж услуг
Sun Microsystems в странах СНГ.
Cкачать презентацию (Формат: ODP)
Услуги Sun Microsystems по внедрению решений по управлению учетными записями и правами доступа пользователей к ИТ ресурсам (Identity Manager)
Андрей Диканский, менеджер по продвижению профессиональных услуг
Sun Microsystems, регион Центральная и Северная Европа
Cкачать презентацию (Формат: ODP | PPT)
Услуги Sun PS по оценке и анализу производительности систем
Владимир Алеев, руководитель подразделения Sun Professional Service
Sun Microsystems, регион СНГ.
Cкачать презентацию (Формат: ODP)
Услуги Sun Microsystems в области виртуализации ЦОД
(Центров Обработки Данных)
Андрей Диканский, менеджер по продвижению профессиональных услуг
Sun Microsystems, регион Центральная и Северная Европа
Cкачать презентацию (Формат: ODP)
Комплекс услуг Sun по внедрению и эксплуатации модульных
центров обработки данных (BlackBox)
Денисюк А.С., начальник отдела продаж услуг
Sun Microsystems в странах СНГ.
Cкачать презентацию (Формат: ODP)
Особенности построения и внедрения решений по обеспечению непрерывного ведения операций в аспекте ИТ
Владимир Алеев, руководитель подразделения Sun PS
Sun Microsystems, регион СНГ.
Cкачать презентацию (Формат: ODP)
на 10:02 0 коммент.
среда, 27 февраля 2008 г.
Sun Storage and ZFS Day 2008
21 февраля компания Sun Microsystems, Kazakhstan совместо с ТОО ELSI-Tech провела в Алматы семинар Sun Storage & ZFS Day 2008. Данный семинар был посвящен обзору полного спектра продуктовой линейки Sun StorageTek и технологии ZFS. Свои доклады и презентации читали менеджеры по продуктам компании Sun Microsystems, которые с радостью поделились некоторыми слайдами с данного семинара. За что я выражаю им огромную благодарность.
Темы раскрытые на семинаре :
Технологии виртуализации дисковых массивов
Sun Microsystems
Владимир Скуратов, Начальник отдела подготовки и развития проектов
TOO “Компания ELSI Tech”
Скачать презентацию ( Формат PDF)
Дисковые системы хранения данных
Евгений Павлов, Специалист по продаже систем хранения данных
Sun Microsystems, регион CIS
Скачать презентацию ( Формат PPT)
Ленточные и виртуальные ленточные библиотеки
Евгений Павлов, Специалист по продаже систем хранения данных
Sun Microsystems, регион CIS
Организация оптимального резервного копирования
Евгений Затылкин, Менеджер по поддержке продаж, Sun Microsystems
Kazakhstan&Central Asia
ZFS. Новый взгляд на файловые системы
Виктор Латушкин, Менеджер по продуктам, ОС Solaris
Sun Microsystems, регион CIS
Скачать презентацию ( Формат ODP)
Практические рекомендации по повышению производительности
дисковых массивов с помощью технологии ZFS на примере реализации в Банке ТуранАлем
Алексей Бычков, Начальник отдела проектных решений, Банк ТуранАлем
P.S. К сожалению фотографий нет, так как я туда пришел без фотика.
на 9:43 0 коммент.
суббота, 23 февраля 2008 г.
Технология ILOM. Удаленное управление оборудованием.
Недавно мне попался интересный продукт компании Sun Microsystems. Это одноюнитовый сервер Sun SPARC Enterprise T5120 на базе процессора UltraSPARC T2. Признаться честно, компания Sun мне нравится все больше и больше. Качество продукции и инновационые технологии меня просто куражат, либо мне просто нравится позновать все новое? Одним из новых познаний была система ILOM, о которой собственно я и решил рассказать в этой статье. Данная статья дает основные понятие об управлении сервером используя только ILOM CLI.
Технология ILOM (Integrated Lights Out Manager) является встроеным сервисным процессором для управления вашим сервером. Это модуль с независимым питанием, собственой операционой системой на базе ОС Linux, а также включает механизмы безопасности. Вам не требуется устанавливать какое либо аппаратное или программное обеcпечение чтобы начать управлять вашим сервером с помощью ILOM, так как он уже встроен по умолчанию. ILOM также поддерживает индустриальные стандарты управления - IPMI и SNMP.
ILOM включает в себя следующие компоненты:
- Сервисный процесор (SP) - Это аппаратное обеспечение состоящее из управляющего процесора который подключен к последовательному порту управления и выделеному порту управления Ethernet.
- Интерфейс командной строки (CLI) - Это отдельное программное приложение которое разрешает вам оперировать ILOM используюя команды клавиатуры. Вы можете использовать CLI для отсылки запросов в ILOM. Вы можете подключиться к терминалу или эмулятору напрямую через последовательный порт или Ethernet порт используя Secure Shell (SSH)
- WebGUI - Программное обеспечение по сопровождению мощного и удобного интерфейса браузера , которое позволяет подключаться к сервисному процесору и выполнять управление системы, мониторинг и IPMI задачи.
- Удаленая Консоль / Javatrademark Client - Это Java клиент подерживающий функцию удаленой консоли, которая разрешает доступ к вашему серверу удалено. Она перенаправляет запросы клавиатуры, мыши и видеозахват, а также системы ввода/вывода локальной машины CD диски и дискеты.
Часть 1. Первое знакомство с ILOM
Когда вы загрузились, ILOM выводит на дисплей строку приглашения и просит войти под учетной записьюSUNSPnnnnnnnnnn login:
Первая строка по умолчанию имя хоста. она состоит из приставки SUNSP и MAC адресса ILOM, который в свою очередь в кажлом ILOM уникальный. Зайдите под стандартной учетной записью по умолчанию.
Имя пользователя: root
Пароль: changeme
При удачном входе вы увидите строку стандартную строку приглашения
->
Теперь вы можете начать посылать запросы ILOM и управлять системой. Например посмотреть информацию о материнской плате сервера можно так:-> show /SYS/MB
Для включения питания сервера введите-> start /SYS
Для отключения-> stop SYS
Для перезагрузки-> restart SYS
Чтобы подключится к последовательному порту интерфейса COM0 введите
-> start /SP/console
Для выхода из нее используйте сочетание #.
Чтобы изменить сочетание клавишь для выхода из консольного режима (например на #!) введите
-> set /SP/console escapechars=#!
Set 'escapechars' to '#!'
Посмотреть версию ILOM можно так
-> version
Просмотреть все CLI команды
-> show /SP/cli/commands
Просмотреть все активные сессии сервисного процессора
-> show /SP/sessions
Часть 2. Настройка сети.
Для установки статического IP адресса на ILOM используется коммандный режим. Введите следующую команду чтобы посмотреть на параметры настройки сети.
-> show /SP/network
Давайте теперь настроим IP адресс для управляющего порта Ethernet.
Введите следующие команды для установки статического IP адресса LAN конфигурации.
-> set pendingipaddress=10.1.10.100
-> set pendingipnetmask=255.255.255.0
-> set pendingipgateway=10.1.10.1
-> set pendingipdiscovery=static
-> set commitpending=true
После чего давайте включим службу Secure Shell (SSH)
-> set /SP/services/ssh state=enabled
Теперь мы можем заходить на управляющий порт удаленно при помощи ssh
# ssh -l root 10.1.10.100
Password:
Sun(TM) Integrated Lights Out Manager
Version 2.0.4.2
->
Для просмотра ключей SSH используйте
-> show /SP/services/ssh/keys/dsa
-> show /SP/services/ssh/keys/rsa
Для просмотра параметров Веб сервера используйе
-> show /SP/services/http
-> show /SP/services/https
Чтобы настроить автоматическое перенаправление с HTTP на HTTPS, введите:
-> set /SP/services/http secureredirect=true
Для изменения порта HTTPS на 445, введите:
-> set /SP/services/https port=445
Часть 3. Мониторинг системы.
Сервера оборудованы датчиками, которые показывают состояние критических компонентов. Например, они выводят информацию о таких критериях как температура, напряжение и скорости вентиляторов. Чтобы показать состояние датчиков, используйте команду:
-> show /SYS/sensor
Где "sensor" это специфический сенсор. Например следующая команда показывает состояние сенсора /SYS/MB/V_+12V0_MAIN-> show /SYS/MB/V_+12V0_MAIN
Часть 4. Управление пользователями.
/SYS/MB/V_+12V0_MAIN
Targets:
Properties:
type = Voltage
class = Threshold Sensor
value = Not Readable
upper_nonrecov_threshold = 13.23 Volts
upper_critical_threshold = 13.10 Volts
upper_noncritical_threshold = 12.85 Volts
lower_noncritical_threshold = 11.21 Volts
lower_critical_threshold = 10.96 Volts
lower_nonrecov_threshold = 10.84 Volts
ILOM поддерживает до 10 пользовательских учетных записей. Две из них root и anonymous который установлены по умолчанию и не могут быть удалены. Судя иэ этого вы можете создать еще 8 пользовательских учеток. Каждый пользователь должен иметь 3 значения - Имя пользователя, пароль и роль.
Роли включают:
* Администратор - Разрешает доступ ко всем особенностям ILOM, функциям, и командам.
* Оператор - Разрешает ограниченный доступ к особенностям ILOM, функциям, и командам. Вообще, Операторы не могут изменять параметры настройки конфигурации.
Операторы не могут:
- Просматривать или изменять LDAP настройки
- Добавлять и удалять пользователей
- Изменять сетевые настройки (только просмотр)
- Изменять настройки NTP (только просмотр)
- Изменять настройки SNMP (только просмотр)
- Изменять настройки HTTP (только просмотр)
Для создания нового пользователя придерживайтесь ввода следующего синтаксиса
-> create /SP/users/username password=password role=role
Например создание пользователя admin с правами администратора и пользователя noc с правами оператора.
-> create /SP/users/admin password=s0m3paS$w0rD role=administrator
-> create /SP/users/noc password=123,qw^RTy role=operator
Удалить пользователя можно так
-> delete /SP/users/username
Просмотреть созданых пользователей можно
-> show /SP/users
Для внесения изменений пользователя например поменять роль пользователю admin с администратора на оператора используйте команду set, например:
-> set /SP/users/admin role=operator
Для изменения пароля введите
-> set /SP/users/admin password
Changing password for user /SP/users/admin/password...
Enter new password:********
Enter new password again:********
New password was successfully set for user /SP/users/admin
P.S. Автор выражает огромную благодарность ресурсу docs.sun.com за помощь в написании этой статьи.
на 13:39 0 коммент.
пятница, 22 февраля 2008 г.
Настройка инициатора iSCSI в RHEL 4x/5x
Протокол iSCSI — разработан для удобной работы с удалеными системами хранения данных. Для работы с устройствами хранения используются команды SCSI, инкапсулированныe в пакеты IP, и пересылаемые в рамках установленных соединений традиционной TCP/IP сети. Протокол iSCSI является стандартизованным по RFC 3720.
В данной статье описывается настройка iSCSI инициатора в операционой системе Red Hat Enterprise Linux веток 4/x и 5/x.
Системы хранения на основе протокола iSCSI могут быть построены на любой физической основе, поддерживающей протокол IP, например 1 GBit или 10 GBit Ethernet. Использование стандартного протокола позволяет применять стандартные средства контроля и управления потоком, а также существенно уменьшает стоимость оборудования по сравнению с сетями Fibre Channel.
iSCSI Target — Программа или контроллер, осуществляющий эмуляцию диска и выполняющие запросы iSCSI.
iSCSI Initiator — Программа, осуществляющая клиентский доступ к iSCSI Target.
Опустим настройку iSCSI-Target. В нашем случае я уже нарезал LUN в 50 Gb на дисковой полке NetApp FAS3050, поэтому займемся сразу же настройкой ПО инициатора.
Настройка iSCSI в RHEL4.x
Шаг 1. Скачиваем пакет iscsi-initiator-utils
После чего устанавливаем его в системе[root@rhel4 ~]# rpm -ihv iscsi-initiator-utils-4.0.3.0-6.i386.rpm
Шаг 2. Редактируем конфигурационый файл /etc/iscsi.conf и /etc/initiatorname.iscsi[root@rhel4 ~]# vi /etc/iscsi.conf
Шаг 3. Ставим сервис iscsi в автозагрузку. После чего запускаем сервис
Continuous=no
HeaderDigest=never
DataDigest=never
ImmediateData=yes
Username=iOsX # Если вы настроили на полке
Password=12345678 # авторизацию, то вам потребуется
DiscoveryAddress=10.0.0.111 # ввести логин и пароль
[root@rhel4 ~]# vi /etc/initiatorname.iscsi
InitiatorName=iqn.1993-08.com.netapp:sn.102177195[root@rhel4 ~]# chkconfig iscsi on
Если система выдаст ошибку на то что не может подгрузить модуль iscsi_sfnet, то установите пакет linux-iscsi-module и подгрузите модуль.
[root@rhel4 ~]# service iscsi start
Checking iscsi config: [ OK ]
Loading iscsi driver: [ OK ]
Starting iscsid: [ OK ][root@rhel4 ~]# rpm -ihv linux-iscsi-module-2.4.20-30.9-3.4.2-1.i386.rpm
Шаг 4. Проверяем диски. Находим то что нам требуется. Создаем партицию, форматируем и монтируем.
[root@rhel4 ~]# modprobe iscsi_sfnet[root@rhel4 ~]# fdisk -l
Настройка iSCSI в RHEL5.x
....
....
Disk /dev/sdb: 52.6 GB, 52613349376 bytes
64 heads, 32 sectors/track, 50176 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
....
[root@rhel4 ~]# fdisk /dev/sdb
partition> n
> 1
>
>
partition> w
[root@rhel4 ~]# partprobe
[root@rhel4 ~]# mkfs.ext3 /dev/sdb1
[root@rhel4 ~]# mkdir /directory
[root@rhel4 ~]# mount /dev/sdb1 /directory
[root@rhel4 ~]# df -h /directory
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 49G 85M 46G 1% /directory
Изначально в RHEL 5 добавили поддержку iSCSI на уровне ядра, а также внедрили добавление iscsi-target'ов при установке системы что является очень удобным способом первоначальной конфигурации системы в дальнейшем.
Шаг 1. Устанавливаем пакет iscsi-initiator-utils через Yum.[root@rhel5 ~]# yum install -y iscsi-initiator-utils
Шаг 2. Редактируем конфигурационый файл /etc/iscsi/initiatorname.iscsi[root@rhel5 ~]# vi /etc/iscsi/initiatorname.iscsi
Шаг 3. Ставим сервис iscsi в автозагрузку. После чего запускаем сервис
InitiatorName=iqn.1993-08.com.netapp:sn.102177195[root@rhel5 ~]# chkconfig iscsi on
Шаг 4. Проверяем доступный target на дисковой полке NetApp
[root@rhel5 ~]# chkconfig iscsid on
[root@rhel5 ~]# service iscsi start
[root@rhel5 ~]# service iscsid start[root@rhel5 ~]# iscsiadm -m discovery -t sendtargets -p 10.0.0.111
Шаг 5. В завершении цепляемся к доступной iSCSI-Target и проверяем диски. После чего находим то что нам требуется. Создаем партицию, форматируем и монтируем.
10.0.0.111:3260,1000 iqn.1993-08.com.netapp:sn.102177195[root@rhel5 ~]# iscsiadm -m -t iqn.1993-08.com.netapp:sn.102177195 \Больше информации по данному продукту и технологии iSCSI вы можете получить прочитав man страницы утилиты iscsiadm
> -p 10.0.0.111:3260 -l
[root@rhel5 ~]# fdisk -l
....
....
Disk /dev/sdb: 52.6 GB, 52613349376 bytes
64 heads, 32 sectors/track, 50176 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
....
[root@rhel5 ~]# fdisk /dev/sdb
partition> n
> 1
>
>
partition> w
[root@rhel5 ~]# partprobe
[root@rhel5 ~]# mkfs.ext3 /dev/sdb1
[root@rhel5 ~]# mkdir /directory
[root@rhel5 ~]# mount /dev/sdb1 /directory
[root@rhel5 ~]# df -h /directory
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 49G 85M 46G 1% /directoryman iscsiadm
В написании статьи автор благодарен нижеперечисленным источникам:
1. /usr/share/doc/iscsi-initiator-utils-VERSION/README.
2. http://ru.wikipedia.org/wiki/ISCSI
3. http://linux-iscsi.sourceforge.net/
на 21:34 0 коммент.
понедельник, 21 января 2008 г.
Построение программных RAID массивов средствами Solaris Volume Manager.
Сегодня, предоставление качественных услуг в сфере информационных технологий довольно сильно зависит от выбора дисковой системы хранения, на которую будет ложится основная нагрузка предоставления сервисов функционирующих 24 часа в сутки и 365 дней в неделю. Для обеспечения надежности функционирования дисковых систем и сохранности данных, используется технология RAID (Redundant Array of Inexpensive Disks). Задача данной статьи - описать технологии создания программных RAID-массивов в операционной системе Sun Solaris 10. Будет подробно описано построение RAID уровней 0, 1, 5 c помощью Solaris Volume Manager (SVM).
Введение
RAID устройства представляют собой набор дисков, объединенных по особым правилам в один виртуальный дисковый носитель. В операционной системе Sun Solaris используется довольно мощный программный продукт для организации RAID устройств - Solaris Volume Manager (SVM). Начиная с Solaris 9 (в Solaris 8 это был отдельный продукт – Solstice Disk Suite), он интегрирован в систему и предоставляет механизмы по созданию не только RAID устройств, но и расширяет функциональные возможности дисковой системы в Sun Solaris.
Не из редких случаев рядовому администратору требуется настроить Software-RAID с нуля, только потому что аппаратного RAID не имеется. И многие задаются вопросом "Почему в серверах компании SUN нет встроенного RAID-контроллера, а в x86 платформах он присутствует ?" На этот вопрос мне помог ответить Юрий Воинов, сертифицированный специалист и инструктор Sun Solaris 10 и Oracle DB.
"Ответ состоит из нескольких пунктов.
1. Компоненты и устройства Sun достаточно быстродействующие и дорогие, чтобы можно было позволить их встраивать "про запас" и "чтобы было". Даже при покупке, например, cерверов Sun x64 с дисками SAS контроллер SAS необходимо устанавливать отдельно (при заказе серверов с дисками SAS он комплектуется по умолчанию). Это не тайваньский ширпотреб, производимый миллионами, куда достаточно впаять китайский чип стоимостью 15 долларов.
2. Sun производит оборудование общего назначения и далеко не во всех случаях требуется наличие аппаратных RAID-контроллеров. У Sun, например, есть парадигма Sun Cluster, согласно которой RAID-контроллер целесообразно размещать на стороне дисковой системы, не на стороне процессорных модулей. Это разумно со всех точек зрения, так как аппаратный RAID серверного класса-сложное самостоятельное устройство, как и было сказано - значительно более дорогое, чем, скажем, ATA/SATA RAID.
3. В соответствие с вышеуказанной парадигмой, в системные блоки устанавливаются высокоскоростные контроллеры ввода-вывода (SCSI/FC-AL etc.), к которым и подключаются оконечные устройства хранения, могущие содержать аппаратные RAID-контроллеры.
В этой связи Sun давно выносит аппаратные RAID-контроллеры в специализированные системы хранения:
http://www.sun.com/storagetek/index.jsp
Почему нет и скорей всего никогда не будет RAID-контроллеров в системных блоках Sun?
Ответ прост. Нецелесообразно. Системные диски зеркалируются средствами Solaris Volume Manager, имеют достаточно статичную структуру и достаточно высокое быстродействие, а также легко и (в силу относительно небольшого объема) быстро резервируются и восстанавливаются штатными системными средствами. Некоторые рабочие станции Sun комплектовались аппаратными RAID-контроллерами SCSI. Но, насколько мне известно, сейчас эти модели сняты с производства."
Собственно после разумного и внятного объяснения, мы перейдем к теме создания RAID массивов.
Часть 1. RAID 0.
RAID 0 (Striping) — Представляет собой совокупность двух или более жестких дисков, которые объединяются в единое логическое устройство, с отсутствием избыточности. Информация разбивается на блоки данных (Ai) и записывается на оба/несколько диска поочередно. За счет этого существенно повышается производительность(от количества дисков зависит кратность увеличения производительности), но страдает надежность всего массива. При выходе из строя любого из входящих в RAID 0 винчестеров полностью и безвозвратно пропадает вся информация. Обычно данный тип RAID настраивают в целях повышения производительности дисковой системы, либо для увеличения ее объема.
RAID-0 устройства можно создавать на всю партицию диска и на отдельные части файловой системы: /(root), /usr, /var, /opt, swap и т.д.
Существует три функциональных механизма работы RAID-0:
- Распределение (stripe)
- Склеивание (concatenation)
- Склеивание «распределенных» томов (concatenated stripe)
База данных состояния метадевайсов.
В самом начале перед процессом создания массивов нам нужно создать так называемую Metadevice State Database (далее - MSD), в которой хранится конфигурация и состояние RAID-устройств в системе. Если система не сможет прочитать информацию с данных баз, то все данные о RAID устройствах исчезнут, а вместе с ними и вся хранившаяся информация. Для хранения MSD используются небольшие отдельные разделы, например на 7-ом слайсе. В этих разделах может храниться несколько копий MSD, которые называются State Database Replicas. Одна SR (реплика) занимает приблизительно 4-5 Мбайт. Рекомендуется создавать как минимум 2 таких реплики, но чем больше тем лучше.
Создание метабаз производится командой metadb, а мониторинг состояния этих баз производится командой metastat. В качестве примера мы возьмем 3 диска и создадим на каждом из них по 3 реплики в отдельном 7-ом слайсе, объемом 15 Мб (3x5=15).suncow # metadb -a -f -c 3 c0t0d0s7 c0t1d0s7 c1t0d0s7
Создание RAID-0 Stripe Volumes.
suncow # metadb
flags first blk block count
a u 16 8192 /dev/dsk/c0t0d0s7
a u 8208 8192 /dev/dsk/c0t0d0s7
a u 16400 8192 /dev/dsk/c0t0d0s7
a u 16 8192 /dev/dsk/c0t1d0s7
a u 8208 8192 /dev/dsk/c0t1d0s7
a u 16400 8192 /dev/dsk/c0t1d0s7
a u 16 8192 /dev/dsk/c1t0d0s7
a u 8208 8192 /dev/dsk/c1t0d0s7
a u 16400 8192 /dev/dsk/c1t0d0s7
При механизме распределения данные рассеиваются по всем частям тома одновременно (параллельно), что позволяет получить повышение производительности дисковой системы. При создании распределенных систем необходимо помнить, что их невозможно создавать на уже существующей файловой системе. Нужно вначале сделать backup файловой системы, затем сконструировать логическое устройство, и восстановить сохраненные данные.
Не создавайте логические тома больше 1Тб, если вы запускаете ПО Solaris с 32-ух битным ядром или используемая версия вашей ОС Solaris 9 4/03.
Теперь давайте а качестве примера возьмем эти 3 диска и объединим их в Stripe. Для этого мы с помощью format также приготовили отдельные слайсы на каждом из дисков по 6 Гб.suncow # metainit d10 1 3 c0t0d0s0 c0t1d0s0 c1t0d0s0
Данной командой мы создали RAID-устройство d10 как 1 отдельное устройство (цифра 1) с 3 дисками (цифра 3).
d10: Concat/Stripe is setup
Проверяем что у нас получилось.suncow # metastat d10
Создание RAID-0 Concatenation Volumes.
d10: Concat/Stripe
Size: 12514635 blocks (6.0 GB)
Stripe 0: (interlace: 1024 blocks)
Device Start Block Dbase Reloc
c0t0d0s0 32130 Yes Yes
c0t1d0s0 32130 Yes Yes
c1t0d0s0 32130 Yes Yes
Device Relocation Information:
Device Reloc Device ID
c1d1 Yes id1,cmdk@AMaxtor_2F020J0=F14BT74E
При механизме «сoncatenation» (склеивание), данные записываются в первую часть логического тома, а по его заполнении – во вторую, и т.д. Очевидно, что в данном случае никакого повышения производительности операций ввода/вывода не происходит, так как данные записываются последовательно. RAID-0 в режиме «сoncatenation» оптимально подходит для ситуаций, когда необходимо организовать дисковый раздел определенного размера, собрав его из нескольких частей. Важной особенностью данного механизма, является возможность динамически расширять размер логического тома, добавляя новые части дисков. Кроме того, эти действия можно проводить на «активной» файловой системе без нарушения ее работоспособности.
suncow # metainit d30 3 1 c0t0d0s1 c0t1d0s1 c1t0d0s1
Этот пример создает склеиваемое устройство d30, которое состоит из трех "stripes" (цифра 3), каждая из единого слайса (цифра 1 в передней части каждого слайса). Давайте проверим наше устройство.
d30: Concat/Stripe is setupsuncow # metastat d30
Давайте смонтируем данное устройство в системе.
d30: Concat/Stripe
Size: 12627090 blocks (6.0 GB)
Stripe 0:
Device Start Block Dbase Reloc
c0t0d0s1 0 No Yes
Stripe 1:
Device Start Block Dbase Reloc
c0t1d0s1 0 No Yes
Stripe 2:
Device Start Block Dbase Reloc
c1t0d0s1 0 No Yes
Device Relocation Information:
Device Reloc Device ID
c1d1 Yes id1,cmdk@AMaxtor_2F020J0=F14BT74Esuncow # newfs /dev/md/dsk/d30
Для добавления еще одного диска в наш сoncatenation-volume нужно выполнить команду metattach:
/dev/md/rdsk/d30: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/md/rdsk/d30: (y/n)? y
Warning: 13230 sector(s) in last cylinder unallocated
/dev/md/rdsk/d30: 12627090 sectors in 836 cylinders of 240 tracks, 63 sectors
6165.6MB in 120 cyl groups (7 c/g, 51.68MB/g, 6272 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 105936, 211840, 317744, 423648, 529552, 635456, 741360, 847264, 953168,
11649472, 11755376, 11861280, 11967184, 12073088, 12178992, 12284896,
12390800, 12496704, 12602608
suncow # mkdir /data
suncow # mount /dev/md/dsk/d30 /data/
suncow # df -h /data/
Filesystem size used avail capacity Mounted on
/dev/md/dsk/d30 5.9G 6.0M 5.9G 1% /datasuncow # metattach d20 c1t1d0s1
И после пересоздания файловой системы у нас будет диск объемом в 8 Гб.
d20: component is attached
Теперь удалим наши RAID-устройстваsuncow # umount /data
Часть 2. RAID 1.
suncow # metaclear -a
d20: Concat/Stripe is cleared
RAID 1 (Mirroring — «зеркало»). Обеспечивает приемлемую скорость записи и выигрыш по скорости чтения за счет распараллеливания запросов. Имеет высокую надежность - работает до тех пор пока функционирует хотя бы один диск в массиве. Недостаток заключается в том, что приходится выплачивать стоимость двух жёстких дисков, получая полезный объем одного жёсткого диска (классический случай, когда массив состоит из двух дисков).
Стандартное «зеркало» состоит из двух частей: «главного зеркала» и «вторичного зеркала». Вы можете добавить еще одно либо два дополнительных «вторичных зеркала» и использовать их для backup-а системы. Таким образом, можно «на горячую» производить архивирование файловой системы, организованной механизмом RAID-1
SVM поддерживает два вида RAID-1 устройств:
- RAID-0+1 – технология зеркалирования «распределенных» томов
- RAID-1+0 – технология распределения «зеркальных» томов
В случае использования технологии RAID-0+1, выход из «строя» одной из частей «распределенного» тома повлечет за собой нарушение работы всего «вторичного зеркала».
Пример организации технологии RAID-0+1 представлен на следующем рисунке:
В отличие от RAID-0+1, технология 1+0 более защищена от возможных сбоев при выходе из «строя» одного из компонентов в любом зеркале, нарушения работы не произойдет. Как видно на следующем рисунке, RAID-1+0 представляет собой совокупность зеркальных томов, объединенных в «распределенное» логическое устройство:
Создание RAID-1.
Давайте рассмотрим пример построение RAID-1 на основе настройки зеркала для корневого раздела / (root). Для сокращения нашего времени и объема статьи мы не будем углубляться в описание настройки деления слайсов. Хочу лишь отметить что слайсы должны быть не меньше друг друга по объему, а также отмечу сразу что метабазы уже созданы.
В начале нам потребуется создать RAID-0 Concatenation устройства которые в последствии мы объединим в RAID-1 Mirror. За пример возмем 2 диска с нулевыми слайсами которые мы и будем зеркалить.
Создаем устройство d11 из слайса c0d0s0 на котором находится корневой раздел системыsuncow # metainit -f d11 1 1 c0d0s0
Создаем устройство d12 из слайса c1d1s0 который зазеркалируем с корневым разделом системы.
d11: Concat/Stripe is setupsuncow # metainit -f d12 1 1 c1d1s0
Создаем устройство d10 как Mirror-device и добавляем в него устройство d11.
d12: Concat/Stripe is setupsuncow # metainit d10 -m d11
Теперь надо указать нашей системе что корневой раздел это /dev/md/dsk/d10. Для это мы воспользуемся командой metaroot.
d10: Mirror is setupsuncow # metaroot d10
Теперь посмотрим что конкретно поменяла эта команда в нашей системе.suncow # cat /etc/vfstab | grep md
Отпраляем систему на reboot для ее загрузки с устройства d10 и возможности добавления в зеркало d10 второго устройства d12.
/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no -
suncow # tail /etc/system | grep md
rootdev:/pseudo/md@0:0,12,blksuncow # init 6
Теперь добавляем устройство d12 в наше зеркалоsuncow # metattach d10 d12
И смотрим результат состояния устройств.
d10: submirror d12 is attachedsuncow # metastat d10
Как мы видим все прошло успешно и в данный момент проходит синхронизация нашего зеркала. Теперь нужно установить загрузочную область (bootblk) на устройство d12 для возможности загружаться с него.
d10: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d12
State: Resyncing
Resync in progress: 4 % done
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 1048707 blocks (512 MB)
d11: Submirror of d10
State: Okay
Size: 10635030 blocks (5.1 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0d0s0 0 No Okay Yes
d12: Submirror of d10
State: Resyncing
Size: 10635030 blocks (5.1 GB)
Stripe 1:
Device Start Block Dbase State Reloc Hot Spare
c1t1s0 0 No Okay Yes
Device Relocation Information:
Device Reloc Device ID
c0d0 Yes id1,cmdk@AST380011A=5JV3A9CR
c1d1 Yes id2,cmdk@AST345093B=5LJ34KKE
Установить bootblk можно с помощью команды installboot:
Для sparc-платформы команда будет выглядеть так:
suncow # installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1d1s0
Для х86-платформы немного по другому:
suncow # installboot /usr/platform/`uname -i`/lib/fs/ufs/pboot \
/usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1d1s2
Теперь осталось лишь прописать в OpenBoot (ok) альтернативный вариант загрузки. Сперва надо определмть физическое имя для нашего раздела c1d1s0.suncow # ls -l /dev/rdsk/c1d1s0
Теперь переходим в командный режим OpenBoot
lrwxrwxrwx 1 root root 47 Dec 28 09:05 /dev/rdsk/c1d1s0 ->../../devices
/pci@1c,600000/scsi@2/sd@1,0:e,rawsuncow # init 0
Для удобства создаем удобный alias для физического разделаok nvalias mirror /pci@1c,600000/scsi@2/disk@1,0:e
Смотрим в каком порядке выставлена загрузкаok printenv boot-device
Указываем новый порядок загрузки
boot-device= disk netok setenv boot-device disk mirror net
Грузимся с зеркального раздела для проверки загрузки.
boot-device= disk mirror netok boot mirror
Также можно использовать утилиту eeprom для конфигурации OpenBoot. Данный вариант подходит если вы находитесь далеко от сервера либо вам нежелательна остановка сервисов и ПО.suncow # eeprom nvalias mirror /pci@1c,600000/scsi@2/disk@1,0:e
В случае какого либо рода сбоя основного диска, система автоматически загрузится с резервного раздела.
suncow # eeprom nvalias mirror /pci@1c,600000/scsi@2/disk@1,0:e
suncow # setenv boot-device disk mirror net
boot-device= disk mirror net
Для задачи настроить зеркала на все рабочие разделы (например /, /var, /usr, /opt итд), советую воспользоваться командой prtvtov. Например ниже приведенная команда перенесет таблицу разбиения первого диска на второй.suncow # prtvtoc /dev/rdsk/c0t0d0s2 | fmthard –s - \
Эта операция экономит вам время без использования утилиты format.
/dev/rdsk/c1t1d1s2
Давайте теперь представим что вам нужно удалить то зеркало которое мы только что настроили. Для начала там нужно вывести из зеркала то устройство которое мы подсоединили.suncow # metadetach d10 d12
Указываем системе «boot»-устройство и перезагрузим ее:
d10: submirror d12 is detachedsuncow # metaroot /dev/dsk/c0d0s0
Удаляем зеркало d10 и ассоциированное с ним RAID-0 устройство d11:
suncow # init 6suncow # metaclear -r d10
Удаляем RAID-0 устройство d12:
d10: Mirror is cleared
d11: Concat/Stripe is clearedsuncow # metaclear d12
Часть 3. RAID 5.
d12: Concat/Stripe is cleared
Cамый популярный из уровней, в первую очередь благодаря своей экономичности. Жертвуя ради избыточности емкостью всего одного диска из массива, мы получаем защиту от выхода из строя любого из винчестеров тома. Данный тип устройств очень похож на технологию RAID-0, но, в отличие от
«распределенных» томов, содержит специальную область на каждом диске с данными контроля четности одного из компонентов тома.
На запись информации на том RAID 5 тратятся дополнительные ресурсы, так как требуются дополнительные вычисления, зато при чтении (по сравнению с отдельным винчестером) имеется выигрыш, потому что потоки данных с нескольких накопителей массива распараллеливаются.
Если по какой-либо причине компонент RAID-5 системы выходит из «строя», то
данные, которые были на нем, автоматически восстановятся на основании информации с других компонентов тома. Для того чтобы данный механизм успешно функционировал, количество дисков, объединяемых в RAID-5, должно быть больше трех. Если вы не используете Hot Spare Pools (пул дисков «горячей» замены), то система может восстановить только один поврежденный компонент тома. Суммарный размер RAID-5 тома равен количеству дисков, объединенных в том, уменьшенному на размер одного дискового носителя.
RAID-5 нельзя использовать для разделов: /(root), /usr и swap, а также для уже
существующих файловых систем.
Создание RAID-5.
RAID-5 соберается довольно легко. Достаточно выполнить всего лишь одну команду:suncow # metainit d20 -r c1t0d0s2 c2t0d0s2 c3t0d0s2
Собственно все. А добавляются новые диски в рабочий RAID-5 аналогично тому как это делалось с зеркальными устройствами с помощью команды metattach:
d45: RAID is setup
suncow # metastat d20
d20: RAID
State: Okay
Interlace: 32 blocks
Size: 10080 blocks
Original device:
Size: 8087040 blocks
Device Start Block Dbase State Hot Spare
c1t0d0s2 330 No Okay
c2t0d0s2 330 No Okay
c3t0d0s2 330 No Okaysuncow # metattach d20 c4t0d0s2
Замена поврежденных томов в RAID-5 устройстве осуществляется с помощью механизма пулов «горячей» замены либо в «ручную», используя команду metareplace:
d20: column is attachedsuncow # metareplace d20 c3t0d0s2 c3t1d0s2
Hot Spare Pools (пулы «горячей» замены). Пулы «горячей» замены предоставляют возможность повысить надежность функционирования RAID-1 и RAID-5 устройств. Они представляют собой набор дисковых частей, которые по мере необходимости используются вместо поврежденных частей RAID-тома. Когда происходит ошибка в работе RAID, система просматривает пул и выбирает доступные и подходящие по размеру предварительно заготовленные «разделы замены». Найдя подходящий раздел, она помечает его как “In-Use”, включает в RAID-том и проводит синхронизацию данных. Вы можете создавать и изменять пулы, назначать их разным RAID устройствам, но сами эти устройства могут ассоциироваться только с одним объявленным пулом. RAID устройства используют пулы до тех пор, пока поврежденные части не
d20: device c3t0d0s2 is replaced with c3t1d0s2
будут заменены. После этого ресурс пула освобождается, устанавливается в состояние “Available” и может использоваться снова.
Создаются пулы с помощью команды metainit:suncow # metainit hsp001 c2t2d0s2 c3t2d0s2
Добавить диски в существующий пул можно так
hsp001: Hotspare pool is setup
suncow # metastat hsp001
hsp001: 1 hot spare
c2t2d0s2 Available 16800 blocks
c3t2d0s2 Available 16800 blockssuncow # metahs -a hsp001 /dev/dsk/c3t0d0s2
Если у нас создано несколько пулов, и мы хотим добавить данный диск во все имеющиеся у нас пулы «горячей» замены, то необходимо добавить опцию –all:
hsp001: Hotspare is added
suncow # metastat hsp001
hsp001: 1 hot spare
c2t2d0s2 Available 16800 blocks
c3t2d0s2 Available 16800 blocks
c3t0d0s2 Available 16800 blockssuncow # metahs -a -all /dev/dsk/c3t0d0s2
После того как пулы созданы, их необходимо назначить RAID-устройствам, которые будут ими пользоваться в случае необходимости. Добавим к созданному нами зеркалу d10, точнее к его компонентам d11 и d12, пул «горячей» замены — hsp001:
hsp001: Hotspare is added
hsp002: Hotspare is added
hsp003: Hotspare is addedsuncow # metaparam -h hsp001 d11
Для RAID-5 процедура ассоциации с пулом «горячей» замены будет выглядеть следующим образом:
suncow # metaparam -h hsp001 d12
suncow # metastat d10
d10: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d12
State: Okay
d11: Submirror of d10
State: Okay
Hot spare pool: hsp001
d12: Submirror of d10
State: Okay
Hot spare pool: hsp001suncow # metaparam -h hsp001 d20
Если необходимо изменить пул, который используется для RAID-устройства, то
suncow # metastat d20
d20: RAID
State: Okay
Hot spare pool: hsp001
...
выполнить это можно с помощью команды metaparam и опции –h:suncow # metastat d20
А открепить пул можно так
d20: RAID
State: Okay
Hot spare pool: hsp001
...
suncow # metaparam -h hsp002 d20
suncow # metastat d20
d20: RAID
State: Okay
Hot spare pool: hsp002
...suncow # metastat d20
Вот собственно и все что я хотел рассказать в этой заметке о построении RAID в операционой системе Sun Solaris 10. Эта статья была для меня не только как закрепление собственных знаний, но и благодаря другим публикациям я усвоил для себя кое что новое и надеюсь что эта статья послужит вам только пользой.
d20: RAID
State: Okay
Hot spare pool: hsp002
...
suncow # metaparam -h none d20
suncow # metastat d20
d20: RAID
State: Okay
Hot spare pool:
...
Используемая литература
1. Solaris 10. “Solaris Volume Manager Administration Guide”.
(http://docs.sun.com)
2. Solaris Volume Manager. Конфигурирование RAID устройств”.
(http://www.opennet.ru/docs/RUS/svm_raid/svm.pdf)
на 0:26 0 коммент.
четверг, 10 января 2008 г.
Виртуализация гостевых ОС. Технология BrandZ
В 2005 году компания Sun объявила о выходе программы BrandZ (ранее именовавшеся Project Janus), позволяющей выполнять Linux-приложения под управлением Solaris 10. Проект BrandZ является фреймворком расширяющим инфраструктуру Solaris Zones в создании Branded Zones, который позволяет запускать внутри Solaris Zone операционные среды отличные от Solaris. Например, создать изолированное окружение с GNU или BSD утилитами от Linux или FreeBSD.
Метка lx позволяет запускать Linux приложения на машине с ОС Solaris в пределах зон, которые полностью управляемы Linux.
В официальные релизы Sun Solaris 10 данное расширение еще не входит и доступно только в версиях OpenSolaris Express (Project Nevada). На данный момент поддерживается Linux CentOS и RHEL (Kernel 2.4). Также во второй половине 2008 года я думаю свешится появление технологии BrandZ в коммерческой версии Solaris 10 под наименовнаием Solaris Containers for Linux Applications.
Метка lx - это не дистрибутив Linux и не содержит никакого программного обеспечения Linux вообще. Метка lx позволяет использовать программное обеспечение Linux, чтобы запускать его на машине с ядром Solaris и включает инструменты необходимые для установки CentOS или Red Hat Enterprise Linux в зоне на системе Solaris. Метка lx на сегодня поддерживается только на x86/x64 системах, загруженных с 32-битовым или с 64-битовым ядром. Независимо от основного ядра, только 32-битовые приложения Linux в состоянии запускаться. BrandZ не поддерживает SPARC Linux. Это могло быть интересным проектом сообщества Sun Solaris, но пока это не состоит в будующих планах компании Sun.
Часть 1. Настройка Solaris Zones для работы с BrandZ
Для настройки BrandZ создадим зону. Все действия описанные ниже проиводятся в Sun OpenSolaris Express CE Build 78 (Nevada)bash-3.2# zonecfg -z linux_rhel
Кто сталкивался с настройкой зон уже понял в чем собственно является расширение BrandZ на первый взгляд. Шаблон SUNWlx который включается при создании зоны присваевает этой зоне метку lx. Далее после настройки зоны нам нужно установить саму ОС.
centos: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:centos> create -t SUNWlx
zonecfg:centos> set zonepath=/zfs/linux_rhel
zonecfg:centos> add net
zonecfg:centos:net> set address=192.168.1.235
zonecfg:centos:net> set physical=rtls0
zonecfg:centos:net> end
zonecfg:centos> verify
zonecfg:centos> commit
zonecfg:centos> exit
bash-3.2# chmod 700 /zfs/linux_rhel
Часть 2. Установка операционой системы в Branded Zone
Установка гостевых ОС на сегодня проиходит 3 способами.
1. Установка с диска
2. Установка с ISO-образа
3. Установка из готового образа файловой системы ОС (Tarball)
Для всех способов применяется ключ -d для указания источника установки. Также после указания истояника установки можно указывать вид установки, например server или desktop.
В этой заметке я буду использовать ISO образы Red Hat Enterprise Linux 3.7 и Tarball Centoss 3.7.
Установка Red Hat Enterprise Linux 3.7 в Branded Zone из ISO образов.bash-3.2# ls -l /mnt/nfs/Software/ISO/RedHat/RHEL3x/*
После того как установка закончилась, запустим нашу новую зону.
total 1738404
-rwxr-xr-x 1 ftp ftp 153401344 Jan 3 18:31 RHEL3.7-i386-AS-Disc1.iso
-rwxr-xr-x 1 ftp ftp 656138240 Jan 3 18:33 RHEL3.7-i386-AS-Disc2.iso
-rwxr-xr-x 1 ftp ftp 667158528 Jan 3 18:34 RHEL3.7-i386-AS-Disc3.iso
-rwxr-xr-x 1 ftp ftp 301643776 Jan 3 18:35 RHEL3.7-i386-AS-Disc4.iso
bash-3.2# zoneadm -z linux_rhel install -d /mnt/nfs/Software/ISO/RedHat/RHEL3x/ server
cannot create ZFS dataset disk01/linux_rhel: dataset already exists
Checking for valid Linux distribution ISO images...
Installing distribution 'Red Hat Enterprise Linux 3 AS (CD Set)'...
Installing cluster 'server'
Installing miniroot for zone 'linux_rhel'.
Setting up the initial lx brand environment.
System configuration modifications complete.
Duplicating miniroot; this may take a few minutes...
Booting zone miniroot...
Miniroot zone setup complete.
Performing full install for zone 'linux_rhel'.
Attempting to locate 426 packages...
Installing zone 'z_linux' from
ISO "/mnt/nfs/Software/ISO/RedHat/RHEL3x//RHEL3.7-i386-AS-Disc1.iso".
Installing 304 packages; this may take several minutes...
...
...
Completing installation; this may take a few minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of Red Hat Enterprise Linux 3 to zone
'z_linux' completed Sat Jan 5 13:31:27 ALMT 2008.
Installation of zone 'z_linux' completed successfully.
Details saved to log file:
"/zfs/z_linux/root/var/log/z_linux.install.15754.log"bash-3.2# zoneadm list -cv
После прямого подключения к зоне в процессе ее загрузки вы можете увидеть следующее
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- linux_rhel installed /zfs/linux_rhel lx shared
bash-3.2# zoneadm -z z_linux boot
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
3 linux_rhel running /zfs/linux_rhel lx sharedbash-3.2# zlogin -C linux_rhel
Собственно все, система установлена и готова к работе. Сама установка у меня лично заняла где то минут 20-30.
[Connected to zone 'linux_rhel' console]
[NOTICE: Zone booting up]
INIT: version 2.85 booting
Welcome to Red Hat Enterprise Linux AS
Press 'I' to enter interactive startup.
Configuring kernel parameters: [ OK ]
Setting clock : Wed Jan 9 13:20:10 EST 2008 [ OK ]
Setting hostname z_linux: [ OK ]
Checking root filesystem [ OK ]
Activating swap partitions: [ OK ]
Checking filesystems [ OK ]
Mounting local filesystems: [ OK ]
Enabling swap space: [ OK ]
INIT: Entering runlevel: 3
Entering non-interactive startup
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
Starting automount: No Mountpoints Defined [ OK ]
Starting cups: [ OK ]
Starting sshd: [ OK ]
Starting crond: [ OK ]
..
..
Red Hat Enterprise Linux AS release 3 (Taroon Update 7)
Kernel 2.4.21 on an i686
linux_rhel login:
Установка Centoss 3.7 в Branded Zone из Tarball.
Тут все намного легче потому что этот архив называемый tarball, является готовым снимком файловой системы с Centoss и является готовым решением для BrandZ от Sun Microsystems, который можно скачать с сайта проекта BrandZ.
Для начала создадим зонуbash-3.2# zonecfg -z linux_centos
Далее берем готовый тарбал скаченный отсюда и начинаем обычную установку которая длится минут 10-15.
centos: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:centos> create -t SUNWlx
zonecfg:centos> set zonepath=/zfs/linux_centos
..
..
zonecfg:centos> verify
zonecfg:centos> commit
zonecfg:centos> exit
bash-3.2# chmod 700 /zfs/linux_centos/bash-3.2# zoneadm -z centos install -d /zfs/centos_fs_image.tar.bz2
Вот и все. На сегодня о BrandZ я написал все что знал сам, а то что не написал либо не знаю либо подзабыл :)
cannot create ZFS dataset disk01/linux_centos: dataset already exists
Installing zone 'linux_centos' at root directory '/zfs/linux_centos'
from archive '/zfs/centos_fs_image.tar.bz2'
This process may take several minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of zone 'linux_centos' completed successfully.
Details saved to log file:
"/zfs/linux_centos/root/var/log/centos.install.645.log"
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- linux_rhel running /zfs/linux_rhel lx shared
- linux_centos installed /zfs/linux_centos lx shared
bash-3.2# zoneadm -z linux_centos boot
bash-3.2# zlogin linux_centos
-bash-2.05b# uname -a
Linux centos 2.4.21 BrandZ fake linux i686 i686 i386 GNU/Linux
-bash-2.05b# cat /etc/redhat-release
CentOS release 3.7 (Final)
В следующий раз попробую написать об установке в Branded-zones ОС с ядром 2.6
Проект BrandZ: http://opensolaris.org/os/community/brandz/
Установка BrandZ: http://opensolaris.org/os/community/brandz/install/
на 0:51 0 коммент.
среда, 9 января 2008 г.
Настройка распределеня ресурсов CPU в зонах Sun Solaris 10
Цель данной статьи показать настройку распределеня физических процессоров для каждой зоны в отдельности. Это будет полезно когда на сервере не один процессор и необходимо каждой зоне выделить определенное их количество. В данном примере мы имеем реальный сервер Fujitsu-Siemens PrimePower 850 c 16 процессорами и в дальнейшем нам нужно настроить 3 зоны следующим образом.
1. zweb - 1 процессор
2. zapp - 6 процессоров
3. zdev - 9 процессоров
А нижеприведенный рисунок объясняет нашу задачу графически. Собственно мы не будем углублятся в описание создания зон, так как их описание имеется здесь и на других различных ресурсах Интернета. Мы займемся непосредственно распределением процессоров.
Давайте с начала посмотрим состояние наших зонbash# zoneadm list -cv
Приступим.
ID NAME STATUS PATH BRAND IP
0 global running / native shared
5 zweb running /zones/z.zweb native shared
6 zapp running /zones/z.zapp native shared
7 zdev running /zones/z.zdev native shared
В Solaris 10 имеется замечательный демон управления ресурсами poold, с котором мы и будем работать.
Для начала проверим запущен ли он уже или нет.bash# ps -eaf | grep poold
Как мы видим он не запущен, поэтому ответная реакция на попытку просмотра информации о пулах будет следующая.
root 20019 18948 0 15:03:58 pts/3 0:00 grep pooldbash# pooladm
Запустим службу poold с помощью команды pooladm и ключа -е
pooladm: couldn't open pools state file: Facility is not activebash# pooladm -e
Затем без всяких опций и ключей команда pooladm должна вывести нам всю имеющуюся информацию о запущеной конфигурации пулов.
bash# pgrep poold
20237bash# pooladm
Для реализации нашего плана, нам требуется создать (так проще) конфигурационый файл наших будующих пулов CPU. Это выполняется командой poolcfg
system default
string system.comment
int system.version 1
boolean system.bind-default true
string system.poold.objectives wt-load
pool pool_default
int pool.sys_id 0
boolean pool.active true
boolean pool.default true
int pool.importance 1
string pool.comment
pset pset_default
pset pset_default
int pset.sys_id -1
boolean pset.default true
uint pset.min 1
uint pset.max 65536
string pset.units population
uint pset.load 19
uint pset.size 16
string pset.comment
cpu
int cpu.sys_id 5
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 4
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 7
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 6
string cpu.comment
string cpu.status on-line
...
...bash# cat /zones/settings/zonepoolcfg
Теперь нам необходимо обновить нашу конфигурацию пулов используя poolcfg с ключем -f для указания конфигурационых настроек.
# 1. Указываем 1 процессор для zweb-pset
create pset zweb-pset ( uint pset.min = 1; uint pset.max = 1 )
# 2. Создаем новый пул вызывающий zweb-pool
create pool zweb-pool
# 3. Ассоциируем пул zweb-pool с zweb-pset
associate pool zweb-pool ( pset zweb-pset )
create pset zapp-pset ( uint pset.min = 6; uint pset.max = 6 )
create pool zapp-pool
associate pool zapp-pool ( pset zapp-pset )
create pset zdev-pset ( uint pset.min = 9; uint pset.max = 9 )
create pool zdev-pool
associate pool zdev-pool ( pset zdev-pset )bash# poolcfg -f /zones/settings/zonepoolcfg
Эта ошибка возникла потому что конфигурационый файл /etc/pooladm.conf должен существовать перед каким либо обновлением его самого. Используйте ключ -s комманды pooladm для сохранения активной конфигурации пулов из памяти в /etc/pooladm.conf
poolcfg: cannot load configuration from /etc/pooladm.conf:
No such file or directorybash# pooladm -s
Теперь этот файл существует и мы можем повторить попытку обновления конфигурационых настроек пулов с помощью утилиты pooladm и ключа -f
bash# ls -l /etc/pooladm.conf
-rw-r--r-- 1 root root 3105 Jan 10 11:15 /etc/pooladm.confbash# poolcfg -f /var/zones/zonepoolcfg
Альтернативно написанию скрипта мы можем прописать следующие команды для обновления конфигурации но создание скрипта дало нам преимущество в удобстве.bash# poolcfg -c 'create pset zweb-pset ( uint pset.min = 1; uint pset.max = 1 )'
Следующий шаг является активацией конфигурации из файла /etc/pooladm.conf в память, используя команду pooladm с ключом -c
bash# poolcfg -c 'create pool zweb-pool'
bash# poolcfg -c 'associate pool zweb-pool ( pset zweb-pset )'
... итдbash# pooladm -c
А теперь проверим что у нас получилосьbash# psrset
Как мы видим у нас получилось 3 профайла с одним, шестью и десятью процессорами. Теперь я думаю многие уже понимают как мы поступим дальше. Именно эти профайлы и будут использовать наши зоны. Но сначала мы посмотрим что у нас получилось более детально. Опять используем команду pooladm без всяких опций и ключей.
user processor set 1: processor 0
user processor set 2: processors 1 2 3 4 5 6
user processor set 3: processors 7 8 9 10 11 12 13 14 15
bash# poolstat
pset
id pool size used load
1 zapp-pool 6 0.00 0.00
0 pool_default 3 0.00 0.02
3 zweb-pool 1 0.00 0.00
2 zdev-pool 6 0.00 0.00bash# pooladm
Теперь обновим конфигурацию наших зон для работы с пулами. Это делается довольно легко но если вы еще не создали зоны, то прошу вас ознакомится с неофициальной заметкой по созданию зон для чайников.
system default
string system.comment
int system.version 1
boolean system.bind-default true
string system.poold.objectives wt-load
pool zapp-pool
int pool.sys_id 1
boolean pool.active true
boolean pool.default false
int pool.importance 1
string pool.comment
pset zapp-pset
...
...
pset zapp-pset
int pset.sys_id 1
boolean pset.default false
uint pset.min 6
uint pset.max 6
string pset.units population
uint pset.load 0
uint pset.size 6
string pset.comment
cpu
int cpu.sys_id 5
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 4
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 1
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 0
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 3
string cpu.comment
string cpu.status on-line
cpu
int cpu.sys_id 2
string cpu.comment
string cpu.status on-line
...
... bash# zonecfg -z zapp
Ну собсвтенно проделываем подобные действия для остальных 2 зон, указывая в опции set pool название профайла пула для определеной зоны.
zonecfg:zapp> set pool=zapp-pool
zonecfg:zapp> verify
zonecfg:zapp> exit
После этого нам требуется перезагрузить наши зоны для активации наших изменений.bash# zoneadm zweb reboot
Все зоны запустились, теперь давайте проверим все ли у нас получилось или нет.
bash# zoneadm zapp reboot
bash# zoneadm zdev reboot
bash# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
5 zweb shutting_down /zones/z.zweb native shared
6 zapp shutting_down /zones/z.zapp native shared
7 zdev shutting_down /zones/z.zdev native shared
bash# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
5 zweb running /zones/z.zweb native shared
6 zapp running /zones/z.zapp native shared
7 zdev running /zones/z.zdev native shared
zWeb:bash# psrset
zApp:
user processor set 1: processor 0
bash# psrinfo
0 on-line since 01/10/2008 11:35:26bash# psrset
zDev:
user processor set 2: processors 1 2 3 4 5 6
bash# psrinfo
1 on-line since 01/10/2008 11:35:27
2 on-line since 01/10/2008 11:35:27
3 on-line since 01/10/2008 11:35:27
4 on-line since 01/10/2008 11:35:27
5 on-line since 01/10/2008 11:35:27
6 on-line since 01/10/2008 11:35:27bash# psrset
P.S. Что же, мы убедились что при определеных знаниях это все легко. Да впринципе при определеных знаниях в этой определености все кажется простым :)
user processor set 3: processors 7 8 9 10 11 12 13 14 15
bash# psrinfo
7 on-line since 01/10/2008 11:35:26
8 on-line since 01/10/2008 11:35:27
9 on-line since 01/10/2008 11:35:27
10 on-line since 01/10/2008 11:35:27
11 on-line since 01/10/2008 11:35:27
12 on-line since 01/10/2008 11:35:27
13 on-line since 01/10/2008 11:35:28
14 on-line since 01/10/2008 11:35:28
15 on-line since 01/10/2008 11:35:28
Для более детального изучения этой темы смотрите следующие темы:
1. Brendan Gregg's Zones documentation - здесь
2. Sun's HOW-TO Guide: Solaris Containers: Consolidating Servers and Applications - здесь
3. Управление ресурсами в зонах Solaris в официальной документации - здесь
на 18:04 0 коммент.
пятница, 4 января 2008 г.
100 попугаев для Интернет Кафе.
Собственно на написание этой заметки меня сподвигнуло бурное обсуждение реальности 100 Мбит'ного канала в мир для Интернет-кафе, которое возникло на одном из игровых форумов Казахстана (Link). На сегодняшний день Казахстан является довольно отсталой страной 3 мира по развитию Интернета. Но здесь я постораюсь выразить свое имхо по этому поводу.
Есть такое понятие как - "последняя миля". Это условие обеспечения канала связи от клиента строго до коммутационой точки провайдера. Хочу отметить что не до ближайшего коммутатора, а именно до центральных коммутационых узлов провайдера. Если клиент покупает канал в 100Мбит то эта скорость будет поддерживаться только в пределах этой последней мили.
Ниодин провайдер в мире никогда не даст вам гарантию того что пропускная способность в мир будет 100Мбит.
Простейший пример. Ваш канал 100Мбит и вы допустим решили скачать фильм с удаленого ресурса на сервере у которого подключение ограничено в 4Мбит. С какой скоростью вы будете сливать фильм с этого сервера? Конечно же максимум с этой же! И даже если я сейчас открою доступ на свою порнуху через домашний ADSL (128Kbit/s) вы заебетесь скачивать ее у меня за пару минут. А если я например еще и поставлю ограничение в 32кб? Ведь мало кому хочется чтобы весь его канал засрали.
Теперь есть еще один интересный факт. Возмем за пример национального оператора связи Казахтелеком. По официальной информации на сегодняшний день сумарность его каналов связи составляет +/- 1 Террабит (logger.online.kz). Но они все частично загружены, а где то и вообще забиты намертво. Где то 10, 20, 30 а то и 50 Мбит разгружены, а бывает и вовсе не загруженные каналы. То есть если канал сильно загружен уже и без вас и например свободных остается +/- 1 Мбит то при условии наличия BGP маршрутизации ваши запросы перейдут на соседний канал который более разгружен чем первый. А вот тут уже играет вопрос пинга. Ведь канал другой, а значит и маршрутизация изменена в другом направлении. И кстати прошу заметить что у 80% провайдеров Казахстана суммарность внешних каналов связи не привышает 100Мбит.
Вообщем конечное мнение следующее. 100Мбит - это реально! Но это очень дорого, мало того по моему мнению не целесообразно. Я все таки считаю что канал будет 4-5 Мбит. Хотя для интернет-центра учитывая наличие 300-400 компьютеров это хорошие условия. Если все же я ошибаюсь то думаю что интернет будет предоставляться не по абонентской плате (плата 1 раз в месяц), а чисто за трафик. Этим я думаю для этого интернет-центра займется компания Intelsoft (Сумарность внешних каналов кстати ~ 60Мбит). А круглыми сутками забивать 100Мбит никому не посилам учитывая обстоятельства описанные выше. Возможно и скорее всего там будет Proxy-сервер ограничивающий трафик. Вообщем поживем увидем и я думаю мне точно будет что добавить к этой заметке в будующем.
P.S. Все ваши идеи и критику по данной теме вы можете высылать мне на theiosx@gmail.com, где я с удовольствием ознакомлюсь с вашим мнением.
на 23:43 0 коммент.
Установочный DVD образ Solaris 10
Если вы собрались впервые скачать дистрибутив Sun Solaris 10 с официального сайта компании Sun Microsystems в DVD-образе, то вам не помешает маленький совет в котором вы узнаете как правильно склеить один DVD-ISO файл.
Сегменты DVD, которые вы скачиваете, должны быть собраны в один iso-имидж. Sun намеренно разбивает архивы на сегменты размером до 2 Гб, так как многие утилиты некорректно работают с файлами размером свыше 2 Гб, а DVD-имидж может быть больше, чем 2 Гб, особенно с учетом компрессии.sol-10-u4-ga-sparc-dvd-iso-a.zip
Чтобы создать полный DVD ISO нужно объединить 2 части в одно целое. Но сначала нужно само собой разархивировать обе части из ZIP архива, а затем проверить их с помощью md5sum и сравнить с официальным checksum. Последнее я рекомендую делать обязательно, иначе будете ловить геморой по полной!
sol-10-u4-ga-sparc-dvd-iso-b.zip
А вот из этих двух частей один целый ISO создается так:bash3.2# cat sol-10-u4-ga-sparc-dvd-iso-a sol-10-u4-ga-sparc-dvd-iso-b \
Результатом будет корректный ISO-имидж, который можно использовать для прожига DVD. Сегменты, которые Вы скачали по отдельности, не будут работать, пока Вы не конкатенируете их как описано. Вот собственно и все, добавлю только то что это применимо и к SPARC и x86 релизам соответственно.
sol-10-GA-sp-dvd.iso
Скачать Sun Solaris 10 можно здесь
Официальная документация по данной теме здесь
на 12:23 0 коммент.
четверг, 3 января 2008 г.
Создание Solaris зоны в пуле ZFS
Собственно сегодня хочу показать как создать пул ZFS и запустить в нем зону (Solaris Zones/Containers). Все действия само собой производятся на ОС Sun Solaris. У меня это Sun OpenSolaris Express Community Edition (x86/x86_64), но все описаное ниже уже давно работает в официальных релизах, например Sun Solaris 10 8/07.
1. Создание пула ZFS.
Сама по себе процедура довольна легкая так что начнем.
Для начала нам нужно создать пул памяти ZFS. Собственно тут есть несколько вариантов.
1. Пул может быть файлом, который в последующем можно использовать как файловую систему ZFS. Но этот способ я использовал когда у меня не было достаточно жестких дисков для тестов и в боевой системе это нам не подойдет. bash-3.2# mkfile 2G /somefile
2. Использование слайсов диска например c0t0d0s5 и c0t0d0s6.
3. Использование целых дисков. Например c0t0d0 и c0t0d1 итд.
Что же мы будем использовать 2 и 3 способы в качестве показательных выступлений возможности ZFS и Zones. Но для начала давайте посмотрим какие диски у нас есть. bash-3.2# format
Мы будем использовать c1d1 в качестве диска для нашей зоны которую мы назовем - oracle. Этот диск является отдельным диском. А c0d0 будет у нас иметь слайс 6 - который имеет объем более 40 Гб и данный слайс мы подключим как домолнительный диск к нашей зоне oracle.
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0d0
/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
1. c1d1
/pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0
Specify disk (enter its number): ^D
Проверяем установлены ли пакеты ZFS на нашей системе. bash-3.2# pkginfo | grep zfs
Если пакеты не найдены то ознакомтесь с версией вашей операционой системы так как ZFS официально пришел в Solaris 10 только в версии 6/06. Если с версией все нормально то пробуйте установить пакеты с установочных CD.
system SUNWzfskr ZFS Kernel (Root)
system SUNWzfsr ZFS (Root)
system SUNWzfsu ZFS (Usr)
Итак создаем пул памяти и смотрим что у нас получилось bash-3.2# zpool create zones c1d1
Как мы видим после создания пул автоматически монтируется в корневой каталог с тем же именем что и название пула. Давайте поменяем точку монтирования для нашей файловой системы.
bash-3.2# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
zones 19.4G 94K 19.4G 0% ONLINE -
bash-3.2# df -h /zfs
Filesystem size used avail capacity Mounted on
zones 19G 18K 19G 1% /zones bash-3.2# mkdir /zfs
Теперь давайте создадим файловую систему внутри нашего пула для зоны oracle.
bash-3.2# zfs set mountpoint=/zfs zones
bash-3.2# zfs get mountpoint zones
NAME PROPERTY VALUE SOURCE
zones mountpoint /zfs local
bash-3.2# df -h /zfs
Filesystem size used avail capacity Mounted on
zones 19G 18K 19G 1% /zfs bash-3.2# zfs create zones/oracle
Отлично! Теперь давайте ограничем дисковый объем для данной файловой системы. Как мы видим после создание файловой системы она принимает объем всего пула. Но для зоны нам допустим необходимо 7 Гб.
bash-3.2# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zones 142K 19.1G 19K /zfs
zones/oracle 18K 19.1G 18K /zfs/oracle bash-3.2# zfs set quota=7G zones/oracle
Теперь включаем сжатие и смотрим его продуктивность.
bash-3.2# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zones 142K 19.1G 19K /zfs
zones/oracle 18K 7.00G 18K /zfs/oracle
bash-3.2# df -h /zfs/oracle
Filesystem size used avail capacity Mounted on
zones/oracle 7.0G 18K 7.0G 1% /zfs/oracle bash-3.2# zfs set compression=on zones/oracle
Осталось подготовить для нашей зоны дополнительное дисковое пространство, которым будет выступать c0t0d6.
bash-3.2# zfs get compression zones/oracle
NAME PROPERTY VALUE SOURCE
zones/oracle compression on local
bash-3.2# zfs get compressratio zones/oracle
NAME PROPERTY VALUE SOURCE
zones/oracle compressratio 1.00x - bash-3.2# format
Собственно не описывая всей процедуры выделения свободного слайса у нас получилось вот это
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0d0
/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
1. c1d1
/pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0
Specify disk (enter its number): 0
selecting c0d0 partition> p
После этого мы сохраняем настройки и выходим.
Current partition table (unnamed):
Total disk cylinders available: 9726 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 4 - 665 5.07GB (662/0/0) 10635030
1 swap wu 666 - 796 1.00GB (131/0/0) 2104515
2 backup wm 0 - 9725 74.50GB (9726/0/0) 156248190
3 usr wm 797 - 1841 8.01GB (1045/0/0) 16787925
4 var wm 1842 - 2886 8.01GB (1045/0/0) 16787925
5 home wm 2887 - 3548 5.07GB (662/0/0) 10635030
6 unassigned wm 3549 - 9724 47.31GB (6176/0/0) 99217440
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 alternates wu 2 - 3 15.69MB (2/0/0) 32130 partition> label
Создадим из этого слайса ZFS-Pool и проведем первоначальную конфигурацию.
Ready to label disk, continue? y
partition> qq bash-3.2# zpool create oradata c0d0s6
Здесь мы установили значение монтирования для c0d0s6 как legacy, а это значит что устройство не будет автоматически монтироваться что нам и нужно, ведь мы отдадим его зоне oracle.
bash-3.2# zfs set mountpoint=legacy oradata
bash-3.2# zfs get mountpoint oradata
NAME PROPERTY VALUE SOURCE
oradata mountpoint legacy local
bash-3.2# df -h | grep oradata
bash-3.2#
bash-3.2# zfs set compression=on oradata
Давайте посмотрим теперь что у нас получилось. bash-3.2# zpool list
2. Создание зоны.
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
oradata 47.2G 123K 47.2G 0% ONLINE -
zones 19.4G 146K 19.4G 0% ONLINE -
bash-3.2# zfs list
NAME USED AVAIL REFER MOUNTPOINT
oradata 118K 46.5G 18K legacy
zones 142K 19.1G 19K /zfs
zones/oracle 18K 7.00G 18K /zfs/oracle
bash-3.2# zpool status -v
pool: oradata
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
oradata ONLINE 0 0 0
c0d0s6 ONLINE 0 0 0
errors: No known data errors
pool: zones
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zones ONLINE 0 0 0
c1d1 ONLINE 0 0 0
errors: No known data errors
Теперь создадим зону и проверяем её учитывая настройки которые мы проводили выше. bash-3.2# zonecfg -z oracle
Проверяем состояние зоны
oracle: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:oracle> create
zonecfg:oracle> set autoboot=true
zonecfg:oracle> set zonepath=/zfs/oracle
zonecfg:oracle> add net
zonecfg:oracle:net> set physical=rtls1
zonecfg:oracle:net> set address=192.168.1.223
zonecfg:oracle:net> end
zonecfg:oracle> info
zonename: oracle
zonepath: /zfs/oracle
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.1.223
physical: rtls1
zonecfg:oracle> verify
zonecfg:oracle> commit
zonecfg:oracle> exit
bash-3.2# chmod 700 /zfs/oracle bash-3.2# zoneadm list -cv
После этого устанавливаем в нашу зону операционую систему.
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- oracle configured /zfs/oracle native shared bash-3.2# zoneadm -z oracle install
Теперь добавим в конфигурацию нашей зоны пул oradata.
A ZFS file system has been created for this zone.
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <3910> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1052> packages on the zone.
Initialized <1052> packages on zone.
Zone is initialized.
The file contains a log of the zone installation.
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- oracle installed /zfs/oracle native shared bash-3.2# zonecfg -z oracle
Ну собственно все. Давайте теперь запустим наше зону и опустив все формальности первоначальных настроек проверем все ли нормально.
zonecfg:oracle> add fs
zonecfg:oracle:fs> set dir=/oradata
zonecfg:oracle:fs> set special=oradata
zonecfg:oracle:fs> set type=zfs
zonecfg:oracle:fs> end
zonecfg:oracle> verify
zonecfg:oracle> commit
zonecfg:oracle> exit bash-3.2# zoneadm -z oracle boot
Собственно на сегодня это все. То есть это самое простейшее что я смог написать по теме ZFS + Conteiners (Zones). В следующий раз попробую по тестить BrandZ. До встречи!
bash-3.2# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
4 oracle running /zfs/oracle native shared
bash-3.2# zlogin -C oracle
[Connected to zone 'oracle' console]
Loading smf(5) service descriptions: 139/139
Reading ZFS config: done.
System identification is completed.
rebooting system due to change(s) in /etc/default/init
[NOTICE: Zone rebooting]
SunOS Release 5.11 Version snv_78 32-bit
Copyright 1983-2007 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: oracle.alb.kz
Reading ZFS config: done.
oracle console login: root
Password:
Jan 2 15:26:13 oracle.alb.kz login: ROOT LOGIN /dev/console
Sun Microsystems Inc. SunOS 5.11 snv_78 October 2007
# bash
bash-3.2# zonename
oracle
bash-3.2# df -h /oradata
Filesystem size used avail capacity Mounted on
oradata 0K 18K 47G 1% /oradata
на 0:22 0 коммент.
понедельник, 31 декабря 2007 г.
Ну что же, начнем ...
Так сказать открываю свой блог первым сообщением о том что этот блог я думаю никто читать не будет :) Так что это будет типа мой private-дневник. А дальше посмотрим. тематику даного блога я тоже пока раскрыть не могу так как не знаю захочу ли я выкладывать все свои мысли.
В данное время меня интересует :
1) Sun Solaris / Open Solaris
- xVM
- BrandZ
- ZFS
- Containers (Zones)
2) Red Hat Enterprise Linux 5
- Xen
- SELinux
- GFS
Увидем что получится до встречи.
на 23:31 0 коммент.