내 시스템에는 3개의 드라이브가 있습니다. 이들은 모두 VG 내의 PV입니다.
이 VG에는 일부 LV가 있습니다. 그 중 하나는 두 개의 드라이브/PV에 걸쳐 있는 상당히 큰 규모입니다. 세 번째 드라이브는 LV 전체를 담을 수 있을 만큼 충분히 큽니다. 이것이 제가 원하는 것입니다.
이것이 제가 말하는 것입니다. 여기에 내 PV가 있습니다(예, pvcreate
파티션이 아닌 전체 드라이브에서 실행 중입니다).
/dev/sda -> 10TB drive
/dev/sdb -> 4TB drive
/dev/sdc -> 3TB drive
3개의 PV와 여러 개의 LV가 모두 포함된 VG가 있습니다. 나는 오직 한 가지에만 관심이 있습니다:
MyData -> 5TB LV
에 따르면 LV가 켜져 있습니다 lsblk -f
.MyData
둘 다 /dev/sdb
그리고 /dev/sdc
. 기본적으로 이 시스템은 하나의 드라이브로 시작해서 더 추가했습니다. 저도 작은 LV로 시작해서 더 크게 사용 lvextend
/ lvresize
만들었습니다.
내가 하고 싶은 건 움직이는 거야전반적인도착했습니다 MyData
./dev/sda
문서를 살펴보면 pvmove
다음과 같이 할 수 있다는 것을 알았습니다.
pvmove -n MyData /dev/sdb /dev/sda
pvmove -n MyData /dev/sdc /dev/sda
이게 내가 원하는 대로 되어야 하는 거죠, 그렇죠?
하나의 명령으로 이를 수행할 수 있는 방법이 있습니까? tmux
두 명령을 동시에 실행할 수 있나요 ?
이렇게 하면 모든 범위가 (조각화되지 않고) 연속적으로 만들어지나요 /dev/sda
?
답변1
가장 간단한 경우에는 그렇습니다. 그렇게 작동합니다.
그러나 LV를 대량으로 생성, 삭제 및 크기 조정하면 범위 조각화가 발생할 수 있습니다. 이런 경우 좀 더 자세히 살펴보는 것이 좋을 것 같습니다.
# check where there is free space
pvs
# check in detail if free space is contiguous
pvdisplay --maps /dev/sda
# show LV segments that require moving, in order
lvs -o seg_le_ranges VG/LV
이 시점에서는 무엇을 어디로 옮겨야 할지에 대한 명확한 아이디어가 있어야 합니다.
단계별 예:
# pvdisplay --maps /dev/sdx1
--- Physical volume ---
PV Name /dev/sdx1
VG Name HDD
[...]
Physical extent 10650 to 11174:
FREE
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdz1:11128-11143
MyData HDD /dev/sdz2:7450-7457
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz1:11128-11143 /dev/sdx1:10650-11174
/dev/sdz1: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10665
MyData HDD /dev/sdz2:7450-7457
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz2:7450-7457 /dev/sdx1:10666-11174
/dev/sdz2: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10673
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz3:0-11 /dev/sdx1:10674-11174
/dev/sdz3: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10685
두 인스턴스를 병렬로 실행하려고 하면 pvmove
실패합니다.
Skipping locked LV VG/MyData.
All data on source PV skipped. It contains locked, hidden or non-top level LVs only.
No data to move for VG.
그러므로 순서대로 이루어져야 합니다. 그렇지 않으면 제대로 작동할 것입니다.
완전히 다른 접근 방식은 lvcreate
새 LV를 생성하고 데이터를 복사한 다음 - 복사본이 양호하고 모든 것이 작동한다고 확신하면 lvremove
이전 LV를 복사하는 것입니다.
기본적으로 구식 오프라인 방식입니다. 단점(오류를 복사하거나 데이터가 손실될 수 있음)이 있지만 장점도 있습니다. 소스 파일 시스템은 변경되지 않고 유지되므로 되돌릴 수 있지만 pvmove
되돌릴 수는 없습니다(모든 것을 원래 위치로 되돌릴 필요가 없음).