2

私の Vagrantfile では、VirtualBox を使用して、同じストレージ コントローラー上に任意のストレージ デバイスを動的に作成/マウントしようとしています (たとえば、読み取り専用ファイル システムでの永続化のため)、VM 上の特定のパス (Guest Additions、nfs などを使用しない)。現在、これを達成しようとして多くのフープ (以下の要点を参照) を飛び越えています。たとえば、私が試みているワークフローは次のとおりです。

  1. 指定されたイメージ パス (ホスト ファイル システム上の VDI、VMDK など) を使用して、VBoxManage createhd存在しない場合 (動作中)
  2. #1 のストレージ デバイスをVBoxManage storageattach(working)経由でストレージ コントローラに接続します。
  3. 接続されたストレージ デバイスのプライマリ パーティションを指定されたマウントポイントにマウントします (機能しません)。

したがって、各デバイスのこれまでのステップバイステップは次のとおりです(この要点、部分的に擬似コードを参照):

  1. デバイスの UUID を取得します (VBox に従って)
  2. ゲスト上のデバイスへの実際のパスを取得します (経由/dev/disk/by-uuid/<uuid>)
  3. デバイスが作成されたばかりの場合は、プライマリ パーティションを作成します
  4. デバイスをマウントします (オプションで、/etc/fstab永続化のために追加します)

問題は、特定のデバイスが で利用可能になると仮定/予測したくない/dev/sdXため、マウントされていないデバイスへの参照を (マウントするために) に取得する信頼できる方法を思いつかないことです。 VBox UUID とゲスト OS デバイスの UUID が一致していないように見えるため、これが重要です。それらは同じであるはずですか?そうでない場合、VBox 情報のみを使用して、ゲストのデバイス パスを確実に取得するにはどうすればよいですか? これを達成するためのより良い方法はありますか?

余談ですが、私は CoreOS (読み取り専用のルート マウントを持つ) でテストしており、この特定の目的のためにホストからゲスト追加機能や NFS を使用したくありません。意図的にストレージ デバイスを使用しようとしています。

4

0 に答える 0