Virtual Boxを使用してホストとゲスト間でホームディレクトリ全体を共有する

Virtual Boxを使用してホストとゲスト間でホームディレクトリ全体を共有する

何らかの理由で、私が働いている場所では が使用されていますUbuntu 12.04。最新のソフトウェアが多数必要なため、 を搭載した VM を使用したいと考えていました。 (Oracle エディション)Ubuntu 14.04を使用してすべてを正常にセットアップできました。virtual box 4.3

その後、ホストのホーム ディレクトリの共有を作成し、それをゲストのユーザーのホーム ディレクトリとして使用しようとしました。理由の 1 つは、仮想ボックスに障害が発生した場合にすべてを失いたくないため、すべてのファイルを実際の HD 上に置くことが重要であると思われるためです。

現在、ディレクトリは AutoFS を使用してゲストにマウントされています。ゲストとホストのユーザーは、同じログイン、uid、メイン gid を持ちます。

ssh を使用してゲストからゲストにログインすると機能するようです。しかし、グラフィカル ログインでは機能しません。ユーザーはすぐに切断されます。これは、ホスト上のグラフィカル ログインによっていくつかのファイルが作成され、グラフィカル ログインがゲスト上でそれらのファイルを作成しようとして失敗するためだと思います。

何か案が?

答え1

@Dan Cornilescu に同意します。これは良い考えではありません。特に、ファイルやフォルダが Sudo 権限で操作されているとき、または権限がない場合、Linux が不安定になる可能性があることを考えるとなおさらです。

あなたが提案していることは(実際には質問していないにもかかわらず)可能だとは思いますが、あなたが言及した最初の問題に対する最善の解決策ではないと思います。「理由の 1 つは、仮想ボックスが失敗した場合にすべてを失いたくないからです...」

この問題を完全に理解しています。一方では、素晴らしい(無料) サービスが Oracle によって提供されているとしても、「標準」ではないものに完全に依存したくはありません。ただし、この問題に対処する方法はいくつかあり、「すべてのファイルを実際の HD 上に置く」よりも安心できます。ここでは、VirtualBox に組み込まれている機能のうち、私が他の何よりもよく使用している機能をいくつか紹介します。

〜 "スナップショット」彼らはまさにそれを行います。あらゆる種類のインストールの前後に VM のスナップショットを作成するか、CronTab を使用してスナップショットをスケジュールします。この方法では、クラッシュする前に以前のバージョンをロード/起動するための迅速かつ簡単な方法が常に得られます。

~ シンプルな輸出入必要に応じて、 VM (または.VHD) のバックアップを作成します。スナップショットよりも静的であるため (私のニーズでは)、この方法を好みます。VHD/VM エクスポートをバックアップとして使用することは、基本的にポータブル コンピューターや対話型バックアップです。独自の方法で作成された標準 (休止状態) イメージとは異なります。

~ 独自のものを作成するか、Vagrant Box を使用します。詳細情報ここそしてここニーズに合ったものを見つけて.boxそれをバックアップとして使用するか、さらに良いことに基本スクリプト.boxとカスタム.SH(BASH) スクリプトを併用します。プログラムをインストールして設定を変更するときにこのスクリプトを更新します。そうすれば、失敗した場合でも、単純なスクリプトを実行するだけで済みます。これで、新規インストールを開始してすぐに使用できるようになります。

答え2

一般的に、X サーバー、ウィンドウ マネージャー、X アプリケーションが異なるマシン間でホーム ディレクトリを共有するのは良い考えではないと思います。これらのマシンの一部では同じホーム ディレクトリ構成ファイルを使用することが多く、異なるバージョンが相互に影響を及ぼしてしまうからです。特に、異なるソフトウェア バージョンが同時に使用される場合はそうです。

多くの場合、一部のソフトウェアの新しいバージョンがファイルを更新すると、古いバージョンではそれらのファイルを使用できなくなります。

逆の方向でも発生する可能性があります。通常は、古い OS のホームディレクトリをそのまま新しい OS で再利用しようとした場合です (新しい OS で新しく作成したホームディレクトリを持つユーザーは問題なく動作します)。GUI にログインできない場合は、このようなケースである可能性があります。

VM ホームディレクトリをホスト HD 上で競合せずに保持するための可能なアプローチ (OS をアップグレードするときに、次のような方法を使用しています):

  • ホストのホームディレクトリをNFS経由でエクスポートし、VMにマウントします。 /mnt/ホストユーザーID
  • 作成すると言うvm_homedirその中のディレクトリをVMのホームディレクトリとして使用し、VMの/家監督:

    /home/userid -> /mnt/host_userid/vm_homedir

  • シンボリックリンクディレクトリ/ファイルアプリのディレクトリ/設定ファイル以外両方のマシンから同じ場所から簡単にアクセスするには、次のようにします。

/mnt/host_userid/vm_homedir/documents -> ../documents

この方法では、すべてをホスト HD 上に保持します (VM がダウンしている場合でもアクセス可能) が、各マシンは独自の構成ファイルのコピーを使用して動作します。

答え3

@Dan Cornilescu の提案 (およびコメント) に従って、この問題を次のように解決しました。

  1. ホストのホームディレクトリ用の仮想ボックス共有を作成しました。host_home
  2. オプションで(ただし私の場合は非常に重要)ゲストが共有フォルダにシンボリックリンクを作成できるようにしました(ここ例えば)
  3. ゲストの起動時に、ゲストユーザーのuidとgidを使用してこの共有をマウントします/mnt/host_home受け入れられた回答 ここ例えば)
  4. ゲストホームで、共有したいフォルダのシンボリックリンクを作成します(、などで機能しDesktopますDownloads

今のところ、すべてが期待どおりに動作します。ファイルの読み取りまたは書き込み時にパフォーマンスが低下する可能性がありますが、問題ありません。

関連情報