Настройка диспетчера хранения данных ISM
В. Кравчук,
OpenXS Initiative
Диспетчер хранения данных ISM неизбежно и безусловно устанавливается в
процессе установки сервера, начиная с версии 7.30. Более того, на платформе
Windows соответствующие три службы:
- ISM Local Execution
- ISM Portmapper
- ISM Server
автоматически запускаются в процессе установки сервера и, по умолчанию, будут
автоматически запускаться при загрузке ОС (см. оснастку Службы или
результаты выполнения команды net start).
Тем не менее, использовать этот отдельный сервер по прямому назначению -
для резервного копирования и восстановления DB-пространств и логических журналов
с помощью утилиты onbar, - сразу после установки нельзя...
Дело в том, что необходимые пулы [1] для
утилиты onbar при установке ISM создаются, а вот устройства в эти
пулы не добавляются, да и не могут быть добавлены. Поскольку заранее неизвестно,
на какие устройства администратор планирует выполнять резервное копирование. Он
должен явно указать соответствующие устройства, разметить и смонтировать их
тома. Вот этим мы и займемся, обеспечив резервное копирование на
диск.
Сам ISM устанавливается в отдельный от сервера каталог (\ISM\2.20) на
том же логическом диске, на который выполнялась установка сервера. Другими
словами, если, например, переменная среды %INFORMIXDIR% у вас имеет значение
c:\Informix, то ISM будет установлен в каталоге c:\ISM\2.20. В
дальнейшем будем ссылаться на этот каталог как на %ISMDIR%.
Начнем мы с проверки существующей сразу после установки сервера конфигурации.
Это, а также собственно конфигурирование, может выполнять только
пользоватль-администратор ISM. По ходу установки такими пользователями
назначаются локальные администраторы (члены группы Administrators, а в
русской версии - Администраторы, в которую, по умолчанию,
добавляется и пользователь Informix.)
Контроль и конфигурирование ISM ведется с помощью утилит ism_*.*,
находящихся в каталоге %ISMDIR%\bin. Если вы собираетесь обращаться к
этим утилитам по именам, не забудьте добавить соответствующий каталог в
переменную среды PATH. Например, если вы работаете в окне командной
строки, это можно сделать командой:
set PATH=%PATH%;%ISMDIR%\bin
Кстати, все утилиты ism_*.* при вызове без параметров выдают детальную
информацию о поддерживаемых опциях.
1. Проверка конфигурации
Начнем с проверки того, кто может администрировать ISM:
C:\Informix>ism_show -admins
administrator: Администраторы@creator;
Если уже на этом этапе вы не получаете ответа или получаете что то типа
"ism_show: RPC error, Remote system error", то это обозначает, что у вас
не работает одна из выше упомянутых служб ISM или установка ISM во время
инсталляции сервера не была успешной.
Далее проверим общую конфигурацию:
C:\Informix>ism_show -config
name: creator;
parallelism: 4;
manual saves: Enabled;
administrator: Администраторы@creator;
browse policy: Month;
retention policy: Year;
и посмотрим, какие устройства сконфигурированы по умолчанию:
C:\Informix>ism_show -devices
(nothing) mounted on 4mm tape \\.\Tape0
Стримера у нас нет, поэтому данное устройство мы использовать не можем.
Работа с ленточными устройствами подробно описана в [1].
Итак, с помощью этих трех команд мы убедились, что:
- Службы ISM запущены и, похоже, работают (окончательно убедиться можно с
помощью команды net start).
- У нас не сконфигурированы необходимые устройства для хранения резервных
копий.
- Мы можем конфигурировать ISM (у нас есть необходимые привилегии).
2. Добавление устройств для резервного копирования на диск
Для резервного копирования на диск необходимо создать на диске
соответствующие каталоги. Я, исключительно для демонстрации, собираюсь их
создавать в каталоге c:\tmp:
C:\Informix>cd c:\tmp
C:\tmp>mkdir bardata
C:\tmp>mkdir barlog
Названия каталогам я выбрал в соответствии с информацией, которая будет в них
копироваться: данные (DB-пространства) и логические журналы.
Теперь я добавлю устройства типа file:
C:\tmp>ism_add -device c:\tmp\bardata -type file
C:\tmp>ism_add -device c:\tmp\barlog -type file
C:\tmp>ism_show -devices
(nothing) mounted on 4mm tape \\.\Tape0
(nothing) mounted on file disk c:\tmp\bardata
(nothing) mounted on file disk c:\tmp\barlog
Как видите, устройства успешно добавлены. В каждом из каталогов при этом
создается файл nsr.dir (в моем случае, размером 47 байтов) и файл
volume (первоначально, пустой).
3. Разметка томов
Устройства для ISM уже созданы, но ни одного тома, на котором можно было бы
размещать резервные копии, пока нет:
C:\tmp>ism_show -volumes
mminfo: no matches found for the query
Надо разметить два тома, дав им имена и привязав к заранее существующим
пулам. Пулов этих в ISM сразу после установки будет несколько [1]. Наиболее
существенные для нас на начальном этапе:
- ISMData
- Пул для резервных копий данных на лентах. Используется по
умолчанию.
- ISMLogs
- Пул для резервных копий журналов на лентах. Используется по
умолчанию.
- ISMDiskData
- Пул для резервных копий данных на диске.
- ISMDiskLogs
- Пул для резервных копий журналов на диске.
Обсуждение управление пулами выходит за рамки этой статьи. Важно только, что
в пул, связанный с диском, нельзя будет добавлять ленточные устройства, и
наоборот.
Мы собираемся выполнять резервное копирование на диск. Поэтому будем
использовать пулы ISMDiskData и ISMDiskLogs. Выполняем разметку
томов для пулов:
C:\tmp>ism_op -label c:\tmp\bardata -pool ISMDiskData -volume Data1
C:\tmp>ism_op -label c:\tmp\barlog -pool ISMDiskLogs -volume Logs1
Обратите внимание, что, в отличие от документации и прежних Release
Notes, я задал томам имена, явно отличающиеся от имени пула. В частности,
чтобы подчеркнуть, что томов в пуле может быть много...
Давайте посмотрим, какую информацию про тома теперь выдаст ISM:
C:\tmp>ism_show -volumes
volume pool flags written (%) expires
Data1 ISMDiskData 0 KB 04/21/06
Logs1 ISMDiskLogs 0 KB 04/21/06
Так мы проверяем, что тома действительно размечены и отданы соответствующим
пулам. В результате разметки, кстати, файлы volume в каталогах, которые
мы используем в качестве устройств, теперь имеют размер 65536 байтов.
4. Настройка имен пулов
Имена пулов, которые будут использоваться утилитой onbar при резервном
копировании, задаются параметрами конфигурации (в файле
%INFORMIXDIR%\etc\%ONCONFIG%; в моем случае, это
C:\Informix\etc\ONCONFIG.ol_creator). Речь идет о следующих
параметрах:
# Informix Storage Manager variables
ISM_DATA_POOL ISMData
ISM_LOG_POOL ISMLogs
Мы использовали не эти пулы, поэтому придется изменить значения этих
параметров:
# Informix Storage Manager variables
ISM_DATA_POOL ISMDiskData
ISM_LOG_POOL ISMDiskLogs
Изменения этих, как и большинства остальных, параметров конфигурации,
учитываются только при перезапуске сервера Informix. Его мы выполним позже. Это,
кстати, не последнее изменение в файле параметров конфигурации.
Остался еще один небольшой нюанс. Поскольку мы будем копировать на диск и
набор аварийной начальной загрузки (Bootstrap), надо поменять соответствующее
имя пула и в файле %INFORMIXDIR%\bin\onbar.bat. Речь идет о строке:
%ISMDIR%\bin\ism_catalog -create_bootstrap -pool ISMData >NUL 2>NUL
В ней надо изменить имя пула и сохранить изменения:
%ISMDIR%\bin\ism_catalog -create_bootstrap -pool ISMDiskData >NUL 2>NUL
5. Монтирование томов
Нам осталось уже не так много сделать. Надо смонтировать тома (это делает их
доступными для чтения и записи данных):
C:\tmp>ism_op -mount c:\tmp\bardata
file disk Data1 mounted on c:\tmp\bardata, write enabled
C:\tmp>ism_op -mount c:\tmp\barlog
file disk Logs1 mounted on c:\tmp\barlog, write enabled
Для справки, вот все опции утилиты ism_op:
C:\tmp>ism_op
Usage: ism_op [<options>]
Options:
-label device [ -volume name ] [ -pool pool ] [ -force ] [ -server name ]
-mount device [ -read_only ] [ -server name ]
-unmount device [ -server name ]
-detect device [ -server name ]
Вот как можно проверить, что именно и в каком режиме смонтировано на
устройстве:
C:\tmp>ism_op -detect c:\tmp\bardata
file disk Data1 mounted on c:\tmp\bardata, write enabled
В принципе, ISM уже готов для резервного копирования. Осталось пару
деталей.
6. Создание файла sm_versions
Если запустить сервер Informix с новыми параметрами и попытаться использовать
утилиту onbar для резервного копирования, ничего не получится. Дело в
том, что утилита onbar может работать и с другими диспетчерами хранения
данных, например, NetVault.
Все определяется библиотекой XBSA (см. параметр конфигурации
BAR_BSALIB_PATH) и содержимым файла
%INFORMIXDIR%\etc\sm_versions. Там одной строкой описаны диспетчеры
хранения данных, с которыми будет работать onbar. Сразу после установки
сервера Informix такого файла просто нет! А есть файл
%INFORMIXDIR%\etc\sm_versions.std, который, если вы собираетесь
использовать ISM, надо просто скопировать:
C:\Informix\etc>copy sm_versions.std sm_versions
7. Изменение параметров конфигурации для резервного копирования
журналов
Выполнять резервное копирование DB-пространств можно было бы сразу же после
запуска сервера Informix. Но мы же хотим и логические журналы автоматически
копировать! Поэтому надо изменить еще несколько параметров конфигурации.
Проверьте, что у вас параметры имеют следующие (не стандартные) значения. После
символа комментария я указал стандартные значения, которые вы обнаружите сразу
после установки сервера Informix (предполагается, что Informix установлен в
каталог C:\Informix):
LOG_BACKUP_MODE CONT #MANUAL
LTAPEDEV aaa #NUL
ALARMPROGRAM C:\Informix\etc\log_full.bat #C:\Informix\etc\log_full.bat
Параметр LTAPEDEV может иметь любое значение, кроме NUL. Иначе
журналы будут помечаться как скопированные сразу же при переходе на следующий
журнал, и у утилиты onbar не будет шанса их скопировать... Значение
параметра ALARMPROGRAM можно оставить стандартным. Сценарий
log_full.bat как раз и занимается тем, что копирует очередной заполненный
логический журнал с помощью onbar. Если же вы сами будет создавать свою
программу обработки событий, не забудьте обработать событие класса
23 - заполнение очередного логического журнала.
8. Перезапуск Informix и проверка
Если сервер Informix запущен, остановите его (например, командой onmode
-ky). Затем снова запустите:
C:\tmp>starts ol_creator
C:\tmp>onstat -
Informix Dynamic Server Version 9.30.TC2 -- On-Line -- Up
00:00:33 -- 25472 Kbytes
Похоже, сервер запустился. Команда onstat -m должна показать вам, что
соответствующие параметры конфигурации изменены. Попробуем выполнить резервное
копирование сервера в целом (с этого и надо начинать использование
onbar). Команда будет работать достаточно долго и индикатор работы диска,
по идее, должен показывать, что процесс идет...:
C:\tmp>onbar -b -w
Команда onstat -m, если копирование прошло успешно, выдаст примерно
такие сообщения:
16:39:12 Level 0 Archive started on rootdbs, sbspace, workdbs
16:39:22 Archive on rootdbs, sbspace, workdbs Completed.
16:39:23 Logical Log 17 - Backup Started
16:39:24 Logical Log 17 Complete.
16:39:25 Logical Log 17 - Backup Completed
В журнале сообщений onbar (задается параметром конфигурации
BAR_ACT_LOG и, по умолчанию, размещается в
%INFORMIXDIR%\bar_имя_сервера.log) при этом можно обнаружить:
2004-04-21 16:39:10 2424 2424 C:\Informix\bin\onbar_d -b -w
2004-04-21 16:39:12 2424 2424 Begin level 0 backup rootdbs.
2004-04-21 16:39:14 2424 2424 Successfully connected to
Storage Manager.
2004-04-21 16:39:20 2424 2424 Completed level 0 backup
rootdbs (Storage Manager copy ID: 1099 0).
2004-04-21 16:39:20 2424 2424 Begin level 0 backup sbspace.
2004-04-21 16:39:21 2424 2424 Completed level 0 backup
sbspace (Storage Manager copy ID: 1100 0).
2004-04-21 16:39:21 2424 2424 Begin level 0 backup workdbs.
2004-04-21 16:39:22 2424 2424 Completed level 0 backup
workdbs (Storage Manager copy ID: 1101 0).
2004-04-21 16:39:22 2424 2424 Begin backup logical log 17.
2004-04-21 16:39:23 2424 2424 Successfully connected to
Storage Manager.
2004-04-21 16:39:25 1952 1952 C:\Informix\bin\onbar_d -b -l
2004-04-21 16:39:25 1952 1952 A log backup is already
running. Can't start another.
2004-04-21 16:39:25 2424 2424 Completed backup logical log
17 (Storage Manager copy ID: 1102 0).
2004-04-21 16:39:28 2424 2424 C:\Informix\bin\onbar_d
complete, returning 0 (0x00)
2004-04-21 16:39:30 1952 1952 C:\Informix\bin\onbar_d
complete, returning 152 (0x98)
Если коды возврата вас смущают, про них можно почитать в документации по
onbar [2]. Чтобы
проверить, что журналы копируются нормально, можно выполнить пару раз команду
onmode -l и onstat -l:
...
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 0 8 241 19 17 12.7 1.1
Subsystem numrecs Log Space used
OLDRSAM 241 18840
address number flags uniqid begin size used %used
ca376a8 1 U-B---- 19 1002fb 500 3 0.60
ca376e0 2 U---C-- 20 1004ef 500 2 0.40
ca37718 3 U-B---- 15 1006e3 500 7 1.40
ca37750 4 U-B---- 16 1008d7 500 24 4.80
ca37788 5 U-B---- 17 100acb 500 20 4.00
ca377c0 6 U-B---L 18 100cbf 500 11 2.20
6 active, 6 total
Судя по этому результату, а также по содержимому журнала сообщений
сервера:
16:48:10 Logical Log 18 Complete.
16:48:12 Logical Log 18 - Backup Started
16:48:15 Logical Log 18 - Backup Completed
16:48:42 Logical Log 19 Complete.
16:48:43 Logical Log 19 - Backup Started
16:48:47 Logical Log 19 - Backup Completed
и утилиты onbar:
2004-04-21 16:48:12 3932 3932 Begin backup logical log 18.
2004-04-21 16:48:13 3932 3932 Successfully connected to
Storage Manager.
2004-04-21 16:48:15 3932 3932 Completed backup logical log 18
(Storage Manager copy ID: 1105 0).
2004-04-21 16:48:15 3932 3932 C:\Informix\bin\onbar_d
complete, returning 0 (0x00)
2004-04-21 16:48:42 1840 1840 C:\Informix\bin\onbar_d -b -l
2004-04-21 16:48:43 1840 1840 Begin backup logical log 19.
2004-04-21 16:48:45 1840 1840 Successfully connected to
Storage Manager.
2004-04-21 16:48:47 1840 1840 Completed backup logical log 19
(Storage Manager copy ID: 1107 0).
2004-04-21 16:48:48 1840 1840 C:\Informix\bin\onbar_d
complete, returning 0 (0x00)
все у нас работает...
Кстати, в каталогах, созданных на шаге 2, появились файлы наборов
хранения (save sets), имена которых "упоминаются" в журнале
onbar:
C:\tmp>cd bardata
C:\tmp\bardata>dir
...
21.04.2004 16:49 <DIR> .
21.04.2004 16:49 <DIR> ..
21.04.2004 16:39 13 369 344 1099.0
21.04.2004 16:39 2 621 440 1100.0
21.04.2004 16:39 65 536 1101.0
21.04.2004 16:40 32 768 1103.0
21.04.2004 16:41 65 536 1104.0
21.04.2004 16:49 32 768 1106.0
21.04.2004 16:50 65 536 1108.0
20.04.2004 18:23 47 nsr.dir
21.04.2004 15:03 65 536 volume
Кроме того, все действия по резервному копированию утилита onbar
отражает в соответствующих таблицах базы данных sysutils, но это
заслуживает отдельной статьи. Обратитесь к документации [2], где все
подробно описано.
9. Решение проблем
Если процесс идет долго, а видимой активности диска нет, значит, вы пытаетесь
копировать в недоступные пулы, или ISM перестал работать. При поиске причины
проблемы вам могут помочь журналы ISM, которые находятся в каталоге
%ISMDIR%\logs. Например, в журнале daemon.log я обнаружил причину
зависания при первой попытке резервного копирования системы в целом - я забыл
изменить названия пулов в файле параметров конфигурации сервера Informix:
04/21/04 16:04:31 nsrd: media waiting event: backup to pool
'ISMData' waiting for 1 writable backup tape(s) or disk(s)
04/21/04 16:19:35 nsrd: media critical event: backup to pool
'ISMData' waiting for 1 writable backup tape(s) or disk(s)
А вот как в этом журнале отразились успешно выполненные операции резервного
копирования:
04/21/04 16:39:14 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
saving to pool 'ISMDiskData' (Data1)
04/21/04 16:39:19 nsrd: index warning: Filesystem for index
`creator' is getting full.
04/21/04 16:39:20 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
done saving to pool 'ISMDiskData' (Data1) 13 MB
04/21/04 16:39:20 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
saving to pool 'ISMDiskData' (Data1)
04/21/04 16:39:21 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
done saving to pool 'ISMDiskData' (Data1) 2.5 MB
04/21/04 16:39:21 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
saving to pool 'ISMDiskData' (Data1)
04/21/04 16:39:22 nsrd: creator:INFORMIX:\ol_creator\rootdbs\0
done saving to pool 'ISMDiskData' (Data1) 60 KB
04/21/04 16:39:23 nsrd: creator:INFORMIX:\ol_creator\0\17
saving to pool 'ISMDiskLogs' (Logs1)
04/21/04 16:39:25 nsrd: creator:INFORMIX:\ol_creator\0\17
done saving to pool 'ISMDiskLogs' (Logs1) 88 KB
04/21/04 16:39:29 nsrd: savegroup info: starting ISMDiskData
(with 1 client(s))
04/21/04 16:39:29 nsrd: savegroup info: creator:
C:\ISM\2.20\index\creator no cycles found in media db;
doing full save
04/21/04 16:39:54 nsrd: write completion notice: Writing to
volume Data1 complete
04/21/04 16:39:56 nsrd: write completion notice: Writing to
volume Logs1 complete
04/21/04 16:39:58 nsrd: creator:C:\ISM\2.20\index\creator
saving to pool 'ISMDiskData' (Data1)
04/21/04 16:39:59 nsrd: creator:C:\ISM\2.20\index\creator
done saving to pool 'ISMDiskData' (Data1) 4 KB
04/21/04 16:40:45 nsrd: write completion notice: Writing to
volume Data1 complete
04/21/04 16:40:47 nsrd: creator:bootstrap saving to pool
'ISMDiskData' (Data1)
04/21/04 16:40:48 nsrmmdbd: media db is saving its data. This
may take a while.
04/21/04 16:40:48 nsrmmdbd: media db is open for business.
04/21/04 16:40:49 nsrd: creator:bootstrap done saving to pool
'ISMDiskData' (Data1) 40 KB
04/21/04 16:41:11 nsrd: savegroup notice: ISMDiskData
completed, 1 client(s) (All Succeeded)
04/21/04 16:41:11 nsrmmdbd: Starting compression of media
database
04/21/04 16:41:12 nsrmmdbd: Finished compression of media
database
04/21/04 16:41:12 nsrd: index notice: nsrim has finished
checking the media db
04/21/04 16:41:42 nsrd: write completion notice: Writing to
volume Data1 complete
04/21/04 16:48:14 nsrd: creator:INFORMIX:\ol_creator\0\18
saving to pool 'ISMDiskLogs' (Logs1)
04/21/04 16:48:14 nsrd: creator:INFORMIX:\ol_creator\0\18
done saving to pool 'ISMDiskLogs' (Logs1) 52 KB
04/21/04 16:48:16 nsrd: savegroup info: starting ISMDiskData
(with 1 client(s))
04/21/04 16:48:45 nsrd: write completion notice: Writing to
volume Logs1 complete
04/21/04 16:48:45 nsrd: creator:C:\ISM\2.20\index\creator
saving to pool 'ISMDiskData' (Data1)
04/21/04 16:48:46 nsrd: creator:INFORMIX:\ol_creator\0\19
saving to pool 'ISMDiskLogs' (Logs1)
04/21/04 16:48:46 nsrd: creator:C:\ISM\2.20\index\creator done
saving to pool 'ISMDiskData' (Data1) 6 KB
04/21/04 16:48:47 nsrd: creator:INFORMIX:\ol_creator\0\19 done
saving to pool 'ISMDiskLogs' (Logs1) 20 KB
04/21/04 16:48:50 nsrd: savegroup alert: group ISMDiskData
aborted, savegroup is already running
04/21/04 16:49:32 nsrd: write completion notice: Writing to
volume Data1 complete
04/21/04 16:49:32 nsrd: write completion notice: Writing to
volume Logs1 complete
04/21/04 16:49:36 nsrd: creator:bootstrap saving to pool
'ISMDiskData' (Data1)
04/21/04 16:49:37 nsrmmdbd: media db is saving its data. This
may take a while.
04/21/04 16:49:37 nsrmmdbd: media db is open for business.
04/21/04 16:49:38 nsrd: creator:bootstrap done saving to pool
'ISMDiskData' (Data1) 42 KB
04/21/04 16:49:58 nsrd: savegroup notice: ISMDiskData
completed, 1 client(s) (All Succeeded)
04/21/04 16:50:28 nsrd: write completion notice: Writing to
volume Data1 complete
Информация эта легко поддается анализу даже и без дополнительного изучения
ISM...
Заключение
Я описал простую, понятную и многократно успешно использованную процедуру
настройки диспетчера хранения данных ISM и сервера Informix для дальнейшего
резервного копирования данных и автоматического резервного копирования
заполненных логических журналов на диск с помощью утилиты onbar.
Изложение велось на примере IDS 9.30.TC2, ISM 2.20 на платформе Windows XP
Professional (не поддерживаемой официально, так как в момент выпуска этой версии
IDS еще не было официального выпуска Windows XP). Эту процедуру настройки,
однако, легко адаптировать для любой UNIX платформы.
Попутно мы рассмотрели некоторые базовые утилиты командной строки для
управления диспетчером хранения данных ISM, а также простейшие способы контроля
работы ISM и утилиты onbar. Дополнительную информацию об ISM и
onbar можно найти в документации, ссылки на которую представлены
ниже.
Документация
1.
Informix
Storage Manager Administrator's Guide, Version 2.2 (G251-0498-00).
2.
Informix
Backup and Restore Guide, Version 8.31/9.3 (G251-0481-00)