저는 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시간 이상 소요될 수 있으며 문제가 발생할 경우 다운타임이 발생할 위험이 있습니다. 이것이 귀하에게 얼마나 가치가 있습니까?
추가 용량에 대한 비용을 지불하고 인스턴스에 세 번째 디스크로 추가하고 xvdc
LVM PV로 초기화합니다(파티션 테이블을 배치할 필요도 없습니다. 이것으로 pvcreate /dev/xvdc
충분합니다). 그런 다음 새 PV를 rootrhel
VG( vgextend rootrhel /dev/xvdc
)에 추가하면 이제 /storetmp
추가된 용량을 사용하여 VG를 확장할 수 있습니다.
lvextend -L +80G /dev/mapper/rootrhel-storetmp
xfs_growfs /storetmp #or the appropriate tool for your filesystem type
즉각적인 문제가 해결되면 이제 적절한 시간에 가동 중지 시간을 예약할 수 있습니다.
/store
XFS 파일 시스템(RHEL/CentOS 7은 기본적으로 이를 수행함)을 사용하는 경우 다음 계획된 중단 동안 현재 컨텐츠의 타르볼을 생성하고 /transient
전체 storerhel
VG를 마운트 해제 및 삭제한 다음 해당 PV를 VG xvdb3
에 추가한 다음 rootrhel
LV /store
및 /transient
파일 시스템을 다시 만들고 tarball의 내용을 복원하려면 보다 현실적인 용량 요구 사항 추정을 사용하십시오. 다운타임이 끝났습니다.
이제 VG 에는 , , 및 rootrhel
의 세 가지 PV가 있으며 필요한 공간이 충분합니다.xvdb2
xvdb3
xvdc
지불을 중단하려면 VG의 할당되지 않은 공간에서 VG 내부 및/또는 VG로 및/또는 VG 의 데이터 자동 마이그레이션을 xvdc
사용할 수 있습니다 . 이 작업은 온라인으로 수행할 수 있습니다. 성능에 미치는 영향을 피하기 위해 최대 I/O 작업 부하 중에는 수행하지 마세요. 그런 다음 장치 가 사라질 것이라고 커널에 알리고 Amazon에 더 이상 디스크가 필요하지 않다고 알립니다 .pvmove /dev/xvdc
xvdc
xvdb2
xvdb3
vgreduce rootrhel /dev/xvdc
echo 1 > /sys/block/xvdc/device/delete
xvdc
xvdc
저는 거의 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로 초기화한 다음 rootrhel
VG에 추가합니다.
그러나 이 순서에서 실수를 하여 파일 시스템/PV가 LV/파티션 컨테이너를 초과하고 파일 시스템이 파일 시스템 검사를 실행해야만 재설정할 수 있다는 오류 플래그와 함께 읽기 전용 모드로 전환하는 경우, 이로 인해 계획되지 않은 강제 가동 중지 시간이 발생합니다.