VM 인스턴스 실행 불가능 ESXi/ESX error: No free space left on device
# 조치 내용
- VMware firmware (OS)
UpdateUpdate:
보안 패치 및 안정성, 버그 수정 등 22년23년 1월 정기 패치 팩
# 원인
자원을 100% 할당하여 여분공간이 없음으로 인해 발생한 현상임. 통상 10%의 여유공간 (margin)을 추는 것을 권고하고 있음.
- Memry 512G 중 VMWare 자체와 bastion을 띄우면 488G의 메모리가 남음. 3등분 하여 162G씩 할당한 것으로 보임.
# 분석
VMWare는 기본 옵션으로 memory overcommit에 대비하여, 개별 VM 인스턴스 당 스왚파일을 생성 함.
- 이 스왚 파일은 해당 VM이 가진 메모리 총량과 동일한 크기임.
그러면 기존에는 왜 문제가 없었나?
스토리지 할당 방식이 Thin Provisioning 방식이었기 때문임.
Thin Provisioning 은 처음부터 고정 공간으로 디스크를 할당하는 것이 아닌, 사용한 만큼만 디스크를 자치하게 되어있음.
전체 스토리지 공간을 VM에 100% 할당하기는 했으나, 시스템 초기에는 공간이 남아있어 문제가 없었을 것이고, 시간이 지남에 따라
메모리 스왚 기능과 겹쳐 공간 부족을 야기 함.
VM이 실제 쓰는 사용량은 매우 적다. 공간이 부족한 것이 맞는가?
현대의 파일 시스템에서 파일을 지울 때 실제로는 지우는 것이 아니고, 인덱스에서만 제거하고 포인터만 옮겨갑니다.
시스템을 쓰면서 임시 파일이 생성되고 사라지는데, 실제로 지워지는 건 아니고 다만 빈 공간으로 포인터만 옮겨 간 것임.
때문에 Thin Provisioning 된 디스크는 시간이 지남에 따라 그 크기가 커지게 됩니다. 그리고 어느 시점에 이르러 디스크 부족 사태를 야기하게 됩니다.