VM関連ファイルを外部ストレージに保存して空き容量を確保する

何かと容量を食うVM関連ファイル

DockerやらVagrantやらで作業していると、いつのまにかディスク容量が逼迫していることがありますよね。

自分も128GB SSDのMacBook Proを使っているので、結構いっぱいいっぱいでした。

そこで拡張ストレージを用意して、容量を食いがちなVM関連のファイルを移動することにしました。

(参考)Mac用の拡張ストレージ

USBで外付けするようなのだと持ち運びに不便なので、 iSlice Pro のような本体のSDカードスロットに差せるようなタイプを個人的には使っています。 iSliceの場合はただのアダプタなので別途128GBのmicroSDカードを調達する必要がありますが、ストレージと一体になっているモノよりは若干割安です。

Vagrant

Vagrant用のBoxファイルとVMイメージの保存場所を変える際には、以下の記事が参考になります:

MacBookAir の容量がきついので Vagrant 環境を外付けに移した話 – モンキーレンチ

上記の記事を参考に諸々のファイルの移動、VB上の設定を済ませたら、 以下のようなコマンドを .bashrc やら .zshenv やらに書いておけば大丈夫です:

export VAGRANT_HOME=/Volumes/data/.vagrant.d

Docker Machine

Docker Machine用のファイルもデカいので移動させたいです。

Docker Machineでは MACHINE_STORAGE_PATH という環境変数を参照しています。 デフォルトは ~/.docker/machine です。

Vagrantの場合と同じように既存のファイルを新しい場所に移動し、 VB上で除去→追加の手順を踏みます。 そして以下のようなコマンドで環境変数をセットします:

export MACHINE_STORAGE_PATH=/Volumes/data/.docker/machine

これも .bashrc やらに書いておきましょう。

注意: 外部ストレージのフォーマット

自分の場合、SDカードが元々フォーマットされていて、 差すだけで既に利用できたので、フォーマットについては特に気にせず移行作業をしてしまいました。

ところが、移行後に 'docker-machine が謎のエラーで使えなくなってしまいました。

-D を付けてデバッグ情報を表示したとろ、以下のようなエラーが出ていました:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/Volumes/data/.docker/machine/machines/default/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Volumes/data/.docker/machine/machines/default/id_rsa": bad permissions
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,password,keyboard-interactive).

実は、 SDカードがexFATでフォーマットされていたため、permissionが777になってしまっていた ことが原因でした。 exFATの場合、 chmod することも出来ないので、フォーマットを変更する必要があります。

Mac OS X用拡張ストレージは、 〈OS X 拡張 (ジャーナリング)〉でフォーマット しましょう。 また、この際に 〈大文字/小文字を区別する〉は不要 です。 OS Xのメインストレージでは区別されませんし、 Adobeなど一部の製品は大文字小文字を区別するファイルシステムをサポートしていません1。 無用なトラブルを避けるためにも、注意しましょう。


  1. Mac OS X ファイルシステムの確認方法と大文字と小文字を区別するファイルシステムについて ↩︎

yewton
ソフトウェアエンジニア

父親兼エンジニア

comments powered by Disqus