Слайд 2Деревянко М. (RuOUG)
Agenda
1.Сравнение ASM с аналогичными продуктами/технологиями.
2.Архитектура ASM.
3.Исследование внутренних структур ASM.
4.Опыт использования,
проблемы, рекомендации.
Слайд 3Деревянко М. (RuOUG)
Путь к ASM
- Standard I/O;
- Synchronous(Buffered) I/O - filesystem; biowait()
-
Direct io filesystem; O_DIRECT
- Asynchronous I/O; aio
filesystemio_options
----
filesystem;
filesystem with mount flags;
Raw device;
Raw device over volume managers;
ASM.
Слайд 4Деревянко М. (RuOUG)
Преимущества ASM
- Облегчает администрирование (Oracle management files);
- Более низкая стоимость
по сравнению с Volume manger’s;
- Отсутствие ограничений, отличающих файловую систему;
- Mirror and Striping = Same ?;
- Отдал диски и забыл☺;
Необходимость иметь одинаковые по размеру/производительности диски, чем больше диск по размеру тем больше данных туда разместит asm.
Возможность работе в RAC.
При выводе диска из строя нагрузка размазывает согласно PST до 10 дисков, аналогично при ребалансе скачок нагрузки “мягче”.
Volume manager Drl vs asm mirror resilvering (asm учитывает особенности файлов)
Oracle RDBMS processes directly access the storage!
Слайд 5Деревянко М. (RuOUG)
Недостатки ФС
Файловые системы:
-Следить за местом, авторасширение файлов* (?)
- Права на
каталоги/тома…
- Имена файлов/каталогов;
- Выбор размера страйпа;
* Интересный баг Auto extend aud$.
Слайд 6Деревянко М. (RuOUG)
Volume Manager
Проблемы есть везде;
- Возможность работы с большим кол-вом томов(high-end
решения) или путей к дискам, все таки ASM не готов к этому…
-ASM=OSM = USM ?
- Отказ от raw в 12 ?
Набор утилит для работы с oracle, н-р, проверка db_block_cheksum - asm это делает на лету [scn…scn]
*интересный баг - ошибка в правах на redo logs - crash instance;
Слайд 7Деревянко М. (RuOUG)
Надежность
Что надежней:
- LVM - ?
- VxVM - ?
- ASM -
?
- FS - ?
Рекомендовать какую-то одну из указанных технологий нельзя, так как любые проблемы стабильности выявляются только в результате длительной промышленной эксплуатации.
Слайд 8Деревянко М. (RuOUG)
ASM
- ASM + linux = love? asmlib ☺;
- При обновлении
ядра практически всегда есть в наличии актуальный asmlib (регулярно обновляется);
+///..
* db_name берется с учетом db_unique_name
Слайд 9Деревянко М. (RuOUG)
asmlib
- Device discovery
- I/O processing
ASMLIB не kernel aio, а
свой механизм.
Reduce the nymber of calls to OS.
A single call to asmlib multiple i/o.
Открывает меньше file descriptors.
- Perfomance
low cpu cost on high loaded system
Слайд 10Деревянко М. (RuOUG)
Архитектура ASM
instance_type = ASM
SQL > select instance_name from v$instance;
INSTANCE_NAME
-----------
+ASM
ASM
File
system
Volume
manager
Operating System
Application
Database
Слайд 11Деревянко М. (RuOUG)
asm<->CSSD<-> rdbms
Cluster Synchronization Service Daemon
/opt/oracle/product/11.1.0/db_ruoug2/bin/localconfig reset
nohup /etc/init.d/init.cssd run >/dev/null 2>&1
Слайд 12Деревянко М. (RuOUG)
Архитектура ASM
Основные процессы:
ARBx – процессы ребаланса
CKPT – cross instance calls
DBWR,PMON,PSP0,PZ9x
– аналогично RDBMS
SMON – общается с CSS
LGWR – пишет ACD(active change directory)
GMON (занимается drop/offline disk)
KATE (занимается online disk)
Слайд 13Деревянко М. (RuOUG)
Архитектура ASM
Память:
- Memory_target – 256M;
_db_cache_size (блоки по 4k);
+ SHARED_POOL_SIZE
(DB_SPACE/100+2)
External
(DB_SPACE/50+4) Normal
(DB_SPACE/33+6) High
+ 16 processes;
+ 1m large pool;
* Зависит от версии 11g. При открытии файла передает только direct extents, для закрытых файлов место в памяти не нужно
Слайд 14Деревянко М. (RuOUG)
Архитектура ASM
AU – allocation unit;
Расположение au (зависит от размера дисков
и никоим образом не зависит от i/o на диск!)
Datafile – 1 mb; много или мало ?
1m=8k*128 MBRC(8) по 16 блоков на несколько дисков*
Oracle “Read ahead” ?
Controlfile, redo 128kb; **
* Lewis блоки в памяти могут “помешать” идти fullscan и спровоцировать одноблочные чтения…
** controlfile при normal redur. имеет 3 копии
Слайд 15Деревянко М. (RuOUG)
Основные представления ASM
v$asm_alias; (-)
v$asm_attribute(11g diskgroup properties); (-)
v$asm_client;
v$asm_disk (service oracleasm scandisk);
-- читает заголовки дисков
v$asm_disk_iostat (rdbms only connected); (-)
v$asm_disk_stat;
v$asm_diskgroup; -- читает заголовки дисков
v$asm_diskgroup_stat;
v$asm_file;(-)
v$asm_operation; (-)
v$asm_template;
Слайд 16Деревянко М. (RuOUG)
Asm reduradancy and failgroup
- External,normal(x2),high(x3)
- Failgroup (HBA,path,array,group)
Normal на нечетном количестве
дисков.
Reduradancy не меняется в течение всего времени жизни Diskgroup.
Primary extent (+0-2 second extend) читаем всегда с primary extent, если он доступен; если нет, то с secondary до rebalance.
- 11g preffered reads (необходимо поднять версию dg)
- Partner Disks x$kfdpartner до 10, но всегда в других fg (PST)
Слайд 17Деревянко М. (RuOUG)
ASM везде
- Asm на windows ☺ asmtool…
- Asm multipathing device
mapper vs multipathd on linux ?
Слайд 18Деревянко М. (RuOUG)
v$asm_diskgroup
Name Type
----------------------- ------------
GROUP_NUMBER NUMBER
NAME VARCHAR2(30)
SECTOR_SIZE NUMBER
BLOCK_SIZE NUMBER
ALLOCATION_UNIT_SIZE NUMBER
STATE VARCHAR2(11)
TYPE VARCHAR2(6)
TOTAL_MB NUMBER
FREE_MB NUMBER
REQUIRED_MIRROR_FREE_MB NUMBER
USABLE_FILE_MB NUMBER
OFFLINE_DISKS NUMBER
UNBALANCED VARCHAR2(1)
COMPATIBILITY VARCHAR2(60)
DATABASE_COMPATIBILITY VARCHAR2(60)
Слайд 19Деревянко М. (RuOUG)
V$asm_diskgroup
SQL> select TOTAL_MB,FREE_MB,REQUIRED_MIRROR_FREE_MB,USABLE_FILE_MB from v$asm_diskgroup;
- TOTAL_MB 3 200 000
- FREE_MB
1 800 000
- REQUIRED_MIRROR_FREE_MB 200 000
- USABLE_FILE_MB 800 000
USABLE_FILE_MB –сколько места еще свободно с учетом miiror. может быть меньше 0!
Слайд 20Деревянко М. (RuOUG)
ASM extents
- Oracle extent транслируются в AU asm, asm не
участвует в операциях ввода вывода, он участвует в ребалансе и поддержке актуальной карты экстентов.
- Можно попробовать настроить _asm_ausize и _asm_stripesize.*
Если диски одинаковые по размеру, то на них получится одинаковое число au.
- После каждых 20000 экстентов оракл увеличивает размер экстента AU x8 для каждого файла.
- Если получился перекос нагрузки то rebalance должен это поправить**
*Не встречал пока проблем, что данные были неадекватно отбалансированы, с большими объемами на ASM не пробовал.
**Для ребаланс идет обратный отсчет в v$asm_operation, но после окончания он еще доделывает накопившуюся во время ребаланса работу, поэтому долгое время стоит с 0.
Слайд 21Деревянко М. (RuOUG)
asmcmd
asmcmd help (oracle11)
cd
cp
du
find
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
md_backup
md_restore
lsdsk
remap - пометить плохие сектора на диске
Слайд 22Деревянко М. (RuOUG)
ASM metadata
В заголовке каждого диска:
Disk Header
(disk name, disk number,
diskgroup name, failure group name, disk size, AU size, creation time, mount time, compability ASM/RDBMS)
Allocation Table (AT)
(Allocation table blocks(ATB), Allocation table Entry(ATE) показывает file#,extent#->AU или free)
Free Space Table (FST)
(аналогично AT, только показывает пустые)
Partnership Status Table (PST)
Слайд 23Деревянко М. (RuOUG)
ASM metadata (Partnership Status Table )
Version number;
Timestamp;
PST size (number of
disks);
Number of PST copies;
Disk list for PST;
Compability.
информация о дисках партнерах:
Disk status, number of partners, list of partners.
Последний блок PST heart beat необходим для того, чтобы диск нельзя было смонтировать с нескольких серверов.
Слайд 24Деревянко М. (RuOUG)
Asm virtual Metadata
Находится в специальных asm файлах, доступных только для
asm инстанса.
File directory (file size, file block size, file type,redudancy,striping,creation time,modification,file layout – 60 directs extents, up 300 inderect);
Disk directory(disk name, failure group name,disk size,disk free space,disk creation time);
Active change directory(ACD);
Continuing Operations Directory (COD);
Template Directory;
Alias directory;
Attribute Directory;
Staleness directory;
Staleness Registry.
Слайд 25Деревянко М. (RuOUG)
Asm virtual Metadata
File#0, AU=1: Partner Status Table (PST)
File#1: File
Directory (files and their extent pointers)
File#2: Disk Directory
File#3: Active Change Directory (ACD)
The ACD is analogous to a redo log, where changes to the metadata are logged.
Size=42MB * number of instances
Слайд 26Деревянко М. (RuOUG)
Asm virtual Metadata
File#4: Continuing Operation Directory (COD).
The COD is
analogous to an undo tablespace. It maintains the state of active ASM operations such as disk or datafile drop/add. The COD log record is either committed or rolled back based on the success of the operation.
File#5: Template directory
File#6: Alias directory
11g, File#9: Attribute Directory
11g, File#12: Staleness registry, created when needed to track offline disks
Слайд 27Деревянко М. (RuOUG)
Ребаланс дисковой группы
Ребаланс не всегда зависит от скорости дисков:
Single instance:
-Buffer busy wait
RAC
- DFS lock handle (cross-instacnce lock)
- Buffer busy wait
На одной ноде ребаланс идет быстрее, и еще быстрее при startup restrict
При ребалансе происходит relocation экстентов, если экстент принадлежит файлу со статусом open, тогда на время переноса замораживается обращение со стороны rdbms к этому экстенту(операции, которые “ждали” экстент прочитают его со старого места)
** asm file names
Слайд 30Деревянко М. (RuOUG)
Cern IT
Reading ASM files with OS tools, using metadata information
from X$ tables.
Reading strace -> asm files.
The tnsnames entry can be used to connect to ASM instances via Oracle*NET - the extra keyword (UR=A). UR=A allows to connect to 'blocked services'.
*applies to 10g, it is not needed in 11g.
Слайд 31Деревянко М. (RuOUG)
11g Features
- 11g restricted in 11g – quicker rebalance;
preffered read;
-
au-size (1|2|4|8|16|32|64MB);
FAST DATA RESYNC, в volume manager такого нет! (staleness registry)
Alter diskgroup data disk_repair_time=‘4 h’;
- Alter diskgroup online disk all; -не падало
Настройка au-size для DG
Если asm сталкивается с невозможностью прочитать primary extent, то он пытается записать его в другое место на этом диске, а старое пометить как unusable; если возникает ошибка при записи, то сломавшийся диск asm переводит в offline (если и header не читается?) + пишет об ошибке в alert.log (если удалось записать хоть 1 копию, то для app ошибки нет) .
Слайд 32Деревянко М. (RuOUG)
Лечение проблем
- Большая часть проблем решается обнулением заголовка asm дисков
dd if=/dev/zer of=/dev/sdv3.
- Если диск “глючит”, то этого никак не видно, т.к. asm не ведет счетчик ошибок - только OS. Приходится менять его вручную.
- Alert.log для asm сложно читаем, хотя через некоторое время он становится понятней, если возникают ошибки невозможности прочитать блок - он пишет что пытается прочитать с зеркала (rdbms alert?)
- Авто-Offline диск только для для операций записи или чтения заголовка…
Большую часть проблем и падений в процессе/post-процессе ребаланса 10,11 рекомендуется отложить до возможности разобраться с ними в спокойной обстановке.
- Добавлять диски c force в 11
Слайд 33Деревянко М. (RuOUG)
Лечение проблем
Висит v$asm_disk, v$asm-diskgroup-”приплыли”;
ALTER DISKGROUP DATA CHECK;
Редактор kfed
MOUNT FORCE:
Переведет
диски в offline
Не будет работать, если все диски в норме(10g);
Слайд 34Деревянко М. (RuOUG)
Рекомендации
Иметь две DG, Data+Backups(FRA)
И если есть различные группы оборудования, то
вынести в отдельную группу.
Up2date kernel
Слайд 35Деревянко М. (RuOUG)
Список используемой литературы:
1.Oracle documentation
2.Cern docs: https://twiki.cern.ch/twiki/bin/view/PSSGroup/ASM_Internals