Bienvenidos

Todos estos pasos descriptos fueron probados en ambientes productivos

jueves, 16 de julio de 2020

Luego de extender el Almacenamiento de bloques en Oracle Cloud

La finalidad es agrandar el filesystem /backup, que actualmente tiene 100gb, llevarlo a 200gb.
Primero , desde la consola del cloud, tenemos  2 opciones
La primera y  mas facil es agregar una lun ( un disco) y luego desde el Sistema operativo, la rescaneamos y hacemos todo el procedimiento para agregar el disco, extender el logical volume, y agrandar el filesystem.
La segunda opcion, es agrandar el almacenamiento de bloques desde la consola del OCI.
En este doc, voy a describir los pasos que debo hacer en el sistema operativo, luego de agrandar el disco desde el cloud.


[root@datawarehouse ~]# df -h /backup
Filesystem                                         Size    Used  Avail Use% Mounted on
/dev/mapper/vg_backup-lv_backup  100G   76G   25G  76% /backup

[root@datawarehouse ~]#

Chequeo de cuanto es el physical volume actual que contiene el fs /backup
[root@datawarehouse ~]# pvs
  PV         VG        Fmt  Attr PSize    PFree
  /dev/sda1  vg_Swap   lvm2 a--   50.00g 30.00g

  /dev/sdb1  vg_backup lvm2 a--  100.00g      0

  /dev/sdc1  vg_u02    lvm2 a--  200.00g      0

  /dev/sdd1  vg_u01    lvm2 a--  100.00g      0

[root@datawarehouse ~]# fdisk -l |grep /dev/sd

Disk   /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sdb1            2048   209715199   104856576   8e  Linux LVM
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
/dev/sda1            2048   104857599    52427776   8e  Linux LVM
Disk /dev/sdd: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sdd1            2048   209715199   104856576   8e  Linux LVM
Disk /dev/sdc: 214.7 GB, 214748364800 bytes, 419430400 sectors
/dev/sdc1            2048   419430399   209714176   8e  Linux LVM

Con estos 2 comandos ( que Oracle llama "comandos de nueva exploracion") releemos el tamaño de los discos
[root@datawarehouse ]# dd iflag=direct if=/dev/oracleoci/oraclevdc of=/dev/null count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000854999 s, 599 kB/s
[root@datawarehouse ~]# echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevdc | cut -d'/' -f 2`/device/rescan

Vuelvo a chequear con fdisk y veo que  ya  lo agrego
[root@datawarehouse ~]# fdisk -l |grep /dev/sd
Disk /dev/sdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
/dev/sdb1            2048   209715199   104856576   8e  Linux LVM

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
/dev/sda1            2048   104857599    52427776   8e  Linux LVM
Disk /dev/sdd: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sdd1            2048   209715199   104856576   8e  Linux LVM
Disk /dev/sdc: 214.7 GB, 214748364800 bytes, 419430400 sectors
/dev/sdc1            2048   419430399   209714176   8e  Linux LVM
Disk /dev/sde: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sde1               1    97677311    48838655+  ee  GPT
[root@datawarehouse ~]#
Con el lsblk veo que todavia el disco sdb esta en 100gb

[root@datawarehouse DMP]# ls -l /dev/oracleoci/oraclevd*
lrwxrwxrwx. 1 root root 6 May 12 07:48 /dev/oracleoci/oraclevda -> ../sde
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevda1 -> ../sde1
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevda2 -> ../sde2
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevda3 -> ../sde3
lrwxrwxrwx. 1 root root 6 May 12 07:48 /dev/oracleoci/oraclevdb -> ../sdd
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevdb1 -> ../sdd1
lrwxrwxrwx. 1 root root 6 May 12 07:48 /dev/oracleoci/oraclevdc -> ../sdb
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevdc1 -> ../sdb1
lrwxrwxrwx. 1 root root 6 May 12 07:48 /dev/oracleoci/oraclevdd -> ../sdc
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevdd1 -> ../sdc1
lrwxrwxrwx. 1 root root 6 May 12 07:48 /dev/oracleoci/oraclevde -> ../sda
lrwxrwxrwx. 1 root root 7 May 12 07:48 /dev/oracleoci/oraclevde1 -> ../sda1
[root@datawarehouse DMP]# lsblk /dev/sdb
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb                       8:16   0  210G  0 disk
└─sdb1                    8:17   0  100G  0 part
  └─vg_backup-lv_backup 252:0    0  100G  0 lvm  /backup
[root@datawarehouse ]# 

Ahora, si, me anoto los sectores que ocupa ahora el /dev/sdb, debo anotar en que sector empieza y en cual termina.
[root@datawarehouse ]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 440401920s
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start  End         Size        Type     File system  Flags
 1      2048s  209715199s  209713152s  primary               lvm

(parted)

Con estos datos voy a hacer un parted al disco que quiero agrandar y un mkpart
Primero hay que tomar nota de los valores de las columnas Número, Inicio y Sistema de archivos de la partición raíz.
Ejecuto el siguiente comando para eliminar la partición raíz existente:
(parted) rm <partition_number>
<partition_number> es el valor de la columna Número.
Ejecute el siguiente comando para volver a crear la partición:
(parted) mkpart
En la petición de datos Start?, especifique el valor de la columna Inicio. En la petición de datos File system type?, especifique el valor de la columna Sistema de archivos. Especifique 100 % para la petición de datos End?.
Ejecute el siguiente comando para salir de parted:
(parted) quit

Aca abajo estan los ejemplo con datos reales
[root@datawarehouse]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 440401920s
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start  End         Size        Type     File system  Flags
 1      2048s  209715199s  209713152s  primary               lvm

(parted) rm 1
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? Cancel
(parted) p
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 440401920s
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start  End  Size  Type  File system  Flags

(parted) quit
Information: You may need to update /etc/fstab.

[root@datawarehouse]#

Ahora por ultimo, modifico el tamaño del disco y demas datos.

[root@datawarehouse /]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 225GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start  End  Size  Type  File system  Flags

(parted) unit s
(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? xfs
Start? 2048
End? 419430398    --->> este dato lo saque multiplicando x 2 los sectores que ocupaba antes el disco de 100gb, pude haber puesto  100%  y era lo mismo
(parted) quit
Information: You may need to update /etc/fstab.

Listo , ahora chequeamos con lsblk,que  realmete haya agregado esos 100+ al sdb1
[root@datawarehouse /]# lsblk /dev/sdb
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb                       8:16   0  210G  0 disk
└─sdb1                    8:17   0  200G  0 part
  └─vg_backup-lv_backup 252:0    0  100G  0 lvm
[root@datawarehouse /]#

Ahora queda desmontar el fs /backup, hacer un xfs_repair 
[root@datawarehouse /]# umount /backup
[root@datawarehouse /]# xfs_repair /dev/mapper/vg_backup-lv_backup
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 2
        - agno = 3
        - agno = 1
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done
[root@datawarehouse /]#

Por ultimo, un pvresize , y un lvextend 
[root@datawarehouse /]# pvresize /dev/sdb1
  Physical volume "/dev/sdb1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@datawarehouse /]# pvs
  PV         VG        Fmt  Attr PSize    PFree
  /dev/sda1  vg_Swap   lvm2 a--   <50 .00g="" div="" g="">
  /dev/sdb1  vg_backup lvm2 a--  <200 .00g="" 100.00g="" font="">
  /dev/sdc1  vg_u02    lvm2 a--  <200 .00g="" 0="" div="" nbsp="">
  /dev/sdd1  vg_u01    lvm2 a--  <100 .00g="" 0="" div="" nbsp="">
[root@datawarehouse /]# lvextend -L+100G /dev/mapper/vg_backup-lv_backup
  Size of logical volume vg_backup/lv_backup changed from <100 .00="" div="" extents="" gib="" to="">
  Logical volume vg_backup/lv_backup successfully resized.
[root@datawarehouse /]# xfs_growfs -d /backup
meta-data=/dev/mapper/vg_backup-lv_backup isize=256    agcount=4, agsize=6553344 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=26213376, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=12799, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26213376 to 52427776
[root@datawarehouse /]# df -h /backup
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg_backup-lv_backup  200G   76G  125G  38% /backup
[root@datawarehouse /]#