September 13, 2023

macOSのUTMでスナップショットを取得する

M1/M2のApple Silicom MACで仮想マシンを作るときに使っているUTMにはスナップショット取得機能はないけれど、仮想化エンジンにQEMUを指定したなら qemu-img コマンドで取得できるよ、というお話し。

確認したバージョン

macOSUTMqemu-img
Ventura 13.5.24.3.58.1.0

手順

  1. 仮想マシンのディレクトリに移動
    • 途中までGUI
      1. UTMを起動
      2. 作成済みでスナップショットを取得したい仮想マシンを右クリック
      3. 「Finderに表示」をクリック
      4. Finderに表示された「仮想マシン名.utm」を右クリック
      5. 「パッケージの内容を表示」をクリック
      6. 「Data」フォルダを右クリック
      7. 「サービス」の「フォルダに新規ターミナル*」か「New iTerm2 * Here」をクリック
    • 最初からCUI
      1. ターミナルやiTerm2を起動
      2. ディレクトリに移動
         % cd ~/Library/Containers/com.utmapp.UTM/Data/Documents/仮想マシン名.utm/Data/
        
  2. 「*.qcow2」というファイルがあるはずなので qemu-img snapshot コマンドで色々操作する 詳細は qemu-img -hqemu-imgのWebページを確認してもらうとして、スナップショット関連のヘルプはこんな感じ↓
    Command syntax:
      snapshot [--object objectdef] [--image-opts] [-U] [-q] [-l | -a snapshot | -c    snapshot | -d snapshot] filename
    Command parameters:
      'filename' is a disk image filename
    Parameters to snapshot subcommand:
      'snapshot' is the name of the snapshot to create, apply or delete
      '-a' applies a snapshot (revert disk to saved state)
      '-c' creates a snapshot
      '-d' deletes a snapshot
      '-l' lists all snapshots in the given image
    
  3. qemu-img snapshot -l ファイル名 でスナップショットのリストを確認
    スナップショットが何もなければ何も表示されない
    % qemu-img snapshot -l 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    %
    
  4. qemu-img snapshot -c タグ名 ファイル名でスナップショットを作ってみる
    タグ名はそのまま書いてもいいし、スペースを空けたければ'‘や"“で囲む
    自動で振られるIDでユニークになるから同じタグ名を付けることもできるけど、-dや-aの時に指定できない(最初にヒットした若いIDが選ばれるっぽい)ので重複させない方がいい
    % qemu-img snapshot -c hogehoge 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    % qemu-img snapshot -c 'hoge hoge' 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    % qemu-img snapshot -c "fuga fuga" 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    % qemu-img snapshot -c 日本語も使える 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    
  5. 再度確認、スナップショットがあればこんな感じに表示される
    % qemu-img snapshot -l 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    Snapshot list:
    ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
    1         hogehoge              0 B 2023-09-13 08:32:50 00:00:00.000          0
    2         hoge hoge             0 B 2023-09-13 08:33:02 00:00:00.000          0
    3         fuga fuga             0 B 2023-09-13 08:33:13 00:00:00.000          0
    4         日本語も使える      0 B 2023-09-13 08:33:21 00:00:00.000          0
    
  6. スナップショットを削除したいときは -d
    % qemu-img snapshot -d 'hoge hoge' 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    % qemu-img snapshot -l 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    Snapshot list:
    ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
    1         hogehoge              0 B 2023-09-13 08:32:50 00:00:00.000          0
    3         fuga fuga             0 B 2023-09-13 08:33:13 00:00:00.000          0
    4         日本語も使える      0 B 2023-09-13 08:33:21 00:00:00.000          0
    
  7. スナップショットに戻したいときは -a
    今どのスナップショットを使っているか?は分からないので使用者が覚えておく必要がある
    % qemu-img snapshot -a 'fuga fuga' 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    % qemu-img snapshot -l 651FC2FA-0BAA-4559-B590-5607AD56D704.qcow2
    Snapshot list:
    ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
    1         hogehoge              0 B 2023-09-13 08:32:50 00:00:00.000          0
    3         fuga fuga             0 B 2023-09-13 08:33:13 00:00:00.000          0
    4         日本語も使える      0 B 2023-09-13 08:33:21 00:00:00.000          0
    

© 2020 nissy-lab.com