디스크 공간이 더 이상 필요하지 않기 때문에 가상 머신에 추가한 디스크를 삭제하려고 합니다. 그러나 VM의 VG는 그곳에서 사용 가능한 거의 모든 데이터를 사용하는 것으로 보입니다.
그러나 zoneminder--vg의 크기를 1.5TB에서 6G로 조정했지만 resiz2fs
lvdisplay에서는 그렇지 않다고 말합니다.
이것은 일부 명령의 출력입니다.
root@zoneminder:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root zoneminder-vg -wi-ao---- 1.52t
swap_1 zoneminder-vg -wi-ao---- 976.00m
root@zoneminder:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 zoneminder-vg lvm2 a-- 900.00g 0
/dev/sda5 zoneminder-vg lvm2 a-- 699.52g 46.57g
root@zoneminder:~# vgs
VG #PV #LV #SN Attr VSize VFree
zoneminder-vg 2 2 0 wz--n- 1.56t 46.57g
DF-H
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 8.9M 1.6G 1% /run
/dev/mapper/zoneminder--vg-root 5.6G 4.9G 431M 92% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda1 472M 108M 340M 25% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/1000
광전지 디스플레이
--- Physical volume ---
PV Name /dev/sda5
VG Name zoneminder-vg
PV Size 699.52 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 179077
Free PE 11922
Allocated PE 167155
PV UUID SVGqoc-SQ42-tDzp-Qc7H-n90f-1g9n-x0eLWe
--- Physical volume ---
PV Name /dev/sda3
VG Name zoneminder-vg
PV Size 900.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 230400
Free PE 0
Allocated PE 230400
PV UUID Cdanv0-2pLJ-Yp2n-3zsl-JvjH-72QS-Ciwhaj
LV 디스플레이
--- Logical volume ---
LV Path /dev/zoneminder-vg/root
LV Name root
VG Name zoneminder-vg
LV UUID poThtY-v96W-e2Ai-nan7-ckqn-aeBm-T0Kqji
LV Write Access read/write
LV Creation host, time zoneminder, 2018-08-01 22:22:13 +0200
LV Status available
# open 1
LV Size 1.52 TiB
Current LE 397311
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/zoneminder-vg/swap_1
LV Name swap_1
VG Name zoneminder-vg
LV UUID SXQ36r-5Kum-Z3Wa-m9DE-CBVb-h9Wx-kmctKT
LV Write Access read/write
LV Creation host, time zoneminder, 2018-08-01 22:22:13 +0200
LV Status available
# open 2
LV Size 976.00 MiB
Current LE 244
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
그래픽 디스플레이
--- Volume group ---
VG Name zoneminder-vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.56 TiB
PE Size 4.00 MiB
Total PE 409477
Alloc PE / Size 397555 / 1.52 TiB
Free PE / Size 11922 / 46.57 GiB
VG UUID lTo8U0-dIL9-Yye3-RVYk-rJu6-w6WQ-zIpL8f
LVM의 데이터에 영향을 주지 않고 /dev/sda3을 삭제하려면 어떻게 해야 합니까? 그런 다음 VGroup을 다시 100G로 다시 빌드하거나 다른 방법으로 다시 빌드하시겠습니까?
fdisk -l
Disk /dev/sda: 1.6 TiB, 1717986918400 bytes, 3355443200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x21880f4a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 1468004351 1467002882 699.5G 5 Extended
/dev/sda3 1468004352 3355443199 1887438848 900G 8e Linux LVM
/dev/sda5 1001472 1468004351 1467002880 699.5G 8e Linux LVM
Partition table entries are not in disk order.
Disk /dev/mapper/zoneminder--vg-root: 1.5 TiB, 1666443116544 bytes, 3254771712 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/zoneminder--vg-swap_1: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@zoneminder:~#
업데이트 #1:
@telcoM: 친절하고 상세한 답변에 감사드립니다.
언급하신 모든 사항이 완료되었습니다. 또한 데이터가 물론 디스크 전체에 분산되어 있으므로 데이터를 물리적으로 이동해야 한다는 사실도 발견했습니다.
root@zoneminder:~# pvresize --setphysicalvolume 101G -v /dev/sda5
Using physical volume(s) on command line.
Archiving volume group "zoneminder-vg" metadata (seqno 9).
/dev/sda5: Pretending size is 211812352 not 1467002880 sectors.
Resizing volume "/dev/sda5" to 211812352 sectors.
Resizing physical volume /dev/sda5 from 0 to 25855 extents.
/dev/sda5: cannot resize to 25855 extents as later ones are allocated.
0 physical volume(s) resized / 1 physical volume(s) not resized
root@zoneminder:~# pvs -v --segments /dev/sda5
Using physical volume(s) on command line.
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 zoneminder-vg lvm2 a-- 699.52g 598.57g 0 25600 root 0 linear /dev/sda5:0-25599
/dev/sda5 zoneminder-vg lvm2 a-- 699.52g 598.57g 25600 141311 0 free
/dev/sda5 zoneminder-vg lvm2 a-- 699.52g 598.57g 166911 244 swap_1 0 linear /dev/sda5:166911-167154
/dev/sda5 zoneminder-vg lvm2 a-- 699.52g 598.57g 167155 11922 0 free
root@zoneminder:~# sudo pvmove --alloc anywhere /dev/sda5:166911-167154 /dev/sda5:25601-25845
/dev/sda5: Moved: 0.4%
/dev/sda5: Moved: 100.0%
root@zoneminder:~# pvresize --setphysicalvolume 101G -v /dev/sda5
Using physical volume(s) on command line.
Archiving volume group "zoneminder-vg" metadata (seqno 12).
/dev/sda5: Pretending size is 211812352 not 1467002880 sectors.
Resizing volume "/dev/sda5" to 211812352 sectors.
Resizing physical volume /dev/sda5 from 0 to 25855 extents.
Updating physical volume "/dev/sda5"
Creating volume group backup "/etc/lvm/backup/zoneminder-vg" (seqno 13).
Physical volume "/dev/sda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
root@zoneminder:~# pvs -v --segments /dev/sda5
Using physical volume(s) on command line.
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 zoneminder-vg lvm2 a-- 101.00g 44.00m 0 25600 root 0 linear /dev/sda5:0-25599
/dev/sda5 zoneminder-vg lvm2 a-- 101.00g 44.00m 25600 1 0 free
/dev/sda5 zoneminder-vg lvm2 a-- 101.00g 44.00m 25601 244 swap_1 0 linear /dev/sda5:25601-25844
/dev/sda5 zoneminder-vg lvm2 a-- 101.00g 44.00m 25845 10 0 free
실제로 내가 달성하고 싶은 것은 다음과 같습니다(게시물 #18). https://communities.vmware.com/message/2723540#2723540
/dev/sda3
지금은 아직 삭제하지 않은 곳에 갇혔는데 , 아직도 fdisk -l
크기가 /dev/sda5
700G인 것을 확인하고 있습니다.
root@zoneminder:~# fdisk -l
Disk /dev/sda: 1.6 TiB, 1717986918400 bytes, 3355443200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x21880f4a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 1468004351 1467002882 699.5G 5 Extended
/dev/sda3 1468004352 3355443199 1887438848 900G 8e Linux LVM
/dev/sda5 1001472 1468004351 1467002880 699.5G 8e Linux LVM
Partition table entries are not in disk order.
Disk /dev/mapper/zoneminder--vg-root: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/zoneminder--vg-swap_1: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
업데이트 #2:
LIVE-CD 관리를 통해 GPARTED 및 PARTED를 사용하여 디스크를 제거하고 LV(M) /dev/sda2
에서도 크기를 조정했습니다./dev/sda5
ESXi에서 스냅샷을 찍었으므로 모든 단계를 다시 실행해야 합니다. vmdk의 중첩이 약간 짜증나기 때문입니다.
원본 가상머신(1.6TB)을 복사하는데 시간이 좀 걸립니다. 그 후에는 다른 사람들이 나중에 사용할 수 있도록 모든 단계를 완전히 덤프하겠습니다.
답변1
좋습니다. 성공적으로 축소했습니다.파일 시스템루트 LV 내에서.
다음 단계는 파일 시스템의 새로운 크기에 맞게 LV를 축소하는 것입니다. 실수로 너무 많이 자르면 더 심각한 문제가 발생할 수 있으므로 안전을 위해 약간의 여유를 두는 것이 좋습니다.
파일 시스템 축소 작업은 항상 확장보다 위험하며, 특히 익숙하지 않은 경우 더욱 그렇습니다. 따라서 문제가 발생할 경우를 대비해 필요할 수 있는 모든 것을 백업하세요.
그런 다음 다음 tune2fs -l
을 사용하여 파일 시스템에서 정확한 블록 수를 가져옵니다.
tune2fs -l /dev/mapper/zoneminder--vg-root | grep "Block "
Block count: NNNNNNNNN
Block size: XXXX
이 두 숫자를 곱하여 파일 시스템의 정확한 크기를 얻은 다음 1024로 나누어 이진수 킬로바이트를 얻고, 1024로 나누어 이진수 메가바이트를 얻습니다. 반올림 오류를 방지하려면 하나를 추가하세요.
expr NNNNNNNNN \* XXXX / 1024 / 1024 + 1
SSSSSS
이제 LV를 축소합니다.
lvreduce -L SSSSSS /dev/mapper/zoneminder--vg-root
이제 Zoneminder VG에 충분한 여유 공간이 있어야 합니다. 이제 완전히 사용되지 않았는지 pvs
확인하려면 다음을 사용하세요 ./dev/sda3
pvs
출력 에서 PFree 값이 PSize 와 같지 않으면 /dev/sda3
루트 LV의 일부 부분이 해당 PV에 여전히 존재하므로 해당 부분을 다른 곳으로 이동해야 합니다. pvmove
이것은 쉽게 할 수 있습니다. 지금 완전히 무료 라면 /dev/sda3
이 단계를 건너뛸 수 있습니다.
pvmove /dev/sda3
이는 본질적으로 " sda3
모든 LV 데이터를 동일한 VG에 속한 다른 PV로 이동하여 비어 있음"을 의미합니다.
pvmove
새 위치로 이동하려는 데이터를 미러링한 다음 이전 위치에서 "미러를 제거"하는 방식으로 작동합니다. 따라서 pvmove
시스템 충돌로 인해 가동 중단이 발생하더라도 그 결과는 치명적이지 않습니다. 원래 pvmove
있던 곳에서 계속하려면 논쟁 없이 실행하세요.
이제 sda3
PV는 완전히 비어 있어야 합니다. VG에서 제거하십시오.
vgreduce zoneminder-vg /dev/sda3
이때는 /dev/sda3
독립적이고 완전 무료인 LVM PV가 됩니다. 원하는 경우 PVID를 지울 수 있습니다.
pvremove /dev/sda3
이제 /dev/sda3
원하는 방식으로 파티션을 자유롭게 재사용할 수 있습니다. ( 파티션을 덮어쓰게 되는 작업을 수행하려는 경우에는 이 pvremove
명령이 꼭 필요한 것은 아닙니다 .)
이제 루트 LV를 100GiB로 확장하려면 다음 단계를 따르세요.
lvextend -L 100G /dev/mapper/zoneminder--vg-root
resize2fs /dev/mapper/zoneminder--vg-root
이제 끝났습니다.
여기서는 "파일 시스템 마운트 해제" 또는 "시스템 다시 시작"이라고 말하지 않았습니다.필요 없음.
답변2
LVM 시스템은 사용자가 논리 볼륨을 사용하는 방법을 모릅니다. LV에 사용되는 파일 시스템을 줄여도 LV의 크기는 변경되지 않으며 VG 및 PV의 여유 공간도 변경되지 않습니다(LV에 할당된 모든 공간은 사용 중인 것으로 간주됩니다).
파일 시스템을 줄인 경우 이 명령을 사용하여 LV를 줄일 수 있지만 lvreduce
파일 시스템에 맞게 줄이지 않도록 각별히 주의해야 합니다. 그렇지 않으면 일부 데이터가 손실될 수 있습니다.
논리 볼륨을 줄인 후 이 pvmove
명령을 사용하여 한 PV에서 다른 PV로 사용된 공간을 이동한 다음 이 vgreduce
명령을 사용하여 VG에서 PV를 삭제할 수 있습니다.