
저는 lvmgroup을 줄여 Centos 6.10 이미지의 크기를 줄이는 과정을 진행해왔습니다. 이제 다음 명령을 실행할 수 있게 되었습니다.
pvresize -tv --setphysicalvolumesize 1600G /dev/md125p2
그리고 나에게 다음과 같은 오류 메시지가 나타납니다.
/dev/md125p2: cannot resize to 409599 extents as later ones are allocated.
오류를 제거하기 위해 pvmove 명령을 구성하는 방법을 이해하려고 노력하고 있지만 개념을 잘 이해하지 못합니다.
이 명령의 출력은 다음과 같습니다. pvs -v --segments /dev/md125p
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 0 384000 lv_mysql 0 linear /dev/md125p2:0-383999
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000 81947 0 free
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947 12800 lv_root 0 linear /dev/md125p2:465947-478746
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747 1998 lv_swap 0 linear /dev/md125p2:478747-480744
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745 7500 lv_home 0 linear /dev/md125p2:480745-488244
이동 명령은 다음과 같아야 한다는 것을 알고 있습니다.
pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end
yyyy-end 부분을 계산하는 방법이 명확하지 않습니다. 384000에서 시작하는 81947(블록?)을 이동한다는 의미인 것 같은데 "yyyy"와 "끝"은 무엇입니까?
답변1
그래서 제가 볼 수 있는 것은 모든 것이 켜져 /dev/md125p2
있고 이 PV의 크기를 줄이고 싶다는 것입니다.
의 출력에서는 와 의 뒤에 매우 큰 여유 공간( ) pvs -v --segments /dev/md125p
이 있음을 보여줍니다 . 이 집은 충분히 크고 ,SSize==81947
lv_mysql
lv_root
lv_root
모두물리적 레이아웃에서 그 뒤에 오는 LV의.
따라서 제가 제안하고 싶은 첫 번째 숫자 세트는 다음과 같습니다.
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
즉, 전체를 lv_home
바로 다음부터 시작하는 여유 공간으로 이동합니다 lv_mysql
.
그런 다음 다시 실행하여 pvs -v --segments /dev/md125p
수정된 숫자를 확인하고 다음 블록을 남은 여유 공간으로 이동하세요.
이렇게 하면 PV 조각 모음이 효과적으로 수행됩니다.
지금은 pvmove
아마도방법내가 사용하는 것보다 더 많은 옵션이 있지만(범위 대신 PV를 지정할 수도 있습니다.) 블록을 명시적으로 지정하는 것이 편해졌습니다. 따라서 모든 소스와 대상은 /dev/<dev>:<Start>-<End>
또는 /dev/<dev>:<Start>+<SSize-1>
.
귀하의 문제는 주로 "소스" 사양의 범위가 누락된 것 같습니다.
나는 그들이 사용하는 몇 가지 예를 보았습니다 -end
. 그것이 무엇인지는 모르겠습니다.추정된하지만 "끝"이라는 질문이 생길 것입니다.무엇+
?". 그래서 나는 그것을 피하고 명시적인 블록 번호를 사용합니다. 구문이 다음과 같다는 점만 주의하면 됩니다....을 더한, SSize보다 하나 작아야 합니다.
추가의
-name lv_home /dev/md125p2
좋아, 소스 측면에서는 간단히 말해서 할 수 있는 것처럼 보이지만 여러 범위로 조각화 /dev/md125p2:480745-488244
되면 더 복잡해질 것이라는 점에 유의하세요 lh_home
("모든 조각?"을 의미할까요?). 저는 여전히 선호한다고 생각합니다. 숫자가 다가옵니다. 질문의 예에 유의하십시오.하지 않았다pvmove
LV 이름을 포함하므로 귀하가 제공한 내용으로 무엇을 이해했을지 잘 모르겠습니다 .
답변2
PV를 줄이려면 원하는 크기 이전에 여유 공간으로 익스텐트를 이동해야 합니다. 귀하의 경우 범위는 409599 미만입니다.
먼저 백업 복원을 테스트하여 필요한 경우 데이터를 복구할 수 있는지 확인하세요.
lvremove
필요하지 않은 볼륨.
pvmove
LV 이름으로 범위를 지정하고 + 표기법을 사용하여 오프셋으로 대상을 지정할 수 있습니다. 대상을 제공할 때 VG가 아닌 PV여야 합니다.
하나의 LV를 여유 공간의 첫 번째 확장 영역으로 이동합니다. 오프셋은 이동되는 세그먼트의 크기입니다.
pvmove --alloc anywhere -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998
다시 새로운 세그먼트 레이아웃을 가져옵니다 pvs -v --segments
. pvmove
다른 LV와 새로운 여유 공간 시작 범위를 사용하여 이를 반복합니다 .
개인적으로 저는 운영체제 VG와 별개로 데이터 VG를 선호합니다. 하지만 이것은 당신의 창고이므로 원하는 대로 배치하세요.