Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

PowerCLI로 VMware VMFS 데이터스토어 여유 공간 확인 및 Thin Provisioning 오버커밋 감지하기

이 글에서는 VMware vSphere 데이터스토어의 여유 공간을 확인하고, 가상 머신의 씬(Thin) 가상 디스크 총 크기가 데이터스토어 전체 용량을 초과하는 Thin Provisioning 데이터스토어를 자동으로 감지할 수 있는 간단한 PowerCLI 스크립트를 소개합니다. 인프라에 여러 개의 VMware 데이터스토어가 운영 중이라면 이 PowerShell 스크립트를 활용해 여유 공간 사용량을 손쉽게 모니터링하고, 스토리지 오버커밋(모든 VM의 씬 디스크에 필요한 공간이 VMFS 데이터스토어의 가용 공간보다 큰 상태)이 발생한 데이터스토어를 찾아낼 수 있습니다.

또한 새로운 VM을 생성하기 전에 사용 공간 증가 추세를 분석하거나, Thin Provision 오버커밋이 있는 데이터스토어를 사전에 파악하는 등 다양한 용도로 활용할 수 있습니다.

VMFS 데이터스토어 권장 여유 공간

vSphere 인프라가 안정적으로 동작하려면 VMware VMFS 데이터스토어에 최소 5~10%의 여유 공간을 확보하는 것이 좋습니다. 스냅샷(백업 시스템이 생성하는 스냅샷 포함)을 사용하는 환경이라면 최소 10~15%의 여유 공간이 필요합니다.

PowerCLI 스크립트로 데이터스토어 여유 공간 확인

아래 PowerShell 스크립트를 사용하면 VMware 데이터스토어의 여유 공간을 확인하고 결과를 표시할 수 있습니다. (컴퓨터에 VMware vSphere PowerCLI 모듈이 이미 설치되어 있다고 가정합니다.)

# PowerShell 세션에 PowerCLI 모듈 가져오기
Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
# vCenter 호스트에 연결
Connect-VIServer mun-vcsa1 -User admin
# vCenter 데이터스토어 목록 조회
$datastores = Get-Datastore
$ErrorActionPreference = 'SilentlyContinue'
# 모든 데이터스토어를 순회
ForEach ($datastore in $datastores)
{
# 데이터스토어 내 모든 씬 디스크의 커밋된 공간 크기 계산
# (모든 vmdk 파일이 설정된 최대 크기까지 커질 경우 필요한 공간)
$Provision = ([Math]::Round(($datastore.ExtensionData.Summary.Capacity - $datastore.ExtensionData.Summary.FreeSpace + $datastore.ExtensionData.Summary.Uncommitted)/1GB,0))
# 데이터스토어 여유 공간 비율
$PerFree = ([math]::Round(($datastore.FreeSpaceGB)/($datastore.CapacityGB)*100,2))
# 씬 디스크 오버커밋 비율
$PerOvercommit = ([math]::Round($Provision/($datastore.CapacityGB)*100,2))
# 데이터스토어 객체에 추가 속성 부여
$datastore | Add-Member -type NoteProperty -name PercentsFree -value $PerFree
$datastore | Add-Member -type NoteProperty -name CapacityGb_r -value ([Math]::Round(($datastore.ExtensionData.Summary.Capacity)/1GB,0))
$datastore | Add-Member -type NoteProperty -name FreeSpaceGb_r -value ([Math]::Round(($datastore.ExtensionData.Summary.FreeSpace)/1GB,0))
$datastore | Add-Member -type NoteProperty -name ProvisionedSpaceGb -value $Provision
$datastore | Add-Member -type NoteProperty -name PercentsOvercommit -value $PerOvercommit
}
# 결과 데이터를 화면에 출력하고 CSV 파일로 내보내기
$datastores|select-object Name, Type, Datacenter,CapacityGb_r,FreeSpaceGb_r,PercentsFree,ProvisionedSpaceGb,PercentsOvercommit|sort PercentsFree| Export-Csv C:\Reports\VMWareVMFSDatastores.csv -NoTypeInformation

Connect-VIServer 연결 오류 해결 방법

Connect-VIServer로 vCenter에 접속하려고 할 때 아래와 같은 오류가 발생한다면:

Could not resolve the requested VC server.Additional Information: There was no endpoint listening at https://mun-vcsa1/sdk that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details

PowerCLI가 프록시를 통해 VCSA에 접속을 시도하고 있을 가능성이 높습니다. PowerCLIConfiguration 명령을 실행하여 UseSystemProxy 값이 True로 반환되는지 확인하세요. 만약 그렇다면, 아래 명령으로 PowerCLI에서 시스템 프록시를 비활성화하면 됩니다:

Set-PowerCliConfiguration -proxypolicy noproxy

결과 해석하기

실행 결과에서 앞쪽 5개의 VMFS 데이터스토어는 여유 공간이 5% 미만으로 남아 있는 것을 확인할 수 있습니다. 일부 데이터스토어에는 스토리지 오버커밋(데이터스토어 내 모든 씬 가상 디스크의 총 크기가 데이터스토어 실제 용량을 초과하는 상태)이 발생해 있습니다.

만약 가상 머신의 디스크가 설정된 최대 크기까지 계속 커진다면, VMFS/NFS/VVOL 스토리지의 공간이 부족해질 수 있습니다. (씬(Thick) 디스크를 사용하는 실행 중인 VM은 정상 동작하지만, VSWAP 파일을 생성할 공간이 없어 새로운 VM을 시작할 수는 없습니다.) 커밋된 공간이 LUN 전체 크기보다 큰 데이터스토어는 노란색으로 강조되어 표시됩니다.

이 PowerShell 스크립트를 활용하면 여유 공간이 부족한 VMware 데이터스토어를 신속하게 찾아낼 수 있으며, Storage vMotion을 통해 해당 데이터스토어에서 VM을 마이그레이션하는 등의 조치를 취할 수 있습니다.