Нужно отмонтировать диски а ASM с одного пути, например /dev/sdc, и примонтировать к другому, например к /dev/dm-1
Для примера:
1)
ls -al /dev/oracleasm/disks/
brw-rw---- 1 oracle oinstall 8, 16 Jul 2 15:12 DISK1
brw-rw---- 1 oracle oinstall 8, 32 Jul 2 15:12 DISK2
Видно что диски примонтированы напрямую, не через multipath (цифра 8)
2)
Должно быть:
ls -al /dev/oracleasm/disks/
brw-rw---- 1 oracle oinstall 253, 8 May 20 14:40 DISK1
brw-rw---- 1 oracle oinstall 253, 9 May 20 14:40 DISK2
Вместо 8 стоит 253, значит диски примонтированы правильно (через multipath )
3)
Для определения, к какому multipath относится DISK1:
multipath -ll | less
далее в этом списке ищем устройство с этими major minor номерами.
То есть 8:16. Для поиска можно просто в строке приглашения less набрать /8:16
Имеем например: 0:0:0:5 sdb 8:16 [active][ready], а принадлежит он mpath1.
Путь к нему будет: /dev/mapper/mpath1
4)
Определяем пути, к которым подключены диски:
/etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
ls -al /dev/oracleasm/disks/
total 0
drwxr-xr-x 1 root root 0 Jun 25 18:47 .
drwxr-xr-x 4 root root 0 Jun 25 18:47 ..
brw-rw---- 1 oracle oinstall 8, 48 Jul 3 16:58 DISK1
brw-rw---- 1 oracle oinstall 8, 64 Jul 3 16:58 DISK2
brw-rw---- 1 oracle oinstall 8, 80 Jul 3 16:58 DISK3
brw-rw---- 1 oracle oinstall 8, 96 Jul 3 16:58 DISK4
/etc/init.d/oracleasm querydisk -v -d DISK1
Disk "DISK1" is a valid ASM disk on device /dev/sdd[8,48]
Так смотрим по всем дискам, в итоге составляем таблицу соответствий:
------------------------------------------------------------------
| DISK1 sdd mpath6 dm-8
| DISK2 sde mpath3 dm-3
| DISK3 sdf mpath4 dm-4
| DISK4 sdg mpath5 dm-5
------------------------------------------------------------------
5) В ASM
SQL> select g.name "Group", d.name "Disk", d.mode_status "Status" from v$asm_disk d, v$asm_diskgroup g where d.group_number = g.group_number;
Group Disk Status
------------------------------ ------------------------------ -------
DATA DATA_0002 ONLINE
FLASH FLASH_0000 ONLINE
DATA DATA_0001 ONLINE
DATA DATA_0000 ONLINE
SQL> show parameter asm_diskstring
asm_diskstring string /dev/oracleasm/disks
SQL> select GROUP_NUMBER, DISK_NUMBER, MODE_STATUS, STATE, NAME, PATH from v$asm_disk;
1 2 ONLINE NORMAL DATA_0002 /dev/oracleasm/disks/DISK4
2 0 ONLINE NORMAL FLASH_0000 /dev/oracleasm/disks/DISK3
1 1 ONLINE NORMAL DATA_0001 /dev/oracleasm/disks/DISK2
1 0 ONLINE NORMAL DATA_0000 /dev/oracleasm/disks/DISK1
6) Удаление:
ALTER DISKGROUP FLASH DROP DISK FLASH_0000;
7) Отмонтируем:
ASMCMD> umount FLASH
DROP DISKGROUP FLASH INCLUDING CONTENTS;
8) Удаляем:
/etc/init.d/oracleasm deletedisk DISK3
Deleting Oracle ASM disk "VOL1" [ OK ]
9) Если не удаляется, то чистим заголовок диска:
-- Сохраняем заголовок диска в файл
dd if=/dev/sdf of=file_sdf bs=1024 count=100
dd if=/dev/sdf of=file_sdf3 bs=1024 count=100
-- Обнуление диска для возможности его удалить
dd if=/dev/zero of=/dev/sdf bs=1024 count=100
-- Удаляем с /etc/init.d/oracleasm deletedisk, если и сейчас не получится, то перезагружаем хост
-- Восстанавливаем заголовок диска:
dd if=file_sdf of=/dev/sdf bs=1024 count=100
10) Создаем
/etc/init.d/oracleasm createdisk DISK3 /dev/dm-4
11) Добавляем параметр EXCLUDE в /etc/sysconfig/oracleasm
ORACLEASM_SCANEXCLUDE="sd"
12)/etc/init.d/oracleasm scandisks
Есть вопрос: сохранятся ли данные на ASM диске после данных манипуляций? Судя по по обнулению заголовка данные будут потяряны и базу придется восстанавливать из backup
ОтветитьУдалитьДа, все данные на ASM-диске при выполнении этих действий удалятся.
ОтветитьУдалитьДостаточно выполнить пункт 11, а потом перегрузить драйвер ASM:
ОтветитьУдалитьoracleasm exit
oracleasm init
Далее выполняем oracleasm scandisks
После этого команда querydisk -d выдает правильный путь.