동적으로 할당된 이미지를 사용할 때 어떤 FS가 VirtualBox에 사용되지 않은 블록을 회수할 수 있습니까?

동적으로 할당된 이미지를 사용할 때 어떤 FS가 VirtualBox에 사용되지 않은 블록을 회수할 수 있습니까?

저는 VirtualBox에서 동적으로 할당된 이미지를 사용하는 것을 좋아합니다.

이는 이미지를 배포하려는 경우 선호되는 방법입니다(Vagrant 기억하시나요?).

동적으로 할당된 이미지를 사용할 때 어떤 Linux FS가 VirtualBox에 사용되지 않은 블록을 회수할 수 있습니까?

다음을 실행하는 사용자가 보입니다.

sudo dd if=/dev/zero of=/EMPTY bs=1M || : ; rm -f /EMPTY

VDI 이미지를 축소합니다.

우리 모두는 SSD 드라이브에 대한 TRIM ATA 명령( discard옵션 )도 알고 있습니다 mount.

답변1

공식 문서에는 다음과 같이 명시되어 있습니다.https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach

VBoxManage storageattach <UUID> --nonrotational:

이 스위치를 사용하면 가상 하드 디스크의 회전 방지 플래그를 활성화할 수 있습니다. 일부 클라이언트(예: Windows 7+)는 이러한 디스크를 SSD로 취급하고 해당 미디어에 대해 디스크 조각 모음을 수행하지 않습니다.

VBoxManage storageattach <UUID> --discard:

이 스위치를 사용하면 가상 하드 디스크를 자동으로 삭제할 수 있습니다. 이는 게스트 운영 체제의 정리 명령에 대한 응답으로 VDI 이미지가 축소되도록 지정합니다. 다음 요구 사항을 충족해야 합니다.

디스크 형식은 VDI여야 합니다.

삭제된 영역의 크기는 최소 1MB 이상이어야 합니다.

VirtualBox는 전체 1MB 블록만 잘라냅니다. VDI 자체는 1MB 블록으로 구성되므로 TRIM 공간이 1MB 경계에서 최소 1MB의 연속 블록인 경우에만 작동합니다. Windows에서는 가끔 조각 모음("defrag.exe /D" 사용)을 수행하거나 Linux에서 백그라운드 cron 작업으로 "btrfs 파일 시스템 조각 모음"을 실행하는 것이 도움이 될 수 있습니다.

참고: 정리 명령을 실행하도록 게스트 운영 체제를 구성해야 합니다. 이는 일반적으로 게스트 운영 체제가 디스크를 SSD로 "처리"한다는 의미입니다. Ext4는 -o drop 마운트 플래그를 지원합니다. OSX에서는 추가 설정이 필요할 수 있습니다. Windows는 적어도 버전 7, 8, 10에서 SSD를 자동으로 감지하고 지원해야 합니다. Linux exFAT 드라이버(Samsung에서 제공)는 Trim 명령을 지원합니다.

파일 시스템이 원래 플래시 메모리용으로 설계되었지만 Microsoft의 exFAT 구현이 이 기능을 지원하는지 여부는 확실하지 않습니다.

또한 util-linux 패키지의 일부인 Linux fstrim 명령과 같이 Trim을 실행하는 특별한 방법이 있습니다. 초기 솔루션에서는 사용자가 사용하지 않는 영역을 비우고(예: Zerofree 사용) 디스크를 명시적으로 압축해야 했습니다. 이는 VM이 ​​오프라인일 때만 가능했습니다.

따라서 스토리지는 다음과 같이 정의됩니다.

<AttachedDevice discard="true" nonrotational="true" type="HardDisk">

FS와 동일Ext4/Btrfs/JFS/XFS/F2FS/VFAT설치가 -o discard작동해야 합니다...

고쳐 쓰다VirtualBox의 TRIM 지원은 여전히 ​​불안정합니다.https://www.virtualbox.org/ticket/16795

당신은 또한 볼 수 있습니다https://superuser.com/questions/646559/virtualbox-and-ssds-trim-command-support

관련 정보