Dernièrement, j’ai été confronté à une petite problématique spécifique sur un cluster RAC. Alors que nous avions configuré un groupe de disques sous ASM dédié aux sauvegardes, il se trouvait que le logiciel de sauvegarde était dans l’incapacité de récupérer les sauvegardes effectuées sous ASM pour les transférer sur un espace externe et mutualisé à cet effet. A moins de changer le logiciel de sauvegarde la seule solution qui nous restait était de migrer le groupe de disques pour qu’il soit gérer en file system par ASM.
Contrôler la présence des modules ACFS
En premier lieu il convient de contrôler si les modules ACFS sont bien configurés sur chacun des nœuds du cluster afin que les modules soient lancés automatiquement au démarrage du serveur.
- Se connecter sous compte ‘root’
- Vérifier la présence des modules ACFS au démarrage du serveur
#> lsmod | grep oracle oracleasm 81576 1
Dans le cas où les modules oracleacfs, oracleadvm, oracleoks seraient présents aller directement au paragraphe suivant sinon effectuer les opérations qui suivent
- Modifier le fichier de configuration pour activer le démarrage automatique des modules ACFS
#> view /etc/init.d/acfsload #!/bin/sh # chkconfig: 2345 30 31 # description: Automatically load Oracle 11gR2 ACFS drivers during system reboot /oracle/grid/11.2.0.4/bin/acfsload start –s
- Activer les modules ACFS
#> cd /oracle/grid/11.2.0.4/bin/ #> chmod 775 acfsload #> chkconfig --add acfsload #> chkconfig --list acfsload
- Vérifier l’existence des modules ACFS sur le serveur
#> lsmod | grep oracle oracleacfs 877320 0 oracleadvm 221760 0 oracleoks 276880 2 oracleacfs,oracleadvm oracleasm 81576 1
Suppression du groupe de sauvegarde à migrer
Cette opération est à effectuer uniquement dans le cas où les disques ont été déjà assignés au groupe de disques qui doit migrer sous ACFS sinon aller au paragraphe suivant
- Se connecter sous le compte ‘grid’
- Désactiver le groupe de disques sur les autres nœuds du cluster
#> . oraenv +ASM2 #> sqlplus / as sysasmSQL> ALTER DISKGROUP BCKP DISMOUNT;
◊ Répéter cette même opération sur les autres nœuds du cluster
- Supprimer le groupe de disques de sauvegarde sur le nœud 1 : BCKP
. oraenv +ASM1 #> sqlplus / as sysasm SQL> DROP DISKGROUP BCKP INCLUDING CONTENTS FORCE;
- Se connecter sous le compte ‘root’
- Supprimer les disques ASM initialement associés au groupe de disques BCKP
[root@EASYRAC01 ~]# ls -ltr /dev/oracleasm/disks total 0 brw-rw---- 1 oracle oinstall 253, 25 30 juin 15:27 ASM_BCKP_004 brw-rw---- 1 oracle oinstall 253, 20 30 juin 15:27 ASM_BCKP_003 brw-rw---- 1 oracle oinstall 253, 19 30 juin 15:27 ASM_BCKP_002 brw-rw---- 1 oracle oinstall 253, 22 30 juin 15:27 ASM_BCKP_001 brw-rw---- 1 oracle oinstall 253, 13 30 juin 15:35 ASM_REDO_2_002 brw-rw---- 1 oracle oinstall 253, 5 30 juin 15:35 ASM_DATA_006 brw-rw---- 1 oracle oinstall 253, 9 30 juin 15:35 ASM_DATA_002 brw-rw---- 1 oracle oinstall 253, 14 30 juin 15:35 ASM_REDO_2_003 brw-rw---- 1 oracle oinstall 253, 7 30 juin 15:35 ASM_DATA_003 brw-rw---- 1 oracle oinstall 253, 12 30 juin 15:35 ASM_REDO_2_001 brw-rw---- 1 oracle oinstall 253, 10 30 juin 15:35 ASM_REDO_1_004 brw-rw---- 1 oracle oinstall 253, 11 30 juin 15:35 ASM_REDO_1_003 brw-rw---- 1 oracle oinstall 253, 17 30 juin 15:35 ASM_REDO_1_002 brw-rw---- 1 oracle oinstall 253, 4 30 juin 15:35 ASM_DATA_005 brw-rw---- 1 oracle oinstall 253, 3 30 juin 15:35 ASM_DATA_004 brw-rw---- 1 oracle oinstall 253, 2 30 juin 15:35 ASM_DATA_001 brw-rw---- 1 oracle oinstall 253, 16 30 juin 15:35 ASM_ARCH_001 brw-rw---- 1 oracle oinstall 253, 15 30 juin 15:35 ASM_REDO_2_004 brw-rw---- 1 oracle oinstall 253, 18 30 juin 15:35 ASM_REDO_1_001 brw-rw---- 1 oracle oinstall 253, 24 30 juin 15:35 ASM_GRID_003 brw-rw---- 1 oracle oinstall 253, 27 30 juin 15:35 ASM_GRID_002 brw-rw---- 1 oracle oinstall 253, 26 30 juin 15:35 ASM_GRID_001 [root@EASYRAC01 ~]# /etc/init.d/oracleasm deletedisk ASM_BCKP_001 Removing ASM disk "ASM_BCKP_001": [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm deletedisk ASM_BCKP_002 Removing ASM disk "ASM_BCKP_002": [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm deletedisk ASM_BCKP_003 Removing ASM disk "ASM_BCKP_003": [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm deletedisk ASM_BCKP_004 Removing ASM disk "ASM_BCKP_004": [ OK ]
Création des disques pour ACFS
- Se connecter sous le compte ‘root’
- Créer les disques ASM à partir des Luns réservés pour l’espace de sauvegarde
[root@EASYRAC01 ~]# ls -l /dev/mapper/*RMAN* lrwxrwxrwx 1 root root 8 15 mai 17:22 /dev/mapper/Lun15_ASMRMAN_BACKUP_01 -> ../dm-22 lrwxrwxrwx 1 root root 8 15 mai 17:22 /dev/mapper/Lun16_ASMRMAN_BACKUP_02 -> ../dm-19 lrwxrwxrwx 1 root root 8 15 mai 17:22 /dev/mapper/Lun17_ASMRMAN_BACKUP_03 -> ../dm-20 lrwxrwxrwx 1 root root 8 15 mai 17:22 /dev/mapper/Lun18_ASMRMAN_BACKUP_04 -> ../dm-25 [root@EASYRAC01 ~]# /etc/init.d/oracleasm createdisk ACFS_BCKP_001 /dev/mapper/Lun15_ASMRMAN_BACKUP_01 Marking disk "ACFS_BCKP_001" as an ASM disk: [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm createdisk ACFS_BCKP_002 /dev/mapper/Lun16_ASMRMAN_BACKUP_02 Marking disk "ACFS_BCKP_002" as an ASM disk: [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm createdisk ACFS_BCKP_003 /dev/mapper/Lun17_ASMRMAN_BACKUP_03 Marking disk "ACFS_BCKP_003" as an ASM disk: [ OK ] [root@EASYRAC01 ~]# /etc/init.d/oracleasm createdisk ACFS_BCKP_004 /dev/mapper/Lun18_ASMRMAN_BACKUP_04 Marking disk "ACFS_BCKP_004" as an ASM disk: [ OK ]
- Activer les disques ASM sur les autres nœuds du cluster sous le compte ‘root’
[root@EASYRAC02 ~]# /etc/init.d/oracleasm scandisks Scanning the system for Oracle ASMLib disks: [ OK ] [root@EASYRAC02 ~]# /etc/init.d/oracleasm listdisks ACFS_BCKP_001 ACFS_BCKP_002 ACFS_BCKP_003 ACFS_BCKP_004 ………………. ……………….. …………….. ASM_GRID_001 ASM_GRID_002 ASM_GRID_003
Création du groupe de disques ACFS
Maintenant que les disques ASM ont été créés et assignés à tous les membres du cluster il suffit de créer le groupe de disques ACFS_BCKP
- Se connecter sous le compte ‘grid’
- Créer le groupe de disques ACFS_BCKP avec ses disques ASM (renseigner le mot de passe SYS)
[oracle@EASYRAC01 ~]$ . oraenv +ASM1 [oracle@EASYRAC01 ~]$ asmca -silent -createDiskGroup -diskString '/dev/oracleasm/disks/*' -diskGroupName ACFS_BCKP -diskList /dev/oracleasm/disks/ACFS_BCKP_001, /dev/oracleasm/disks/ACFS_BCKP_002, /dev/oracleasm/disks/ACFS_BCKP_003, /dev/oracleasm/disks/ACFS_BCKP_004 -redundancy EXTERNAL -au_size 4 -sysAsmPassword <mot_de_passe_SYS> Le groupe de disques ACFS_BCKP a été créé. [oracle@EASYRAC01 ~]$ asmcmd ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 4194304 5120228 5120080 0 5120080 0 N ACFS_BCKP/
- Créer le volume pour le groupe de disques ACFS_BCKP avec une taille légèrement inférieure à celle qui est disponible
[oracle@EASYRAC01 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 30 16:19:35 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
SQL> alter diskgroup ACFS_BCKP add volume 'bckp_vol' size 5100000M;
Diskgroup altered.
SQL> col volume_device for a40
SQL> set lines 200
SQL> col mountpath for a40
SQL> select dg.name, v.volume_name, v.volume_device, v.mountpath, v.state from v$asm_diskgroup dg, v$asm_volume v where dg.group_number=v.group_number ;
NAME VOLUME_NAME VOLUME_DEVICE MOUNTPATH STATE
--------------------- ---------------- --------------------- ---------------------- -------
ACFS_BCKP BCKP_VOL /dev/asm/bckp_vol-445 ENABLED
- Créer le point de montage pour le volume bckp_vol-445
[oracle@EASYRAC01 ~]$ mkdir -p /data/acfsmnt/bckp_vol-445
- Se connecter sous le compte ‘root’
[oracle@EASYRAC01 ~]$ su -
- Enregister le volume et le point de montage au niveau du cluster
[root@EASYRAC01 ~]# acfsutil registry -a -f /dev/asm/bckp_vol-445 /data/acfsmnt/bckp_vol-445 acfsutil registry: mount point /data/acfsmnt/bckp_vol-445 successfully added to Oracle Registry
- Création du file system
[root@EASYRAC01 ~]# mkfs.acfs -f /dev/asm/bckp_vol-445 mkfs.acfs: version = 11.2.0.4.0 mkfs.acfs: on-disk version = 39.0 mkfs.acfs: volume = /dev/asm/bckp_vol-445 mkfs.acfs: volume size = 5347737600000 mkfs.acfs: Format complete.
- Montage du file system sur tous les nœuds du cluster
[root@EASYRAC01 ~]# mount.acfs -o all [root@EASYRAC01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg00-lv_root 3,0G 364M 2,5G 13% / tmpfs 253G 312M 253G 1% /dev/shm /dev/sda1 485M 35M 426M 8% /boot /dev/mapper/vg00-lv_home 2,0G 68M 1,9G 4% /home /dev/mapper/vg00-lv_opt 1008M 143M 815M 15% /opt /dev/mapper/vg00-lv_tmp 9,9G 72M 9,3G 1% /tmp /dev/mapper/vg00-lv_usr 5,0G 2,2G 2,6G 46% /usr /dev/mapper/vg00-lv_var 5,0G 280M 4,4G 6% /var /dev/mapper/vg00-lv_varlog 30G 308M 28G 2% /var/log /dev/mapper/vg00_oratools-lv_oratools 196G 28G 159G 15% /oracle /dev/mapper/vg_data-lv_data 493G 80G 388G 17% /data /dev/asm/bckp_vol-445 4,9T 10G 4,9T 1% /data/acfsmnt/bckp_vol-445
- Se connecter sous le compte ‘oracle’
[root@EASYRAC01 bckp_vol-445]# su – oracle . oraenv +ASM1
- Vérifier les droits d’écriture sur le point de montage
[oracle@EASYRAC01 ~]$ cd /data/acfsmnt/bckp_vol-445 [oracle@EASYRAC01 bckp_vol-445]$ touch toto [oracle@EASYRAC01 bckp_vol-445]$ ls -l total 64 drwx------ 2 root root 65536 30 juin 16:56 lost+found -rw-r--r-- 1 oracle oinstall 0 30 juin 16:59 toto [oracle@EASYRAC01 bckp_vol-445]$ rm toto
◊ Répéter cette même opération sur les autres noeuds du cluster
- Se connecter sous le compte ‘grid’
- Vérifier le groupe de disques ACFS_BCKP et le point de montage
#> su - grid #> . oraenv +ASM1 [grid@EASYRAC01 bckp_vol-445]$ asmcmd ASMCMD> volstat DISKGROUP NUMBER / NAME: 2 / ACFS_BCKP --------------------------------------- VOLUME_NAME READS BYTES_READ READ_TIME READ_ERRS WRITES BYTES_WRITTEN WRITE_TIME WRITE_ERRS ------------------------------------------------------------- BCKP_VOL 830 653312 .917 0 2590200 2019209216 1317.386 0 ASMCMD> [grid@EASYRAC01 ~]$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 30 16:19:35 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: SQL> alter diskgroup ACFS_BCKP add volume 'bckp_vol' size 5100000M; Diskgroup altered. SQL> col volume_device for a40 SQL> set lines 200 SQL> col mountpath for a40 SQL> select dg.name, v.volume_name, v.volume_device, v.mountpath, v.state from v$asm_diskgroup dg, v$asm_volume v where dg.group_number=v.group_number ; NAME VOLUME_NAME VOLUME_DEVICE MOUNTPATH STATE ----------------- ------------- --------------------- -------------------------- ------- ACFS_BCKP BCKP_VOL /dev/asm/bckp_vol-445 /data/acfsmnt/bckp_vol-445 ENABLED
- Rebooter tous les nœuds du cluster sous le compte ‘root’
Voilà maintenant votre espace de sauvegarde est géré par ACFS !!!!!!!