私の Vagrantfile では、VirtualBox を使用して、同じストレージ コントローラー上に任意のストレージ デバイスを動的に作成/マウントしようとしています (たとえば、読み取り専用ファイル システムでの永続化のため)、VM 上の特定のパス (Guest Additions、nfs などを使用しない)。現在、これを達成しようとして多くのフープ (以下の要点を参照) を飛び越えています。たとえば、私が試みているワークフローは次のとおりです。
- 指定されたイメージ パス (ホスト ファイル システム上の VDI、VMDK など) を使用して、
VBoxManage createhd
存在しない場合 (動作中) - #1 のストレージ デバイスを
VBoxManage storageattach
(working)経由でストレージ コントローラに接続します。 - 接続されたストレージ デバイスのプライマリ パーティションを指定されたマウントポイントにマウントします (機能しません)。
したがって、各デバイスのこれまでのステップバイステップは次のとおりです(この要点、部分的に擬似コードを参照):
- デバイスの UUID を取得します (VBox に従って)
- ゲスト上のデバイスへの実際のパスを取得します (経由
/dev/disk/by-uuid/<uuid>
) - デバイスが作成されたばかりの場合は、プライマリ パーティションを作成します
- デバイスをマウントします (オプションで、
/etc/fstab
永続化のために追加します)
問題は、特定のデバイスが で利用可能になると仮定/予測したくない/dev/sdX
ため、マウントされていないデバイスへの参照を (マウントするために) に取得する信頼できる方法を思いつかないことです。 VBox UUID とゲスト OS デバイスの UUID が一致していないように見えるため、これが重要です。それらは同じであるはずですか?そうでない場合、VBox 情報のみを使用して、ゲストのデバイス パスを確実に取得するにはどうすればよいですか? これを達成するためのより良い方法はありますか?
余談ですが、私は CoreOS (読み取り専用のルート マウントを持つ) でテストしており、この特定の目的のためにホストからゲスト追加機能や NFS を使用したくありません。意図的にストレージ デバイスを使用しようとしています。