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로 변경됩니다(실제로 크기 조정을 수행하는 명령인 경우). 다음으로 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. 파일 시스템을 확인하십시오.
# 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) 옵션을 사용하여 파일 시스템 크기를 조정합니다.
# 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

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

관련 정보