¿Cómo comprobar el progreso de un comando lvresize que ya se está ejecutando?

¿Cómo comprobar el progreso de un comando lvresize que ya se está ejecutando?

Primero, se realizó una copia de seguridad del sistema de archivos y se desmontó con éxito.

Luego, se ejecutó un lvresize, y ya se está ejecutando:

lvresize --resizefs --size 1024G /dev/dbdrp/db

Y muestra el resultado:

fsck from util-linux-ng 2.17.2
/dev/mapper/dbdrp-db: 1718907/201326592 files (0.4% non-contiguous), 92969270/805304320 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/dbdrp-db to 268435456 (4k) blocks.

La salida de los sistemas de archivos fue la anterior:

[root@generic-linux-hostname ~]# df -hP
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/dbdrp-db  3.0T  310G  2.7T  11% /usr/local/oracle

Y tablas de volúmenes físicos donde se encuentra lo siguiente:

PV         VG       Fmt  Attr PSize  PFree
  /dev/xvdc1 dbdrp    lvm2 a--   1.50t    0
  /dev/xvdd1 dbdrp    lvm2 a--   1.50t    0

Una vez finalizado el cambio de tamaño, uno de estos volúmenes se eliminará para reciclar el disco duro virtual.

¿Cómo puedo ver el progreso de este lvresize? Ha estado funcionando una hora y no se ha desechado mucha información.

Gracias chicos :)

Respuesta1

Esto puede ser un exceso porque no conozco los aspectos internos pero, para tener una idea, puedes probar lo siguiente:

Obtenga el pid del proceso en ejecución:

pgrep -afl resize2fs
2377 resize2fs -M /dev/vg0/lv-3

Aquí solo estaba resize2fscambiar a lvresize (si es el comando el que realmente cambia el tamaño). A continuación, ejecute strace -e pread64,pwrite64 -p 2377para monitorear cuáles son las llamadas al sistema que realiza el comando, de modo que verá desde dónde lee y dónde escribe.

La salida sería algo como esto:

pread64(3, "<!-- ..........................."..., 1236992, 2441878626304) = 1236992
pwrite64(3, "<!-- ..........................."..., 1236992, 181592702976) = 1236992
pread64(3, "<!-- ..........................."..., 479232, 2441880231936) = 479232
pwrite64(3, "<!-- ..........................."..., 479232, 181593939968) = 479232

y si revisas la página de manual pread64, ves que su firma es ssize_t pread(int fd, void *buf, size_t count, off_t offset)así, el último parámetro de la llamada, es el desplazamiento o desde qué punto del bloque está leyendo en este momento. Si convierte 2441880231936bytes a TB, serían aproximadamente 2,2 TB y mi volumen, como se muestra a continuación, tiene 3,44 TB, 2,2/3,34 = ~65%. Pero esto es solo una aproximación a dónde se encuentra ahora porque, en ese caso, cambiará el tamaño de la partición al mínimo posible (debido a resize2f -M) según el espacio libre. Además, no estoy seguro de si ext4 (en mi caso) escribiría datos en bloques contiguos, por lo que podría suponer menos trabajo que el disco completo.

lv-3 vg0  -wi-ao----  <3.34t

Respuesta2

lvresize no tiene la opción de barra de progreso. Pero, si cambias el tamaño en más pasos, puedes comprobar que:

  1. Verifique el tamaño inicial del fs:
# df -h /mnt
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects   19G  5.3G   13G  30% /mnt
  1. desmontar:
# umount /mnt
  1. revisa el fs:
# e2fsck -f /dev/mapper/vg00-vol_projects
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg00-vol_projects: 13/1245184 files (0.0% non-contiguous), 1447987/4980736 blocks
  1. cambie el tamaño del fs con la opción de progreso (-p):
# resize2fs -p /dev/mapper/vg00-vol_projects 6G
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/mapper/vg00-vol_projects to 1572864 (4k) blocks.
Begin pass 2 (max = 32768)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 152)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg00-vol_projects is now 1572864 blocks long.
  1. comprobar el tamaño inicial del VI:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 19.00g
  1. cambie el tamaño del LV sin la opción resizefs (lo hicimos en el paso anterior):
# lvresize --size 6G /dev/mapper/vg00-vol_projects
  WARNING: Reducing active logical volume to 6.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vol_projects? [y/n]: y
  Reducing logical volume vol_projects to 6.00 GiB
  Logical volume vol_projects successfully resized
  1. comprobar el tamaño:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 6.00g
  1. monte y verifique el tamaño fs:
# mount /dev/mapper/vg00-vol_projects /mnt
# df -h /mnt
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects  6.0G  5.3G  402M  94% /mnt

...pero creo que así es más complicado :/

información relacionada