Añadir discos a ASM en sistemas de archivos

En esta entrada vamos a indicar cómo añadir discos en el sistema operativo Linux de forma manual. Se explica también como presentarlos para sean los discos que usemos para almacenar los datos de nuestra base de datos Oracle.

En primer lugar vamos a listar los discos que tenemos en nuestra máquina virtual.

Hay dos formas, una de forma manual y otra a través de una forma gráfica cómo se muestra a continuación.

En este documento no vamos a realizar las acciones de forma gráfica, ya que son bastante intuitivas. Puedes apoyarte en la documentación para realizar las acciones de forma gráfica. Existen otras alternativas gráficas y muy usadas cómo gparted, que presentaremos en posteriores post. En este caso, por tanto vamos a proceder a realizar el proceso manualmente.

Pasos particionar un disco Linux de forma manual

Paso 1- Particionar el disco

Listamos los discos que tenemos disponibles con lsblk. En este caso disponemos de tres discos de 25G para particionar (sdb,sdc,sdd).

Esto mismo lo puedes hacer con fdisk –l

Vamos a proceder a particionar los dispositivos. Para ello usamos el comando fdisk (como root) y el dispositivo a particionar.

fdisk /dev/sdb

[root@oracle-21 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xf8f72c85.

Command (m for help): n
Partition type
p   primary (0 primary, 0 extended, 4 free)
e   extended (container for logical partitions)T
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-52428799, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-52428799, default 52428799):
<enter>

Created a new partition 1 of type ‘Linux’ and of size 25 GiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): L

0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris       
1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data  
6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility  
8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt 
9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O      
b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor    
 
c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs
f  W95 Ext’d (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary 
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS   
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT           


Hex code (type L to list all codes): 83
The partition table has been altered.

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

La secuencia es la siguiente:

n,p,1,<INTRO>,<INTRO>,w

Si queremos ver las opciones que vamos a utilizar antes de particionar:

n,p,1,<INTRO>, <INTRO>,t,83,w

Con ello estamos indicando al SSO que se trata de una nueva partición (n), que es una partición primaria (p), el número de partición (1), se pulsó Intro, con esto le indicamos al SSOO que queremos que todo el disco esté en una sola partición. Luego pulsamos la tecla (t) para indicarle el tipo de partición, (83) para indicarle que se trata de una partición de Linux y posteriormente (w). Cuando pulsamos w, es cuando realmente el SSOO comienza a realizar los cambios en el disco.

Por lo tanto la secuencia sería: n,p,1,<INTRO>,<INTRO>,w

En cuanto a los tipos de particiones disponibles es posible visualizar todas las opciones disponibles antes de elegir el tipo de partición, en este caso Linux, pulsando la tecla L, tal y como se muestra en la salida de pantalla anterior.

Con cualquiera de las opciones indicadas con anterioridad podemos ver cómo se encuentran los dispositivos, y podemos ver las partición recientemente creada.

Paso 2-Crear filesystem

Ahora necesitamos crear el sistema de archivos, o filesystem, para ello usaremos el comando mkfs. El comando mkfs tiene múltiples variantes, en este blog no se pretende ver este comando en detalle, nos estamos enfocando específicamente en crear el almacenamiento necesario para almacenar nuestras BBDD.
Vamos a formatear la partición que hemos creado con anterioridad, que en nuestro caso es la partición primaria 1 (sdb1), recordad que el dispositivo /dev/sdb se trata del disco duro en sí.
Vamos ahora por tanto a formatear la partición de tipo Linux. A este tipo de particiones se le puede dar formato ext2, ext3 y ext4. Por defecto sino se especifica la partición se crea por default como ext2, usar ext2 ya no es muy aconsejable, la mayoría de sistemas Linux usan ext4, por tanto en este caso, vamos a darle formato ext4, que es el que actualmente se está utilizando.

Puedes usar cualquiera de estas dos opciones (como root).

#> mkfs -t ext4 /dev/sdb1
#> mkfs.ext4  /dev/sdb1
(Puedes añadir –V de “verbose” para ver más información mientras el commando está en marcha)

[root@oracle-21 ~]# mkfs.ext4  /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks:    4096/6553344
done
Creating filesystem with 6553344 4k blocks and 1638400 inodes
Filesystem UUID: acb407b4-8572-447d-aeed-fb0f2c630daf
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Allocating group tables: done         
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Verificamos que el comando se ha ejecutado correctamente:

[root@oracle-21 ~]# file -sL /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=acb407b4-8572-447d-aeed-fb0f2c630daf (extents) (64bit) (large files) (huge files)
[root@oracle-21 ~]#

Paso 3- Crear el punto de montaje

Una vez hemos realizado los pasos anteriores, simplemente tenemos que crear el directorio en el sistema operativo con el nombre que queremos darle a la partición creada anteriormente, que será el nombre al que nos referiremos posteriormente a nivel de almacenamiento.

Para ello simplemente creamos el directorio con mkdir <nombre directorio>.

En este caso como va a ser el espacio que almacenará datos para nuestra BBDD, lo llamaremos p.eje. oradata.

[root@oracle-21 ~]# mkdir /oradata

Paso 4- Crear el punto de montaje, montar la partición

En este punto lo que se necesita es montar la partición, para ello únicamente tenemos que indicarle al SSOO, qué partición queremos montar y cómo lo queremos ver representado a nivel de SSOO, a nivel de directorio. En nuestro caso, se monta la partición /dev/sdb1 como /oradata.

root@oracle-21 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             3.9G     0  3.9G   0% /dev
tmpfs                3.9G     0  3.9G   0% /dev/shm
tmpfs                3.9G  9.4M  3.9G   1% /run
tmpfs                3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/ol-root   26G  5.4G   21G  21% /
/dev/sda1           1014M  318M  697M  32% /boot
tmpfs                796M   28K  796M   1% /run/user/1000
/dev/sr0              10G   10G     0 100% /run/media/oracle/OL-8-5-0-BaseOS-x86_64

[root@oracle-21 ~]# mount /dev/sdb1 /oradata
[root@oracle-21 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             3.9G     0  3.9G   0% /dev
tmpfs                3.9G     0  3.9G   0% /dev/shm
tmpfs                3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/ol-root   26G  5.4G   21G  21% /
/dev/sda1           1014M  318M  697M  32% /boot
tmpfs                796M   28K  796M   1% /run/user/1000
/dev/sr0              10G   10G     0 100% /run/media/oracle/OL-8-5-0-BaseOS-x86_64
/dev/sdb1             25G   45M   24G   1% /oradata
[root@oracle-21 ~]#

La configuración de esta partición desaparecerá en el próximo reinicio, donde habría que volver a montar de forma manual todos y cada uno de los puntos de montajes que necesitamos acceder a nivel de SSOO, mientras todo este tiempo, como es evidente no se podrá acceder a los datos que sobre ese directorio se almacenan. Para que esto no ocurra es necesario configurar el fichero fstab, ubicado en la ruta /etc. El archivo /etc/fstab contiene la configuración que indica al sistema como deben montarse las unidades del equipo. Es un fichero con 6 columnas a configurar.

Al igual que hemos indicado antes con el comando mkfs, los parámetros del punto de montaje varían según necesidades, en nuestro caso, con estos parámetros es suficiente.

/dev/sdb1     /oradata    ext4    defaults        0 0

Cómo último paso únicamente quedaría montarlo.

mount /oradata

Vamos a repetir los siguientes pasos con los dispositivos (sdc, sdd) con el fin de disponer de /oradata /oradata1 /oradata2

La foto final sería algo como lo siguiente:

Con este almacenamiento ya puedes lanzar la creación de la base de datos, los datos se deben de repartir entre los directorios recientemente creados. Esta configuración con la aparición de ASM, queda prácticamente obsoleta para aquellas instalaciones más o menos grandes, para que Oracle Automatic Storage Manager (ASM) pueda identificar los discos, estos deben de estar identificados de manera consistente con propiedades y permisos específicos, esto se puede realizar (en Linux) usando ASMLib o Udev, en este ejemplo añadiremos los discos con el administrador de dispositivos de Linux, UDEV. En un post posterior, describiremos cómo realizar las configuraciones necesarias para que los discos sean gestionados vía UDEV o ASMlib.

Scroll al inicio