볼륨 관리: 한 파티션에서 다른 파티션으로 공간을 이동하는 방법은 무엇입니까?

볼륨 관리: 한 파티션에서 다른 파티션으로 공간을 이동하는 방법은 무엇입니까?

저는 Redhat EC2 인스턴스를 설정하고 있으며 기본적으로 제가 사용하고 있는 소프트웨어(그레다) 인스턴스에 연결된 2개의 500g ebs 스토리지 디바이스에 다음 볼륨이 생성되었습니다.

$ lvs
  LV        VG        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  storetmp  rootrhel  -wi-ao----   20.00g                                                    
  varlog    rootrhel  -wi-ao----  <20.00g                                                    
  store     storerhel -wi-ao---- <348.80g                                                    
  transient storerhel -wi-ao----  <87.20g 

$ df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/xvda2                       500G  1.4G  499G   1% /
devtmpfs                          16G     0   16G   0% /dev
tmpfs                             16G     0   16G   0% /dev/shm
tmpfs                             16G   17M   16G   1% /run
tmpfs                             16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/storerhel-store      349G   33M  349G   1% /store
/dev/mapper/storerhel-transient   88G   33M   88G   1% /transient
/dev/mapper/rootrhel-storetmp     20G   33M   20G   1% /storetmp
/dev/mapper/rootrhel-varlog       20G   35M   20G   1% /var/log
tmpfs                            3.2G     0  3.2G   0% /run/user/1000

100그램이 필요해요 storetmp. 80g 저장 공간을 에서 store으로 이동하는 방법은 무엇입니까 storetmp?

또한 xvdb3에서 xvdb2로 일부 공간을 전송해야 하는 것 같습니다.

# lsblk
NAME                    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda                    202:0    0   500G  0 disk 
├─xvda1                 202:1    0     1M  0 part 
└─xvda2                 202:2    0   500G  0 part /
xvdb                    202:16   0   500G  0 disk 
├─xvdb1                 202:17   0    24G  0 part [SWAP]
├─xvdb2                 202:18   0    40G  0 part 
│ ├─rootrhel-varlog     253:2    0    20G  0 lvm  /var/log
│ └─rootrhel-storetmp   253:3    0    20G  0 lvm  /storetmp
└─xvdb3                 202:19   0   436G  0 part 
  ├─storerhel-store     253:0    0 348.8G  0 lvm  /store
  └─storerhel-transient 253:1    0  87.2G  0 lvm  /transient

이 디렉터리는 현재 상자에서 실행되는 소프트웨어에 의해 사용되고 있으며 비어 있지 않으므로 삭제할 수 없으며 즉시 이 작업을 수행해야 합니다.

$ ls -l /dev/mapper/storerhel-transient
lrwxrwxrwx 1 root root 7 Aug 10 16:00 /dev/mapper/storerhel-transient -> ../dm-3
$ ls -l /dev/mapper/rootrhel-varlog 
lrwxrwxrwx 1 root root 7 Aug 10 16:00 /dev/mapper/rootrhel-varlog -> ../dm-0
$ ls -l /dev/mapper/storerhel-store 
lrwxrwxrwx 1 root root 7 Aug 17 04:10 /dev/mapper/storerhel-store -> ../dm-2

답변1

EC2 EBS의 추가 80GB 비용은 월 12달러 미만입니다. 온라인으로 작업하면 작업 시간이 1시간 이상 소요될 수 있으며 문제가 발생할 경우 다운타임이 발생할 위험이 있습니다. 이것이 귀하에게 얼마나 가치가 있습니까?

추가 용량에 대한 비용을 지불하고 인스턴스에 세 번째 디스크로 추가하고 xvdcLVM PV로 초기화합니다(파티션 테이블을 배치할 필요도 없습니다. 이것으로 pvcreate /dev/xvdc충분합니다). 그런 다음 새 PV를 rootrhelVG( vgextend rootrhel /dev/xvdc)에 추가하면 이제 /storetmp추가된 용량을 사용하여 VG를 확장할 수 있습니다.

lvextend -L +80G /dev/mapper/rootrhel-storetmp
xfs_growfs /storetmp  #or the appropriate tool for your filesystem type 

즉각적인 문제가 해결되면 이제 적절한 시간에 가동 중지 시간을 예약할 수 있습니다.

/storeXFS 파일 시스템(RHEL/CentOS 7은 기본적으로 이를 수행함)을 사용하는 경우 다음 계획된 중단 동안 현재 컨텐츠의 타르볼을 생성하고 /transient전체 storerhelVG를 마운트 해제 및 삭제한 다음 해당 PV를 VG xvdb3에 추가한 다음 rootrhelLV /store/transient파일 시스템을 다시 만들고 tarball의 내용을 복원하려면 보다 현실적인 용량 요구 사항 추정을 사용하십시오. 다운타임이 끝났습니다.

이제 VG 에는 , , 및 rootrhel의 세 가지 PV가 있으며 필요한 공간이 충분합니다.xvdb2xvdb3xvdc

지불을 중단하려면 VG의 할당되지 않은 공간에서 VG 내부 및/또는 VG로 및/또는 VG 의 데이터 자동 마이그레이션을 xvdc사용할 수 있습니다 . 이 작업은 온라인으로 수행할 수 있습니다. 성능에 미치는 영향을 피하기 위해 최대 I/O 작업 부하 중에는 수행하지 마세요. 그런 다음 장치 가 사라질 것이라고 커널에 알리고 Amazon에 더 이상 디스크가 필요하지 않다고 알립니다 .pvmove /dev/xvdcxvdcxvdb2xvdb3vgreduce rootrhel /dev/xvdcecho 1 > /sys/block/xvdc/device/deletexvdcxvdc

저는 거의 20년 동안 LVM 디스크 저장소를 사용한 경험이 있습니다(처음에는 HP-UX LVM을 사용하고 나중에는 엔터프라이즈 환경에서 사용할 수 있을 만큼 충분히 성숙된 Linux LVM을 사용). LVM에서 사용하는 경험적 규칙은 다음과 같습니다.

  • 하나의 VG로 충분할 때 두 개의 VG를 생성해서는 안 됩니다.

특히 하나의 디스크에 두 개의 VG가 있으면 골치 아픈 일이 될 수 있습니다. VG 내에서 디스크 용량을 재할당하는 유연성은 파일 시스템 유형이 허용하는 정도에 따라 달라집니다. 기존 PV보다 작은 블록으로 VG 간에 용량을 이동하는 것은 일반적으로 문제가 되지 않습니다.

  • 디스크 공간 요구 사항이 확실하지 않은 경우(항상 존재하는 경우) LV를 작게 유지하고 할당되지 않은 공간을 남겨 두십시오.

VG에 할당되지 않은 여유 용량이 있는 한 필요에 따라 하나 또는 두 개의 빠른 명령을 사용하여 LV 및 파일 시스템을 온라인으로 확장할 수 있습니다. 훈련된 원숭이 주니어 시스템 관리자 에게 이것은 단지 바나나 작업에 불과합니다.

VG에 할당되지 않은 용량이 없으면 새 디스크를 가져와 새 PV로 초기화하고 용량이 필요한 VG에 추가한 후 평소처럼 확장합니다. 파일 시스템을 축소하면 오류가 발생하기 쉽고 가동 중지 시간이 필요할 수 있으며 파일 시스템 유형에 따라 파일 시스템을 더 작은 크기로 백업하고 다시 생성하지 않으면 불가능할 수도 있습니다. 따라서 온라인에서 파일 시스템을 최대한 축소해야 하는 상황을 피하고 싶을 것입니다.

  • 디스크 공간을 세세하게 관리하는 것은 위험하고 작업량이 많을 수 있습니다. 작업 비용이 많이 듭니다.

좋아요 기술적으로는 당신할 수 있다PV 에 80GB 파일을 생성하고 /store이를 losetup루프 장치에 넣은 다음 PV에 추가할 수 있는 VG의 PV에 넣습니다 rootrhel. 하지만 그렇게 하면 시스템이 단일 사용자 복구로 들어갈 가능성이 높습니다. 이러한 파일 시스템 및 VG에 대해 사용자 정의 시작 스크립트를 설정하지 않는 한 부팅 모드에서그리고 처음부터 제대로 해보세요.

문제가 발생하면 다음에 어떤 이유로든 시스템을 재부팅할 때 계획되지 않은 가동 중지 시간을 들여 문제를 해결하고 복구해야 합니다. 또는 보다 현실적으로 파일 시스템을 처음부터 다시 만들고 백업에서 내용을 복원해야 합니다. 왜냐하면 시도하는 것보다 쉽기 때문입니다. 이 즉흥적인 혼란을 해결하기 위해

ext4또는 온라인으로 축소할 수 있는 파일 시스템을 사용하는 경우 /store파일 시스템 축소(Shrink LV)를 사용하여 pvmove --alloc anywhere여유 공간을 PV의 꼬리에 병합하고 xvdb3, Shrink PV, Shrink 파티션을 실행하여 partprobe변경 사항을 적용하지 않고도 적용할 수 있습니다. 재부팅한 다음 새 파티션을 생성하고 xvdb4이를 새 PV로 초기화한 다음 rootrhelVG에 추가합니다.

그러나 이 순서에서 실수를 하여 파일 시스템/PV가 LV/파티션 컨테이너를 초과하고 파일 시스템이 파일 시스템 검사를 실행해야만 재설정할 수 있다는 오류 플래그와 함께 읽기 전용 모드로 전환하는 경우, 이로 인해 계획되지 않은 강제 가동 중지 시간이 발생합니다.

관련 정보