Как проверить ход выполнения уже запущенной команды lvresize?

Как проверить ход выполнения уже запущенной команды lvresize?

Сначала была успешно создана резервная копия файловой системы и проведено ее размонтирование.

Затем был выполнен lvresize, который уже работает:

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

И показывает вывод:

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.

Вывод файловых систем был прежним:

[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

А таблицы физических объемов содержат следующее:

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

После завершения изменения размера один из этих томов будет удален, чтобы повторно использовать виртуальный жесткий диск.

Как я могу увидеть ход выполнения этого lvresize? Он работает уже час, и не так уж много информации было выдано.

Спасибо ребята :)

решение1

Это может быть превышением, поскольку я не знаю внутреннего устройства, но чтобы иметь представление, вы можете попробовать следующее:

Получите pid запущенного процесса:

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

Здесь это было, resize2fsно измените на lvresize (если это команда, которая действительно делает изменение размера). Затем запустите strace -e pread64,pwrite64 -p 2377для мониторинга того, какие системные вызовы выполняет команда, чтобы вы могли увидеть, откуда она считывает и куда пишет.

Вывод будет примерно таким:

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

и если вы проверите страницу man для pread64, вы увидите, что его сигнатура ssize_t pread(int fd, void *buf, size_t count, off_t offset)такова, последний параметр вызова - это смещение или с какой точки блока он считывает прямо сейчас. Если вы преобразуете 2441880231936байты в ТБ, это будет примерно 2,2 ТБ, а мой том, как показано ниже, имеет 3,44 ТБ, 2,2/3,34 = ~65%. Но это всего лишь приблизительная оценка того, где он сейчас, потому что в этом случае он изменит размер раздела до минимально возможного (из-за resize2f -M) на основе свободного места. Кроме того, я не уверен, будет ли ext4 (в моем случае) записывать данные в смежные блоки, поэтому это может быть меньше работы, чем полный диск.

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

решение2

У lvresize нет опции прогресс-бара. Но если вы делаете изменение размера в несколько шагов, вы можете это проверить:

  1. Проверьте начальный размер файловой системы:
# df -h /mnt
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects   19G  5.3G   13G  30% /mnt
  1. размонтировать:
# umount /mnt
  1. проверьте фс:
# 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. изменить размер файловой системы с помощью параметра progress (-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. проверьте начальный размер LV:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 19.00g
  1. изменить размер LV без опции resizefs (мы это делали на предыдущем шаге):
# 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. проверьте размер:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 6.00g
  1. смонтируйте и проверьте размер 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

... но я думаю, что этот способ сложнее :/

Связанный контент