Docs · 참조

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 편집은 호스트와 게스트가 머신 정의에 대해 불일치하는 유일한 방법입니다.