동일한 볼륨 그룹에 2개의 씬 풀(vg/pool1) 및 (vg/pool2)이 있고 첫 번째 풀에 LV가 있는 경우 LV를 두 번째 풀로 이동하는 LVM 명령이 있습니까? pvmove가 이것을 할 것인가?
또는 서로 다른 두 PV에 분산된 씬 LVM 풀이 있는 경우 pvmove 명령을 사용하여 LV X의 모든 범위를 PV Y에서 Z로 이동하도록 쉽게 지정할 수 있습니까?
답변1
나는 성공하지 못한 채 이 작업을 수행하기 위해 pvmove를 사용해 보았습니다. pvmove 명령으로 이 작업을 수행할 수 있는 소스 코드 수정에 대한 참조가 Google에 있지만 내 CentOS 7 시스템에서는 씬 풀에 대해 불평하므로 이 수정이 어떤 버전인지 알 수 없습니다. 그렇다면) 그것이 작동하는지 모르겠습니다.
즉, LV를 한 풀에서 다른 풀로 이동하는 것은 그리 어렵지 않습니다. 실제로 다른 VG에 있는 두 풀 사이에 풀을 옮겼습니다(어쨌든 상관없습니다). 이것이 내가 한 일입니다:
LV my_logic_volume, VG first_vg 및 second_vg(귀하의 경우에도 동일함)를 호출하고 my_logic_volume2를 대상으로 합니다. 내 인스턴스에서 LV의 이름을 변경했습니다. 서로 다른 씬 풀에 있더라도 동일한 VG에서 동일한 이름을 가진 두 개의 lv를 생성할 수 있는지 잘 모르겠습니다. 시도해 볼 수 있습니다. 어쨌든, 이동한 후에는 언제든지 lvrename을 사용할 수 있습니다. 쉽습니다.
순서는 다음과 같습니다.
# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
my_logical_volume first_vg Vwi-a-tz-- 10.74g thinpool0 31.39
thinpool1 second_vg twi-a-tz-- 1.20t 0.29
thinpool0 first_vg twi-a-tz-- 500.89g 86.87
위 논리 볼륨의 LSize를 확인하세요. 이 명령은 다음과 같습니다.
# lvcreate -V 10.74g -n my_logical_volume2 -T second_vg/thinpool1
...일치할 적절한 수의 LE를 생성합니다. lvs가 보여주는 것과 정확히 동일한 치수를 사용하십시오. lvdisplay를 사용하여 동일한 크기의 논리 볼륨을 생성했는지 확인하십시오. 이 Current LE
줄을 확인하십시오(결과 LE 개수가 더 적으면 lv를 삭제한 다음 다시 생성하되 크기에 0.01을 추가하십시오[-V 뒤의 숫자]). :
# lvdisplay first_vg/my_logical_volume
--- Logical volume ---
LV Path /dev/first_vg/my_logical_volume
LV Name my_logical_volume
VG Name first_vg
LV Pool name thinpool0
LV Size 10.74 GiB
Mapped size 31.39%
Current LE 2750
# lvdisplay second_vg/my_logical_volume2
--- Logical volume ---
LV Path /dev/second_vg/my_logical_volume2
LV Name my_logical_volume2
VG Name second_vg
LV Pool name thinpool1
LV Size 10.74 GiB
Mapped size 0.00%
Current LE 2750
이제 첫 번째 lv에서 새로 생성된 lv로 복사하세요.
# time dd if=/dev/first_vg/my_logical_volume of=/dev/second_vg/my_logical_volume2 bs=4194304 conv=sparse
conv=sparse
dd의 경우 매우 중요합니다. 그렇지 않으면 모든 공간이 대상 씬 풀에 프로비저닝되어 더 이상 씬이 아닙니다. :-).
새 논리 볼륨이 원하는 대로 되어 있는지 확인하십시오. 일단 모든 것을 확인하신 후 Kommissar 씨, 원하신다면 새 LV의 이름을 바꾸거나 원본 LV를 삭제하실 수 있습니다(작업하기 전에 백업하셨죠?).