Начало Database 10g Конфигуриране на Oracle ASM под Enterprise Linux - част II
Конфигуриране на Oracle ASM под Enterprise Linux - част II
Четвъртък, 15 Януари 2009 10:59
След като създадохме виртуалната машина и инсталирахме операционна система в част I [manchev.org], можем да преминем към инсталацията и конфигурирането на Automatic Storage Management (ASM). Преди това обаче ще добавим няколко допълнителни диска, които ще управляваме чрез ASM.

Добавяне на допълнителни дискове

При изгасена виртуална машина избираме VM/Settings от менюто на VMware Workstation, за да видим конфигурацията на виртуалните устройства, които са достъпни за Oracle Enterprise Linux 5.

VM Settings

Виждаме, че към момента нашата машина разполага с един единствен 8 GB твърд диск. Натискаме бутона Add, за да добавим допълнителен хардуер към нея.

Add Disk

В диалога Add Hardware маркираме Hard Disk и избираме Next.

Create Disk

Оставяме избраната по подразбиране опция Create a new virtual disk и натискаме бутона Next.

Disk Interface

По подразбиране типа на диска трябва да е SCSI. Оставяме го така и избираме Next.

Disk Size

Тук трябва да изберем капацитет на диска. За примерната инсталация аз използвам стандартния - 8 GB, но може да изберете и по-голям капацитет. След като сме задали стойността в GB, натискаме бутона Next.

File Name

В този екран трябва да зададем име на файла, който ще съхранява виртуалния диск. Оставяме го по подразбиране и приключваме операцията чрез бутона Finish.

VM Devices

Ако създаването на новия диск е успешно, ще го видим в списъка с устройства на виртуалната машина. Трябва да повторим описаната операция още два пъти, за да добавим още два допълнителни диска с идентичен капацитет. След като приключите с всички дискове, екранът с устройствата трябва да изглежда така:

All Disks

Стартираме виртуалната машина и след като Enterprise Linux зареди можем да се заемем с конфигурирането на дисковите устройства на нивото на операционната система.

Конфигуриране на дисковете и техните дялове

След като зареждането на операционната система приключи, първо трябва да проверим дали дисковете са видими като изпълним следната команда от терминална конзола:

$ ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd
$

Можем да видим, че новосъздадените устройства са именувани sdb, sdc и sdd. За да ги използваме за целите на ASM, новите дискове трябва да имат дефинирани валидни дискови дялове. Ще използваме командата fdisk, но преди това трябва да получим правата на супер потребител, за да можем успешно да извършим операциите:

$ su -
Password:
#

Започваме с диска sdb изпълнявайки:

# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):

Избираме n, за да създадем нов дисков дял.

Command (m for help): n
Command action
e extended
p primary partition (1-4)

Избираме p, тъй като трябва да създадем първичен дял.

Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):

За номер на дяла избираме 1, а всички други стойности оставяме по подразбиране:

Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044

Command (m for help):

По този начин създаваме дял, който обхваща целия диск. На финала записваме промените, избирайки w.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#

След като сме приключили с първия диск повтаряме операцията за останалите два диска – sdc и sdd. Когато и те са готови, конфигурирането на дяловете е успешно и можем да продължим нататък.

Подготовка за инсталация на Oracle

Има няколко неща, които трябва да направим преди да започнем инсталирането на ASM и базата данни. Когато инсталирахме Enterprise Linux 5, ние създадохме потребител наречен oracle, който ще бъде собственик на инсталациите на Oracle продуктите. Съгласно инструкциите в документацията на Oracle, трябва също така да създадем две групи oinstall и dba, както и да настроим някои параметри на системата, преди да започнем същинската инсталация. Нека започнем с тези задължителни стъпки.

Първо създаваме двете групи (така наречената Inventory група – oinstall и групата на администраторите на базата данни – dba):

$ su -
Password:
# groupadd oinstall
# groupadd dba

Добавяме потребителя oracle като член на групите:

# usermod -g oinstall -G dba oracle

Създаваме директория, където ще инсталираме Oracle ASM и Oracle Database (използваме OFA конвенциите за именуване [oracle.com]) и правим потребителя oracle техен собственик.

# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 755 /u01/app/oracle
#

Редактираме файла /etc/hosts (може да използваме редактор в конзолата като vi или nano, или пък някой от редакторите на графичната среда като gedit), като добавяме в него запис с IP адреса и името на хоста, които сме задали при инсталацията на Enterprise Linux 5. В моя случай добавям накрая на файла следния ред:

192.168.0.10 el5

Редактираме файла /etc/sysctl.conf, добавяки следните редове в него:

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096

net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144

Изпълняваме следната команда на конзолата, за да могат новите стойности да влязат в сила:

# /sbin/sysctl -p

Редактираме файла /etc/security/limits.conf, добавяйки следната информация:

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

Редактираме /etc/pam.d/login, поставяйки накрая:

session required /lib/security/pam_limits.so

На финала редактираме файла .bash_profile, който се намира в /home/oracle, поставяйки следните редове в края му:

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

Важно е да обърнем внимание на факта, че това са най-базовите настройки нужни за инсталацията на Oracle. Стойностите, които им задаваме също са по подразбиране. За не-тестови инсталации, погледнете подробния наръчник за инсталиране [oracle.com], за да знаете смисъла на всеки параметър и за да можете да задавате неговата стойност според конкретния случай.

Последната стъпка от подготовката е инсталирането на някои допълнителни пакети за операционната система, които не са добавени по подразбиране в нашата инсталация. Пакетите, които трябва да инсталираме са съответно:

От първия инсталационен диск:

kernel-headers-2.6.18-92.el5.i386.rpm
libgomp-4.1.2-42.el5.i386.rpm
gcc-4.1.2-42.el5.i386.rpm
glibc-devel-2.5-24.i386.rpm
glibc-headers-2.5-24.i386.rpm
libXpm-devel-3.5.5-3.i386.rpm
libX11-devel-1.0.3-9.el5.i386.rpm
libXau-devel-1.0.1-3.1.i386.rpm
libXdmcp-devel-1.0.1-2.1.i386.rpm
xorg-x11-proto-devel-7.1-9.fc6.i386.rpm
mesa-libGL-devel-6.5.1-7.5.el5.i386.rpm

От третия инсталационен диск:

compat-gcc-34-3.4.6-4.i386.rpm
openmotif-2.3.0-0.5.el5.i386.rpm
compat-db-4.2.52-5.1.i386.rpm
libXp-1.0.0-8.1.el5.i386.rpm
libXp-devel-1.0.0-8.1.el5.i386.rpm

Добавянето на пакетите извършваме чрез командата rpm. За kernel-headers-2.6.18-92.el5.i386.rpm инсталацията изглежда така:

# rpm -Uvh kernel-headers-2.6.18-92.el5.i386.rpm
warning: kernel-headers-2.6.18-92.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
    Preparing... ########################################### [100%]
1:kernel-headers ########################################### [100%]
#

След като приключим с добавянето на всички пакети по описания начин, преминаваме към настройването на дисковете за употреба с Automatic Storage Management.

ASMLib или RAW устройства

Едно важно решение, което трябва да вземем сега е как ASM ще достъпва дисковете. Това може да стане по два начина. Първият вариант е дисковете да се достъпват като RAW устройства, като в този случай ASM използва стандартното API за вход-изход на операционната система. В този случай устройствата се достъпват през /dev/raw/rawn.

Другият вариант е към Linux ядрото да се добави модулът ASMLib, който Oracle разпространява безплатно и достъпът до дисковете да се извършва през него.

ASMLib е алтернативно API за вход-изход с няколко добавки. Според Oracle съществуват редица ползи от неговото използване. ASMLib гарантира директен, асинхронен достъп за входно-изходните операции. Модулът също така се грижи за правилното откриване на преместени устройства (това е възможно да се случи при рестарт на операционната система), като също решава проблема със собствеността на файловете и техните права. Използването на ASMLib е препоръчвания от Oracle вариант.

От друга страна повечето Linux администратори са срещу ASMLib. Техните доводи са, че ASMLib добавя още един слой на абстракция, както и допълнителна зависимост в ядрото. Също така трябва да имаме предвид, че ако инсталираме Oracle клъстер и не използваме клъстерна операционна система, трябва да използваме RAW устройства за Repository и Voting Disk на клъстера (тези елементи от архитектурата на Oracle клъстера са подобно обряснени в една от предишните статии [manchev.org]).

При всички положения спорът ASMLib срещу RAW продължава не от вчера, така че тук няма да се спираме на препоръка за едното или другото. Вместо това ще покажем и двата варианта, а вие ще изберете подходящия за вас. Моят съвет е да се запознаете по-задълбочено с ASMLib тук [oracle.com], преди да вземете окончателно решение.

Използване на ASMLib

Щом сме решили да използваме ASMLib, първо трябва да свалим нужните файлове според версията на ядрото на операционната система, която използваме. За да сме сигурни за точната стойност използваме командата uname по следния начин:

# uname -a
Linux el5 2.6.18-92.el5 #1 SMP Fri May 23 22:17:30 EDT 2008 i686 i686 i386 GNU/Linux
#

За различните ядра Oracle предоставя различни RPM пакети. Списък за наличните пакети за Enterprise Linux 5 можем да видим тук [oracle.com].

Ще забележим, че за ползваното от нас ядро са налични три пакета:

oracleasm-support-2.1.2-1.el5.i386.rpm
oracleasmlib-2.0.3-1.el5.i386.rpm
oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm

Можем да свалим пакетите чрез командата wget.

# wget http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/x86/2.1.2/oracleasm-support-2.1.2-1.el5.i386.rpm
--16:57:07-- http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/x86/2.1.2/oracleasm-support-2.1.2-1.el5.i386.rpm
Resolving oss.oracle.com... 141.146.12.120
Connecting to oss.oracle.com|141.146.12.120|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 84684 (83K) [application/x-rpm]
Saving to: `oracleasm-support-2.1.2-1.el5.i386.rpm'

100%[=======================================>] 84,684 72.2K/s in 1.1s

16:57:09 (72.2 KB/s) - `oracleasm-support-2.1.2-1.el5.i386.rpm' saved [84684/84684]

# wget http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.3/oracleasmlib-2.0.3-1.el5.i386.rpm
--16:57:25-- http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.3/oracleasmlib-2.0.3-1.el5.i386.rpm
Resolving otn.oracle.com... 141.146.8.66
Connecting to otn.oracle.com|141.146.8.66|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.oracle.com/technology/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.3/oracleasmlib-2.0.3-1.el5.i386.rpm [following]
--16:57:26-- http://www.oracle.com/technology/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.3/oracleasmlib-2.0.3-1.el5.i386.rpm
Resolving www.oracle.com... 141.146.8.66
Reusing existing connection to otn.oracle.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 13658 (13K) [application/x-rpm]
Saving to: `oracleasmlib-2.0.3-1.el5.i386.rpm'

100%[=======================================>] 13,658 48.7K/s in 0.3s

16:57:27 (48.7 KB/s) - `oracleasmlib-2.0.3-1.el5.i386.rpm' saved [13658/13658]

# wget http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/x86/2.0.5/2.6.18-92.el5/oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm
--16:58:14-- http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/x86/2.0.5/2.6.18-92.el5/oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm
Resolving oss.oracle.com... 141.146.12.120
Connecting to oss.oracle.com|141.146.12.120|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 128494 (125K) [application/x-rpm]
Saving to: `oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm'

100%[=======================================>] 128,494 98.0K/s in 1.3s

16:58:16 (98.0 KB/s) - `oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm' saved [128494/128494]

#

Така свалените пакети инсталираме чрез RPM:

# rpm -Uvh oracleasm-support-2.1.2-1.el5.i386.rpm oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm oracleasmlib-2.0.3-1.el5.i386.rpm
Preparing...              ########################################### [100%]
1:oracleasm-support       ########################################### [ 33%]
2:oracleasm-2.6.18-92.el5 ########################################### [ 67%]
3:oracleasmlib            ########################################### [100%]
#

След успешната инсталация следва процес на конфигуриране, който стартираме чрез командата oracleasm configure така:

# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
#

Обърнете внимание, че за собственик на интерфейса на ASMLib драйвера задаваме предварително създадения потребител oracle, както и inventory групата. Също така инструктираме системата да стартира ASM още със зареждането на операционната система.

Забележка: Ако процесът по конфигурация не мине успешно, проверете дали по време на инсталацията на Enterprise Linux 5 сте изключили SELinux. Ако сте забравили да изпълните тази стъпка проверете дали стойността на SELINUX във файла /etc/selinux/config е зададена като disabled.

Преди ASM да може да използва трите диска, които сме заделили за него, той трябва да ги маркира и да им даде имена. За целта използваме командата oracleasm createdisk, като последователно я изпълняваме за дяловете sdb1, sdc1 и sdd1, присвоявайки им съответно имена VOL1, VOL2 и VOL3. Изпълняването на операциите изглеждат така:

# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
Marking disk "VOL2" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
Marking disk "VOL3" as an ASM disk: [ OK ]

Ако искаме да се уверим, че дисковете са маркирани и видими за ASM, можем да използваме командата oracleasm listdisk, която ни показва всички видими за ASM дискове:

# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
#

Използване на RAW устройства

При настройването системата за работа с RAW устройства използваме различни подходи в зависимост от версията на дистрибуцията. При Oracle Enterprise Linux 4 (респективно CentOS-4, RedHat Enterprise Linux 4 и т.н.) процедираме по следния начин:

Редактираме /etc/sysconfig/rawdevices, като добавяме следните записи в него:

/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
/dev/raw/raw3 /dev/sdd1

Рестартираме услугата rawdevices по следния начин:

# service rawdevices restart

Сменяме собствеността и задаваме права за работа с устройствата:

# chown oracle:oinstall /dev/raw/raw1
# chown oracle:oinstall /dev/raw/raw2
# chown oracle:oinstall /dev/raw/raw3
# chmod 600 /dev/raw/raw1
# chmod 600 /dev/raw/raw2
# chmod 600 /dev/raw/raw3

Може да добавите тези команди и към /etc/rc.local файла, който ще ги изпълнява автоматично при рестартирането на машината, за да сте гарантирате правата и собствеността върху устройствата.

При Enterprise Linux 5, CentOS-5 и изобщо – ядро 2.6, използването на RAW устройства повече не се поддържа. Описаната по-горе процедура няма да работи, затова трябва да използваме малко по-различен и заобиколен метод.

Отваряме файла /etc/udev/rules.d/60-raw.rules и добавяме следните редове в него:

ACTION==”add”, KERNEL==”sdb1″, RUN+=”/bin/raw /dev/raw/raw1 %N”
ACTION==”add”, KERNEL==”sdc1″, RUN+=”/bin/raw /dev/raw/raw2 %N”
ACTION==”add”, KERNEL==”sdd1″, RUN+=”/bin/raw /dev/raw/raw3 %N”

Ако не искаме да рестартираме, трябва да изпълним следните команди в конзолата, за да получим незабавен достъп чрез /dev/rawn:

#>/bin/raw /dev/raw/raw1 /dev/sdb1
#>/bin/raw /dev/raw/raw2 /dev/sdc1
#>/bin/raw /dev/raw/raw3 /dev/sdd1

Инсталация на Oracle ASM

Без значение дали използваме ASMLib или RAW дискове, инсталацията на Oracle ASM протича аналогично. Нея ще разгледаме в третата част на този материал.

Коментари

Име
URL
Код   
Запис
 

КНИГАТА

Oracle Database Security Book
(c) 2004-2008 Николай Манчев. Освен ако изрично не е споменато нещо друго, всички материали публикувани тук се разпространяват под Creative Commons Attribution License. Материали, коментари и изображения, които не са създадени и подписани от мен са собственост на съответните им автори.