Multipass on macOS 徹底活用 (2) – インスタンス管理とファイル共有の極意

Multipassインスタンスを自在に操るための第一歩

前回の記事でMultipassをmacOSに導入し、最初のUbuntuインスタンスを起動を行いました!軽量なLinux開発環境を手に入れたことで、あなたの開発の可能性は大きく広がったはずです。

しかし、いざ開発を始めようとすると、インスタンスの起動や停止、macOSとのファイル共有でつまずいていませんか?

せっかく軽量なLinux環境を手に入れたのに、基本的な操作で手間取ると、モチベーションも下がってしまいますよね。
また、複数の開発環境を使うとリソースが足りなくてVMが重くなったり、逆にリソースを使いすぎてMacが遅くなったり…そんな悩みも出てくるかもしれません。

この記事では、そんなMultipassインスタンスのと、macOSとのファイル共有方法を解説します。
読み終えると、Multipassインスタンスをローカル環境のように使って、開発プロジェクトのファイルをストレスなく共有できるようになります。
さらに、インスタンスのリソースを最適化して、あなたのmacOS開発環境は、より快適でパワフルなものにできます!


対象読者

  • 前回の記事でMultipassをインストールしたものの、その後の使い方に迷っている方。
  • Multipassインスタンスの起動・停止・削除といった基本操作を効率的に行いたい方。
  • macOSとMultipassインスタンス間で、開発プロジェクトのファイルをスムーズに共有したい方。
  • Multipassインスタンスのリソース設定を最適化し、パフォーマンスを向上させたい方。

動作検証環境

この記事で紹介するcurlコマンドの動作は、以下の環境で検証しています。

  • OS : macOS Tahoe Version 26.0
  • ハードウェア : MacBook Air 2024 M3 24GB
  • Multipass : Multipass version 1.16.1

目次

  1. Multipassインスタンスの基本操作をマスターする
  2. ホストOSとインスタンス間のファイル共有
  3. インスタンスのリソース設定を変更する
  4. FAQ:よくある質問
  5. まとめ:より実践的な開発環境へ

1. Multipassインスタンスの基本操作をマスターする

Multipassインスタンスを管理するためには、そのライフサイクルを制御するコマンドを理解することが必要です。
ここでは、インスタンスの起動、停止、一時停止、そして削除といった基本的な操作を解説します。

インスタンスの起動・停止・再起動 (multipass start, stop, restart)

インスタンスの起動、停止、再起動は、開発ワークフローで最も頻繁に利用するコマンドです。

インスタンスの起動(multipass start

  • 停止中のインスタンスを起動します。
multipass start <instance_name>

例: multipass start my-ubuntu-vm

コマンド実行例(インスタンス状態の確認):

user-name@your-mac ~ % multipass list
Name                    State             IPv4             Image
my-ubuntu-vm            Running           192.168.2.2      Ubuntu 24.04 LTS

インスタンスの停止(multipass stop

  • 実行中のインスタンスを安全にシャットダウンします。
multipass stop <instance_name>

例: multipass stop my-ubuntu-vm

コマンド実行例(インスタンス状態の確認):

user-name@your-mac ~ % multipass list
Name                    State             IPv4             Image
my-ubuntu-vm            Stopped           --               Ubuntu 24.04 LTS

インスタンスの再起動(multipass restart

  • 実行中のインスタンスを停止し、再度起動します。
multipass restart <instance_name>

例: multipass restart my-ubuntu-vm

コマンド実行例(停止状態のインスタンスは再起動できません):

restart failed: Instance 'my-ubuntu-vm' is already running, but in an unknown state.
Try to stop and start it instead.
[著者の経験談]: 開発中にVMのリソース解放や、VM状態のリフレッシュ時にこれらのコマンドが役立ちます。特に、設定変更を適用する時には再起動が必要になることも多いので、覚えておきましょう!

インスタンスの一時停止と再開 (multipass suspend)

インスタンスを完全に停止せずに、現在の状態を保存して一時的に停止したい場合に便利なのが suspendresume コマンドです。

インスタンスの一時停止(multipass suspend

  • インスタンスの現在の状態をメモリに保存し、一時停止します。これにより、Macのリソース消費を抑えつつ、高速に再開できます。
multipass suspend <instance_name>

例: multipass suspend my-ubuntu-vm

コマンド実行例(インスタンス状態の確認):

user-name@your-mac ~ % multipass list
Name                    State             IPv4             Image
my-ubuntu-vm            Suspended         --               Ubuntu 24.04 LTS

インスタンスの再開(multipass start

  • 一時停止中のインスタンスを、中断した時点から再開します。
multipass start <instance_name>

例: multipass start my-ubuntu-vm

!TIP: suspendresume は、VMの状態を保存して高速に再開できるため、開発のコンテキストを維持しつつ、Macのリソースを節約したい場合に最適です。例えば、作業を中断して別のタスクに移る際などに活用すると良いです。

インスタンスの削除と完全消去 (multipass delete, purge)

不要になったインスタンスを削除し、ディスクスペースを解放するためのコマンドです。

インスタンスの削除(multipass delete

  • インスタンスを停止し、Multipassの管理対象から削除します。ただし、ディスク上のイメージファイルは残ります。
multipass delete <instance_name>

例: multipass delete old-project-vm

削除済みインスタンスの完全消去(multipass purge

  • delete コマンドで削除されたインスタンスのディスクイメージを完全に消去し、ディスクスペースを解放します。
multipass purge
[!NOTE]: delete はインスタンスを「ゴミ箱」に入れるようなイメージで、purge はその「ゴミ箱を空にする」操作に近いです。完全に不要になったインスタンスは purge するのがおすすめです。誤って重要なデータを消さないよう、実行前には必ず確認しましょう。

2. ホストOSとインスタンス間のファイル共有

Multipassを活用する際、macOSとインスタンス間でファイルを共有すると非常に便利になります。multipass mount コマンドを使えば、これをスマートに実現できます。

multipass mount コマンドによるディレクトリ共有

multipass mount コマンドを使用すると、macOS上の任意のディレクトリをMultipassインスタンス内にマウントし、双方向でアクセスできるようになります。

コマンドの構文

multipass mount <host_path> <instance_name>:<instance_path>
  • <host_path>: macOS上の共有したいディレクトリの絶対パス。
  • <instance_name>: マウント先のMultipassインスタンス名。
  • <instance_path>: インスタンス内でマウントするパス。通常は /home/ubuntu/<your_directory> のように指定します。

: macOS上の ~/my-project ディレクトリを、my-ubuntu-vm インスタンスの /home/ubuntu/my-project にマウントする。

multipass mount ~/my-project my-ubuntu-vm:/home/ubuntu/my-project

マウントが成功すると、インスタンス内で /home/ubuntu/my-project にアクセスすると、macOS上の ~/my-project の内容が見えるようになります。

[著者の経験談]: 以前は別の端末でUbuntu環境を構築していたので、SSHでファイルを転送したり、rsyncを使ったりしていましたが、multipass mount で劇的に開発ワークフローが改善され、特に、VS Codeのリモート開発と組み合わせることで、まるでローカルで開発しているかのようなシームレス環境になりました。
[!TIP]: multipass mount は永続的なマウントが可能であり、インスタンスを再起動しても設定が維持されます。これにより、一度設定すれば、毎回マウントし直す手間が省けます。

multipass unmount コマンドによる共有解除

multipass mountで共有したディレクトリは、不要になった際にmultipass unmountコマンドで共有を解除できます。これにより、ホストOSとインスタンス間のファイル共有が停止され、インスタンス側のマウントポイントは空になります。

コマンドの構文

マウントポイントを指定して共有を解除する場合

multipass unmount <instance_name>:<instance_path>

または、すべての共有を解除する場合:

multipass unmount <instance_name>

使用例

例えば、my-instanceというインスタンスに/home/ubuntu/sharedとしてマウントされている共有ディレクトリを解除するには、以下のコマンドを実行します。

multipass unmount my-ubuntu-vm:/home/ubuntu/my-project

my-instance上のすべての共有を解除する場合は、以下のように実行します。

multipass unmount my-ubuntu-vm

注意点

  • 共有解除を行う前に、インスタンス側で共有ディレクトリを使用しているプロセスがないことを確認してください。
  • multipass unmountコマンドは、インスタンスが実行中でも停止中でも実行可能です。
  • インスタンスを削除(multipass delete)すると、そのインスタンスに関連するすべてのマウントも自動的に解除されます。

共有ディレクトリの活用例(開発プロジェクトの共有など)

multipass mount を活用することで、以下のような開発ワークフローが実現できます。

ケース1:ホストOSでWebアプリのコードを編集、インスタンスで実行・テスト:

macOS上のプロジェクトディレクトリをMultipassインスタンスにマウントします。
インスタンス内では、そのマウントされたディレクトリにアクセスして、コンパイル、テスト、アプリケーションの実行などを行います。
これで、macOSの快適なエディタ(VS Code, Zed)やツール環境(Canva, mermaid CLI等)を使いつつ、Ubuntu環境でコードを動かすことが可能になります。

ケース2:複数のインスタンスで同じプロジェクトを共有:

異なるバージョンのUbuntuや、異なる開発スタックを持つ複数のMultipassインスタンスで、同じプロジェクトファイルを共有できます。
これで、環境ごとにコードをコピーする手間が省け、効率的な開発が可能です。

ファイル共有の仕組みを図で見てみましょう。

ファイル共有の仕組み
https://www.visionnurture.com/mac-multipass_guide_for_beginner_003

3. インスタンスのリソース(CPU, メモリ, ディスクサイズ)設定を変更する

Multipassインスタンスは、デフォルトで一定のリソース(CPU、メモリ、ディスクサイズ)が割り当てられますが、開発するアプリケーションの要件に合わせてこれらの設定を調整することが可能です。

multipass get コマンドによる現在のリソース設定の確認

multipass getコマンドを使用すると、インスタンスに割り当てられているCPU、メモリ、ディスクサイズなどの情報を取得できます。インスタンスのリソース設定を変更する前に、現在の設定を確認する習慣をつけましょう。

設定項目を取得する場合のコマンドの構文

mulipass get local.<インスタンス名>.<設定項目>

インスタンスのCPUコア数を確認する場合:

例: my-ubuntu-vmというインスタンスのCPUコア数を確認するには、以下のコマンドを実行します。

mulipass get local.my-ubuntu-vm.cpus

メモリサイズを確認する場合:

mulipass get local.my-ubuntu-vm.memory

ディスクサイズを確認する場合:

mulipass get local.my-ubuntu-vm.disk

利用可能なすべての設定キーのリストを表示する場合:

--keysオプションを使用すると、現在利用可能なすべての設定キーのリストを表示できます。これにより、正しい設定キーの形式を確認できます。

mulipass get --keys
[!NOTE]:multipass getコマンドは、インスタンスが実行中でも停止中でも実行可能です。

multipass set コマンドによるリソース設定の変更

インスタンスのリソース設定は、multipass set コマンドを使って変更できます。

注意: cpu, disk, memoryのリソース設定を変更する際は、対象のインスタンスを停止している必要があります。インスタンスが実行中の場合、設定変更はできません。

CPUコア数の変更:

multipass getと同様に、multipass setでもlocal.<インスタンス名>.<設定項目>の形式で指定します。

mulipass set local.<instance_name>.cpus=<new_cpu_count>

例: multipass set local.my-ubuntu-vm.cpus=4 (CPUコア数を4に変更)

メモリサイズの変更:

mulipass set local.<instance_name>.memory=<new_memory_size>

例: multipass set local.my-ubuntu-vm.memory=4G (メモリサイズを4GBに変更)

ディスクサイズの変更:

mulipass set local.<instance_name>.disk=<new_disk_size>

例: multipass set local.my-ubuntu-vm.disk=50G (ディスクサイズを50GBに変更)

また、インスタンスを新規作成する際に、multipass launch コマンドで最初からリソースを指定することも可能です。

multipass launch --name my-dev-vm --cpus 2 --memory 2G --disk 6G

4. FAQ:よくある質問

Q1: multipass deletemultipass purge の違いは何ですか?

A1: multipass delete <instance_name> は、指定したインスタンスを停止し、Multipassの管理リストから削除しますが、ディスク上のイメージファイル自体は残ります。これにより、後で同じイメージからインスタンスを再作成する際に高速化される場合があります。一方、multipass purge は、delete コマンドで削除されたインスタンスのディスクイメージも含め、完全にディスクから消去し、ディスクスペースを解放します。完全に不要になったインスタンスや、ディスク容量を節約したい場合は purge を実行するのがおすすめです。

Q2: multipass mount で共有したディレクトリが、インスタンス側で見つかりません。どうすれば良いですか?

A2: まず、multipass mount コマンドが正しく実行されたか確認してください。インスタンス内で ls / を実行し、マウントポイント(デフォルトでは /Users/<your_username> のようなパス)が存在するか確認します。もし見つからない場合は、以下の点を確認してみてください。

  1. マウントコマンドの再実行: multipass umount <instance_name>:<instance_path> で一度アンマウントし、再度マウントを試みてください。
  2. パスの確認: ホストOS側のディレクトリパスと、インスタンス側のマウントパスが正しいか、スペルミスがないか確認しましょう。

Q3: インスタンスのCPUやメモリを増やしたいのですが、どうすれば良いですか?

A3: インスタンスのCPUやメモリなどのリソース設定を変更するには、multipass setコマンドを使用します。変更を行う前に、以下の手順と注意点を確認してください。

  1. 現在のリソース設定の確認(任意):
    変更前に現在の設定を確認したい場合は、multipass getコマンドを使用します。
multipass get local.<instance_name>.cpus
multipass get local.<instance_name>.memory
  1. インスタンスの停止:
    リソース設定を変更する際は、対象のインスタンスを停止している必要があります。インスタンスが実行中の場合、設定変更はできません。
multipass stop <instance_name>
  1. リソース設定の変更:
    multipass setコマンドを使用して、CPUコア数やメモリサイズを変更します。設定キーはlocal.<インスタンス名>.<設定項目>の形式で指定します。
  • CPUコア数の変更:
    bash multipass set local.<instance_name>.cpus=<新しいCPUコア数>
    例: multipass set local.my-ubuntu-vm.cpus=4
  1. インスタンスの再起動:
    設定変更後、インスタンスを再起動して新しいリソース設定を適用します。
multipass start <instance_name>

5. まとめ:より実践的な開発環境へ

この記事では、macOS開発者がMultipassインスタンスを管理し、macOSとの間でファイルをスムーズに共有するための「極意」を解説しました。

  • インスタンスのライフサイクル管理: start, stop, restart, suspend, delete, purge といったコマンドを習得し、Multipassインスタンスをあなたの意のままに制御できるようになりました。
  • 効率的なファイル共有: multipass mount コマンドを使って、macOS上の開発プロジェクトディレクトリをインスタンスにマウントし、シームレスなファイルアクセスを実現する方法を学びました。
  • リソースの最適化: CPU、メモリ、ディスクサイズといったインスタンスのリソース設定を調整し、あなたの開発ワークロードに合わせた最適なパフォーマンスを引き出す方法を理解しました。

これらの知識を組み合わせることで、あなたのmacOS開発環境は、より快適でパワフルなものへと進化するはずです。

はじめの一歩を踏み出そう!

今日からあなたの開発ワークフローに、multipass mount を積極的に取り入れてみましょう。まずは既存のプロジェクトディレクトリをマウントし、インスタンス内で開発ツールを動かしてみてください。もしインスタンスの動作が重いと感じたら、この記事で紹介したリソース設定の調整を試してみてください。

次回の記事もお楽しみに!

次回の記事では、いよいよVS CodeとMultipassを連携させ、まるでローカル環境で開発しているかのようなシームレスな体験を実現する方法を解説します。リモート開発の強力な機能を活用し、あなたの開発効率を爆上げしましょう。お楽しみに!

https://www.visionnurture.com/mac-multipass_guide_for_beginner_003

この記事が役に立ったら、ぜひチームに共有したり、X(旧Twitter)で感想をポストしてください。


参考資料


免責事項

本記事は、執筆時点での情報に基づいて作成されています。Multipassや関連ソフトウェアのバージョンアップにより、機能や操作方法が変更される可能性があります。本記事の内容を利用したことによるいかなる損害についても、著者は一切の責任を負いません。ご自身の責任においてご利用ください。


SNSでもご購読できます。

コメントを残す

*