Wie kann ich den Fortschritt eines bereits ausgeführten lvresize-Befehls überprüfen?

Wie kann ich den Fortschritt eines bereits ausgeführten lvresize-Befehls überprüfen?

Zuerst wurde das Dateisystem erfolgreich gesichert und ausgehängt.

Anschließend wurde ein lvresize ausgeführt und läuft bereits:

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

Und zeigt die Ausgabe:

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.

Die Ausgabe des Dateisystems war die vorherige:

[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

Und Tabellen mit physischen Datenträgern, in denen Folgendes angegeben ist:

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

Nach Abschluss der Größenänderung wird eines dieser Volumes entfernt, um die virtuelle Festplatte wiederzuverwenden.

Wie kann ich den Fortschritt dieser lvresize sehen? Sie läuft seit einer Stunde und es wurden nicht viele Informationen ausgegeben.

Danke Leute :)

Antwort1

Dies geht möglicherweise zu weit, da ich die internen Vorgänge nicht kenne. Um jedoch eine Vorstellung zu bekommen, können Sie Folgendes versuchen:

Holen Sie sich die PID des laufenden Prozesses:

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

Hier war es so, resize2fsaber ändern Sie es in lvresize (wenn es der Befehl ist, der die Größenänderung tatsächlich vornimmt). Führen Sie als Nächstes aus, strace -e pread64,pwrite64 -p 2377um zu überwachen, welche Systemaufrufe der Befehl ausführt, damit Sie sehen, von wo er liest und wohin er schreibt.

Die Ausgabe sähe etwa so aus:

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

und wenn Sie die Manpage für prüfen pread64, sehen Sie, dass die Signatur ssize_t pread(int fd, void *buf, size_t count, off_t offset)so lautet, der letzte Parameter des Aufrufs ist der Offset oder der Punkt des Blocks, von dem gerade gelesen wird. Wenn Sie 2441880231936Bytes in TB umrechnen, wären das etwa 2,2 TB und mein Volume hat, wie unten gezeigt, 3,44 TB, 2,2/3,34 = ~65 %. Aber das ist nur eine ungefähre Schätzung des aktuellen Stands, denn in diesem Fall wird die Partitionsgröße (aufgrund von resize2f -M) basierend auf dem freien Speicherplatz auf das kleinstmögliche Maß angepasst. Außerdem bin ich nicht sicher, ob ext4 (in meinem Fall) Daten in zusammenhängende Blöcke schreiben würde, es könnte also weniger Arbeit sein als die gesamte Festplatte.

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

Antwort2

Die Option „lvresize“ hat keine Fortschrittsbalkenoption. Wenn Sie die Größenänderung jedoch in mehreren Schritten durchführen, können Sie Folgendes überprüfen:

  1. Überprüfen Sie die anfängliche Größe des Dateisystems:
# df -h /mnt
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects   19G  5.3G   13G  30% /mnt
  1. Menge:
# umount /mnt
  1. Überprüfen Sie das 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. Größe des Dateisystems mit der Option „Fortschritt“ (-p) ändern:
# 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. Überprüfen Sie die Anfangsgröße des LV:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 19.00g
  1. Ändern Sie die Größe des LV ohne die Option „resizefs“ (das haben wir im vorherigen Schritt getan):
# 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. Überprüfen Sie die Größe:
# lvs vg00/vol_projects
  LV           VG   Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  vol_projects vg00 -wi-a--- 6.00g
  1. mounten und die FS-Größe prüfen:
# 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

... aber ich denke, dieser Weg ist komplizierter :/

verwandte Informationen