LVM을 사용하여 여러 개의 작은 드라이브에서 하나의 큰 드라이브로 데이터 이동

LVM을 사용하여 여러 개의 작은 드라이브에서 하나의 큰 드라이브로 데이터 이동

LVM을 이렇게 구축한 공간을 활용해

NAME                         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                           11:0    1 1024M  0 rom
vda                          252:0    0   10G  0 disk
└─vda1                       252:1    0   10G  0 part /
vdb                          252:16   0   10G  0 disk
└─pro103-home--files (dm-2)  253:2    0   10G  0 lvm  /home/pro103by
vdc                          252:32   0   50G  0 disk
└─pro103by--sql-mysql (dm-1) 253:1    0   90G  0 lvm  /data
vdd                          252:48   0   30G  0 disk
└─dbbackup-data (dm-0)       253:0    0   30G  0 lvm  /dbbackup
vde                          252:64   0   30G  0 disk
└─pro103by--sql-mysql (dm-1) 253:1    0   90G  0 lvm  /data
vdf                          252:80   0   10G  0 disk
└─pro103by--sql-mysql (dm-1) 253:1    0   90G  0 lvm  /data
vdg                          252:96   0  150G  0 disk
└─vdg1                       252:97   0  150G  0 part

pro103by-sql 볼륨 그룹에 포함된 드라이브

lvs -o +devices /dev/pro103by-sql/mysql
  LV    VG           Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  mysql pro103by-sql -wi-ao---- 89.99g                                                     /dev/vdc(0)
  mysql pro103by-sql -wi-ao---- 89.99g                                                     /dev/vde(0)
  mysql pro103by-sql -wi-ao---- 89.99g                                                     /dev/vdf(0)

사용 공간

pvs -o+pv_used
  PV         VG           Fmt  Attr PSize   PFree   Used
  /dev/vdb   pro103       lvm2 a--u  10.00g   4.00m  9.99g
  /dev/vdc   pro103by-sql lvm2 a--u  50.00g      0  50.00g
  /dev/vdd   dbbackup     lvm2 a--u  30.00g      0  30.00g
  /dev/vde   pro103by-sql lvm2 a--u  30.00g      0  30.00g
  /dev/vdf   pro103by-sql lvm2 a--u  10.00g      0  10.00g
  /dev/vdg1  pro103by-sql lvm2 a--u 150.00g 150.00g     0

세 드라이브 모두에서 데이터를 이동해야 합니다. - /dev/vdc /dev/vde /dev/vdf pvmove를 사용하여 한 드라이브에서 다른 드라이브로 데이터를 이동하는 방법을 알고 있지만 이것이 어떻게 작동하는지 잘 모르겠습니다. 이 경우.

답변1

면책조항: 백업을 만드세요.

이는 처음 3개의 PV(50+30+10=80g)에 사용된 총 공간이 4번째 PV(150g)의 사용 가능한 공간보다 작기 때문에 가능합니다.

이것은 복잡한 작업이 아닙니다. (첫 번째 및) 두 번째 예입니다.pvmove귀하의 사례에 대한 매뉴얼 페이지는 다음과 같습니다

지정된 PV의 단순 LV에서 사용하는 모든 물리적 범위를 VG의 다른 곳에서 사용 가능한 물리적 범위로 이동합니다.

pvmove /dev/sdb1

물리적 범위를 이동할 때 특정 목표 PV를 사용하십시오.

pvmove /dev/sdb1 /dev/sdc1

귀하의 경우에 적합하므로 한 번에 하나씩 세 가지 명령을 사용하여 수행할 수 있습니다.

pvmove /dev/vdc /dev/vdg1
pvmove /dev/vde /dev/vdg1
pvmove /dev/vdf /dev/vdg1

이것매뉴얼 페이지에도 나와 있습니다.단일 LV에 대해 이 작업을 병렬로 수행하면 안 됩니다. 손상은 발생하지 않지만 어떤 작업도 완료되지 않으며 다시 실행해야 합니다.

서로 다른 소스 PV에서 데이터를 이동하는 경우 여러 pvmoves를 동시에 실행할 수 있습니다.그러나 추가 pvmoves는 이미 변경 중인 LV를 무시합니다.이므로 일부 데이터는 이동되지 않을 수 있습니다.

이 작업은 데이터베이스가 실행 중인 상태에서 온라인으로 수행할 수 있습니다(이는 pvmove임시 미러 맵 등을 사용하여 원활한 마이그레이션을 보장합니다. 자세한 내용은 참조).매뉴얼 페이지에 대한 참고 사항.). 그러나 서비스를 계속 실행하는 데 이것이 필요하지 않은 경우 백업을 수행하기 전에 백업을 수행하고 데이터베이스를 오프라인으로 전환하는 것이 좋습니다. 이렇게 하면 예상치 못한 문제가 발생할 경우 백업에서 롤백할 수 있습니다.

/dev/vdg1그런 다음 다음 명령 중 하나를 실행하여 모든 데이터가 실제로 PV에 있는지 확인할 수 있습니다.

pvdisplay --maps

또는 구체적으로:

pvdisplay --maps /dev/vdc
pvdisplay --maps /dev/vde
pvdisplay --maps /dev/vdf
pvdisplay --maps /dev/vdg1

그러면 /dev/vdg1(모두 ) /dev/pro103by-sql/mysql에 사용된 물리적 범위 만 표시됩니다.

직교 명령은 다음과 같습니다.

lvdisplay --maps /dev/pro103by-sql/mysql

이는 모든 논리적 범위가 /dev/vdg1.

관련 정보