VM 번들
머신은 폴더입니다. 내부, 안전하게 복사할 수 있는 것, 커밋할 것.
1VMTool 머신은 데이터베이스 행이나 불투명 blob이 아니라 .vm 확장자 디렉터리로 검사, 복사, 이동할 수 있습니다.
dev.vm/
config.json the definition — commit it
disk.asif primary disk, sparse
snapshots/
index.json
a1c2/disk.asif
머신은 기본적으로 홈 디렉터리의 라이브러리 폴더에 있습니다. ONEVM_HOME을 다른 곳 — 외장 SSD 등 — 으로 지정하면 라이브러리 전체가 함께 이동합니다.
config.json
머신 정의: 게스트 유형, 엔진, CPU, 메모리, 디스크, 네트워크, 공유 폴더, 입력, 그래픽 설정. 평문 JSON이며 서비스하는 프로젝트와 함께 버전 관리하려면 커밋할 파일입니다.
1vm config dev # print it
1vm get dev # list every dotted key
정의가 디스크와 분리되어 있으므로 동료와 머신 형태 공유 비용은 수 KB입니다. 상대는 그에 대해 1vm create를 실행하고 자체 게스트를 설치합니다.
디스크
sparse이므로 미리 할당하지 않고 게스트가 쓸 때마다 커집니다 —
9 GiB를 쓴 머신의 256 GiB 디스크는 약 9 GiB를 차지합니다. 파일 이름은 엔진마다 다르며 두 엔진은 다른 디스크 형식을 사용합니다.
1vm du는 라이브러리 전체의 정직한 수치를 보고합니다.
스냅샷
snapshots/는 트리를 보관합니다. 각 스냅샷은 APFS 클론으로, 한쪽이 분기할 때까지 라이브 디스크와 블록을 공유하므로 새 스냅샷은 거의 추가하지 않고 du는 allocated, on disk, reclaimable을 구분합니다.
머신 복사
폴더이므로 복사는 작동 — 하지만 같은 클론 원시 연산을 사용하고 바이트를 복제하지 않고 즉시 끝나는 1vm clone을 선호:
1vm clone dev test # linked, shares blocks
1vm clone dev test --full # independent copy
1vm archive dev # compress a stopped machine; run again to restore
실행 중 머신 파일 편집 금지
설정 변경은 1vm set을 통해 검증되고 엔진이 지원하면 라이브 적용됩니다. 실행 중 머신의 config.json 편집은 호스트와 게스트가 머신 정의에 대해 불일치하는 유일한 방법입니다.