이미 실행 중인 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

여기서는 resize2fslvresize로 변경했습니다(실제로 크기 조정을 수행하는 명령인 경우). 다음으로, 명령이 수행하는 syscall이 무엇인지 모니터링하기 위해 실행하면 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

에 대한 매뉴얼 페이지를 확인하면 해당 서명이 호출의 마지막 매개변수인 오프셋 또는 현재 읽고 있는 블록의 지점임을 pread64알 수 있습니다 . 바이트를 TB로 ssize_t pread(int fd, void *buf, size_t count, off_t offset)변환하면 2441880231936대략 2.2TB가 되며 아래 표시된 볼륨은 3.44TB, 2.2/3.34 = ~65%입니다. 그러나 이는 현재 위치에 대한 대략적인 설명일 뿐입니다. 이 경우 여유 공간을 기준으로 (resize2f -M으로 인해) 파티션 크기를 가능한 한 최소로 조정하기 때문입니다. 또한 ext4(내 경우에는)가 연속 블록에 데이터를 쓰는지 확실하지 않으므로 전체 디스크보다 작업량이 적을 수 있습니다.

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

답변2

lvresize에는 진행률 표시줄 옵션이 없습니다. 그러나 추가 단계에서 크기 조정을 수행하면 다음을 확인할 수 있습니다.

  1. fs의 초기 크기를 확인하십시오.
# 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. 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. 진행률(-p) 옵션을 사용하여 fs 크기를 조정합니다.
# 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. resizefs 옵션 없이 LV 크기를 조정합니다(이전 단계에서 수행했습니다).
# 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

...하지만 이 방법이 더 복잡한 것 같아요 :/

관련 정보