2.6 TRIM/UNMAP Space Reclamation

저장 공간을 보다 효율적으로 사용하기 위해 최신 게스트 OS 파일 시스템에는 각 ATA 및 SCSI 프로토콜에 대한 TRIM/UNMAP 명령을 사용하여 더 이상 사용되지 않는 공간을 회수하는 기능이 있습니다. vSAN은 게스트 OS에서 전송된 TRIM/UNMAP 명령을 완전히 인식하고 이전에 할당된 스토리지를 여유 공간으로 회수할 수 있습니다. 이는 vSAN 환경에서 훨씬 더 나은 스토리지 용량 활용도를 제공할 수 있는 기회주의적 공간 효율성 기능입니다.

UNMAP UNMAP

이 프로세스는 저장 공간을 확보하는 이점을 제공하지만 다음과 같은 다른 부차적인 이점도 있습니다.

  • 더 빠른 복구 - 회수된 블록은 장치 오류가 발생한 경우 재조정하거나 다시 미러링할 필요가 없습니다.
  • 더티 캐시 페이지 제거 - 읽기 캐시는 DRAM 클라이언트 캐시뿐만 아니라 다른 블록에서 사용할 수 있도록 하이브리드 vSAN SSD 캐시에서도 확보할 수 있습니다. 쓰기 버퍼에서 제거되면 용량 계층에 복사될 블록 수가 줄어듭니다.

성능에 미치는 영향

더 이상 필요하지 않은 페이지를 추적하려면 I/O를 처리해야 하므로 이 프로세스는 성능에 영향을 미칩니다. 가장 큰 영향은 용량 계층에 대해 직접 UNMAP이 발행된다는 것입니다. 삭제 성능이 높은 환경에서는 모니터링해야 합니다.

vSAN 7 U1에서는 UNMAP 성능이 추가로 향상되었습니다. 이는 쓰기가 많은 환경에서 UNMAP의 공정성을 제공하는 데 도움이 됩니다.

VMware 관련 지침

vSAN 8에서는 아래와 같이 서비스 활성화 아래 사용자 인터페이스에서 TRIM/UNMAP을 활성화할 수 있습니다.

Enable TRIM/UNMAP in UI Enable TRIM/UNMAP in UI

TRIM/UNMAP은 PowerCLI 또는 RVC를 사용하여 활성화할 수 있습니다. PowerCLI를 통한 활성화는 아래와 같습니다.

Status query:

Get-Cluster -name R63*|get-VsanClusterConfiguration |ft GuestTrimUnmap

GuestTrimUnmap

--------------

         False

Enable:

Get-Cluster -name R63*|set-VsanClusterConfiguration **-GuestTrimUnmap:$true**

Cluster              VsanEnabled  IsStretchedCluster   Last HCL Updated

-------              -----------  ------------------   ----------------

R630-Cluster-70GA    True         True                 25/04/2020 16:03:00

Deactivate

Get-Cluster -name R63*|set-VsanClusterConfiguration -GuestTrimUnmap:$false

Cluster              VsanEnabled  IsStretchedCluster   Last HCL Updated

-------              -----------  ------------------   ----------------

R630-Cluster-70GA    True         True                 25/04/2020 16:03:00

RVC 콘솔을 사용하여 vSAN 클러스터별로 TRIM/UNMAP을 활성화할 수도 있습니다. 아래 예에서는 RVC를 사용하여 활성화하는 방법을 보여줍니다.

RVC 명령: vsan.unmap_support -e - vSAN 클러스터에서 매핑 해제 지원을 활성화합니다. -d - vSAN 클러스터에서 매핑 해제 지원을 비활성화합니다.

이 명령을 실행하기 전에 vSAN 클러스터가 정상인지, 모든 호스트가 vCenter에 연결되어 있는지 확인하십시오.

예: RVC를 사용하여 unmap_support 활성화

vSAN에 대해 TRIM/UNMAP을 활성화하려면 먼저 vCenter 서버에 SSH로 연결하고 RVC 콘솔에 연결해야 합니다.

login as: administrator@vsphere.local

Command> rvc administrator@vsphere.local@localhost

다음으로 compute을 찾아 클러스터 이름을 식별합니다.

Welcome to RVC. Try the 'help' command.
0 /
1 localhost/
> ls
0 /
1 localhost/
> cd 1
/localhost> ls
0 vSAN-DC (datacenter)
/localhost> cd 0
/localhost/vSAN-DC> ls
0 storage/
1 computers [host]/
2 networks [network]/
3 datastores [datastore]/
4 vms [vm]/
/localhost/vSAN-DC> cd 1
/localhost/vSAN-DC/computers> ls
0 **vSAN-Cluster** (cluster): cpu 37 GHz, memory 108 GB
/localhost/vSAN-DC/computers>

다음으로 unmap 지원을 활성화합니다.

/localhost/vSAN-DC/computers> vsan.unmap_support vSAN-Cluster -e
2022-03-10 16:37:37 +0000: Enabling unmap support on cluster
 vSAN-Cluster: success

VMs need to be power cycled to apply the unmap setting
/localhost/vSAN-DC/computers>

VM 수준 요구사항

일단 활성화되면 더 이상 사용되지 않는 용량을 성공적으로 회수하려면 TRIM/UNMAP에 대해 충족해야 하는 몇 가지 전제 조건이 있습니다.

  • Windows용 최소 가상 머신 하드웨어 버전 11
  • Linux용 최소 가상 머신 하드웨어 버전 13.
  • disk.scsiUnmapAllowed 플래그가 false로 설정되지 않았습니다. 기본값은 true로 간주됩니다. 이 설정은 VM별로 이 동작을 비활성화하고 게스트 구성에서 이 동작을 비활성화하는 데 사용하지 않으려는 경우 가상 머신 수준에서 “중지 스위치"로 사용할 수 있습니다. VMX 변경 사항을 적용하려면 재부팅이 필요합니다.
  • 게스트 운영 체제는 가상 디스크를 씬 디스크로 식별할 수 있어야 합니다.
  • 클러스터 수준에서 활성화한 후에는 VM의 전원을 껐다가 다시 켜야 합니다. (재부팅으로는 부족함)

Linux 관련 지침

씬 프로비저닝을 회수하는 두 가지 주요 방법이 있습니다.

  • fstrim은 마운트된 파일 시스템에서 파일 시스템에서 사용하지 않는 블록을 삭제(또는 “트림”)하는 데 사용됩니다. 이는 씬 프로비저닝된 스토리지에 유용합니다. 배포판에 따라 이는 /etc/cron.weekly와 같은 크론 작업에 포함될 수도 있고 포함되지 않을 수도 있습니다. 게스트 내 재확보를 수동으로 수행하려면 다음을 수행하십시오.
/sbin/fstrim --all || true
  • blkdiscard는 장치 섹터를 삭제하는 데 사용됩니다. Strip(8)과 달리 이 명령은 블록 장치에서 직접 사용됩니다. blkdisacrd는 fstrim보다 성능 오버헤드가 더 많은 것으로 알려져 있습니다. 결과적으로 blkdiscard보다 fstrim을 사용하는 것이 좋습니다.

기타 우려사항:

  • 암호화된 파일 시스템을 사용하는 경우 /etc/crypttab에 삭제를 추가해야 할 수도 있습니다.
  • LVM 볼륨을 축소하거나 삭제하는 경우 /etc/lvm/lvm.conf에 issue_discards 구성이 필요할 수 있습니다.
  • fstrim 실행을 자동화하기 위한 다양한 옵션이 존재합니다. 이는 주간 크론 작업부터 fstrim.timer까지 다양합니다.
  • 다음 파일 시스템은 TRIM과 함께 작동하는 것으로 보고되었습니다: btrfs, ecryptfs, ext3, ext4, f2fs, gfs2, jfs, nilfs2, ocfs2, xfs

Microsoft 특정 지침

자동화된 공간 회수

Windows Server 2012 이상에서는 자동화된 공간 회수를 지원합니다. 이 동작은 기본적으로 활성화되어 있습니다. 이 동작을 확인하려면 다음 PowerShell을 사용할 수 있습니다.

Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification

자동 공간 회수를 활성화하려면 이 값을 다음과 같이 설정하세요.

Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" -Name DisableDeleteNotification  -Value 0

비동기식 공간 회수

비동기식으로 공간을 회수하는 방법에는 두 가지가 있습니다.

예 1: TRIM 최적화 수행

파워셸

PS C:\>Optimize-Volume -DriveLetter H -ReTrim -Verbose

이 예에서는 Trim 요청을 다시 보내 H 드라이브를 최적화합니다. TRIM 명령이 백엔드에 깔끔하게 전달되는지 테스트하기 위해 -WhatIf 플래그를 추가할 수 있습니다.

fcaf79bd-b2fa-4048-b43e-cd9e88335af6 fcaf79bd-b2fa-4048-b43e-cd9e88335af6

예 2: TRIM 최적화 수행

defrag /L을 사용하여 Optimize-Storage -ReTrim 명령과 동일한 작업을 수행할 수도 있습니다.

Defrag C: D: /L

이 예에서는 볼륨 C: 및 D: 모두에서 공간을 회수합니다.

기타 우려사항:

  • Optimize-Storage 또는 Defrag /L을 사용할 때 Windows는 사용되지 않은 모든 블록에 TRIM 명령 전송을 보고합니다. 얼마나 많은 공간이 재확보될지 결정하기 위해 이 보고에 의존해서는 안 됩니다.
  • 자동 삭제 알림을 주로 사용하는 것이 좋습니다.

TRIM/UNMAP 모니터링

TRIM/UNMAP에는 vSAN 성능 서비스에 다음과 같은 카운터가 있습니다.

  • UNMAP 처리량. 호스트의 디스크 그룹에서 처리되는 UNMAP 명령의 측정
  • 복구 UNMAP 처리량. UNMAP 명령의 처리량 측정은 오류 또는 개체 부재 후 개체 복구의 일부로 동기화됩니다.

ab6ab3b2-1848-40de-b240-a90afd9fb083 ab6ab3b2-1848-40de-b240-a90afd9fb083

VADP 백업 고려 사항

스냅샷은 일반적으로 백업 공급업체에서 특정 시점의 VM 데이터 백업에 대한 알려진 상태를 제공하는 데 사용됩니다. 백업 프로세스에 스냅샷이 더 이상 필요하지 않으면 해당 변경 사항이 기본 디스크와 병합됩니다. 스냅샷 및 Storage vMotion과 같은 기타 작업은 VMware의 미러 드라이버를 사용하여 진행 중인 변경 블록이 둘 이상의 위치에 미러링되도록 합니다. 미러 드라이버가 사용되는 이러한 상황에서는 TRIM/UNMAP 명령이 기본 디스크로 전달되지 않아 전체 교정이 발생하지 않습니다. 이러한 조건을 수용하는 한 가지 방법은 사전 동결 스크립트를 사용하는 것입니다.

Windows의 경우:

C:\Windows\pre-freeze-script.bat

기타 모든 운영 체제의 경우:

/usr/sbin/pre-freeze-script

스냅샷 전에 fstrim 또는 DiskOptimize를 실행하면 이전 백업 기간 동안 발생한 삭제된 파일이 모두 정리됩니다.

vSAN 파일 서비스로 매핑 해제

vSAN 파일 서비스(vSAN 7 U2 이상)는 UNMAP을 지원하며 NFS 또는 SMB 공유에서 파일이 삭제되면 자동으로 스토리지를 회수합니다. 이 프로세스가 수행되려면 클러스터에서 TRIM/UNMAP을 활성화해야 합니다. 상황에 따라 회수된 스토리지가 vCenter Server 내에서 올바르게 보고되는 데 몇 분 정도 걸릴 수 있습니다.