먼저, 파일 시스템이 성공적으로 백업되고 마운트 해제되었습니다.
그런 다음 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로 변경했습니다(실제로 크기 조정을 수행하는 명령인 경우). 다음으로, 명령이 수행하는 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에는 진행률 표시줄 옵션이 없습니다. 그러나 추가 단계에서 크기 조정을 수행하면 다음을 확인할 수 있습니다.
- fs의 초기 크기를 확인하십시오.
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects 19G 5.3G 13G 30% /mnt
- 마운트 해제:
# umount /mnt
- 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
- 진행률(-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.
- LV의 초기 크기를 확인하십시오.
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 19.00g
- 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
- 크기를 확인하십시오:
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 6.00g
- 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
...하지만 이 방법이 더 복잡한 것 같아요 :/