thin provisioning을 사용해 디스크를 생성하면 가상 머신에서 실제로 사용하는 만큼만 스토리지(datastore)에서 사용하는데, 이 디스크의 용량은 한번 늘어나게 되면, 실제 데이터를 지우더라도 스토리지에서의 크기가 줄어들진 않는다. osx의 vmware fusion 같은 경우는 clean up disk 같은 기능을 제공하는데, 이 과정을 reclaming disk 라고도 한다. (셧다운 상태에서 가능) 하지만 esx, esxi 에서는 이런 기능을 지원하지 않는다. 즉, 한 번 늘어난 디스크의 크기는 쉽게 반환 하지 않는다.
이 실제 디스크의 여유 공간을 확보하려면 두 가지의 방법이 있는데, 하나는 시스템을 셧다운 시키고 OVF 템플릿 내보내기/배포의 과정으로 export/import의 과정을 거치는 것이고, 나머지 하나는 블럭 사이즈가 다른 저장소로 가상 머신을 이동하는 것이다. 전자의 경우는 가상 머신의 셧다운과 많은 시간을 필요로 하고, 두번째 방법은 vMotion 기능을 포함한 vCenter 및 다양한 환경(별도의 VMFS 스토리지 혹은 SAN/iSCSI 네트워크 스토리지)을 필요로 한다.
로컬 datastore (block size 1MB) -> iSCSI iscsistore (block size 2MB) 로 이동 후 여유 공간 확보 (약 100G 가량). 이를 다시 iscsistore에서 datastore로 이동하면 원래대로 돌아올 수 있는데, VMFS3 (ESX4) 에서는 아래의 그림과 같이 작은 사이즈의 블럭으로는 이동이 안 된다 (VMFS5/ESX5 에서는 블럭 사이즈와 상관없이 가능)
그래서 해결한 방법은, 다른 블럭 사이즈의 VMFS3로 생성된 네트워크 스토리지로 vMotion(스토리지,호스트 마이그레이션) 후, 호스트와 datastore를 ESX5/VMFS5 로 재설치 (or 하드 추가). 그 뒤에 역순으로 vMotion(호스트,스토리지 마이그레이션)으로 해서 원래의 로컬 datastore로 이동. 그러니까, 하드웨어 조건만 맞으면 ESX4 에서 ESX5로 vMotion 이 된다는 이야기.
thin prov 디스크 공간 확보하려고 이런 작업들을 하기에는 굉장히 비효율적인 크기의 작업 같은데, 방법이 없는 것 같다. 구글링 해보면 sysinternals의 sdelete로 여유 공간을 채우고 옮기라는 의견도 있었는데, 실제로는 sdelete 작업을 안 해도 가능했음.