Vagrantでの共有フォルダーのパフォーマンス

画像



大規模で定期的に補充されるプログラマーチームを率いて、「奇妙な、このコードは私にとってはうまくいき、そのようなライブラリのバージョンはありますか?」という精神でタンバリンと踊らずに開発環境を迅速に展開する必要に直面しました。



顧客からVagrantへのリンクを受け取ったとき、「なぜまだ使用していないのですか?」という質問がありました。彼はこの奇跡をマスターし始めました。



しばらくして、彼はVagrantfileを準備しました。Vagrantfileは、数分でリポジトリ、ライブラリ、サーバー、デプロイヤの複雑なシステムをデプロイします。 そして、すべてがうまくいきますが、1つの小さな不快な詳細-これはすべて非常に遅く/バグがあります、または(ローカル実行では)迷走神経内に保存されたリポジトリへの直接アクセスを提供しませんでした。



ホストマシンにファイルのコピーを保存し、それらをIDEに保存するときにゲストマシンに自動的に配信できる場合、多くの人がこの直接アクセスが必要な理由を言うでしょう。



その通りですが、ニュアンスがあります-チームには、サーバー上のgitリポジトリのブランチ(ブランチ)を切り替え、ブラウザで結果を観察し、キャッシャーを離れずにIDEでブランチコードを編集する機能が必要です。



多くが問題が何であるかを言うでしょう、sshとコンソールgitがあり、クライアントがそれらを実行するのを管理するよりも速くキーボードからコンソールコンソールgitクライアントコマンドを駆動するマニアを示します。 この声明に同意することはできますが、リポジトリに10個のリポジトリと数十個のブランチがあるため、これらすべてをSourceTreeを介して視覚的に観察および管理し、3回のクリックでこの巨像を管理するためのほぼすべてのコマンドがあります。



再試行しました。

  1. 共有フォルダー-スクリプトの処理速度は、ゲストフォルダーで実行する場合の10倍でした
  2. sshfs

    • phpStormの永続的なインデックス再作成
    • ブランチを切り替えるときにgitインデックスからすべてのファイルをドロップアウトし、常にリセットする必要がある--hard
    • IDEおよびgitクライアントがファイルの変更に気付かない
  3. NFSとNFSリバース-タンバリンと踊らないでOSXで作業することを愚かに拒否しました(インターネット上のレビューによると、彼らは根本的に問題を解決しません)


数日後(数週間?)この問題の研究に費やした結果、私は自分の願望で一人ぼっちではなかったことが判明しましたが、これまでのところ、rsyncを介した一方向の同期ほど賢いものはありませんでした。



私が見つけることができた最も近いものは、双方向増分同期を実行するユニゾンユーティリティと、そのために書かれた迷走プラグイン-github.com/mrdavidlaing/vagrant-unison



確かに、別の問題が発生しました。 ユーティリティ自体は、2回目の再起動のモードでのみフォルダーを自動的に同期できます。これは、vagrantプラグインではサポートされていませんでした。 プラグインは、繰り返しでもイベントベースモードで自動同期を提供できますが、一方向(ホスト->ゲスト)でのみ可能です。 さらに、プラグインはバージョンvagrant 1.1向けに作成されており、現在までに公式に宣言されている機能も実行していません。



プラグインが2013年4月26日(7か月前)に作成者によって更新されなかったにもかかわらず、別のプログラマーがプラグインに命を吹き込もうと試みたにもかかわらず、少し後に判明しました。 彼の仕事の結果は、 github.com / edtoon / vagrant-unisonで見ることができます。



彼のプラグインでさえ、最新のvagrant(1.7.x)にインストールすることを拒否しています。 コードを完成させることで、

  1. 1.7.xとの互換性。
  2. 繰り返しモードをサポート。
  3. 「迷走破壊」後にユニゾンデータベースの競合を解決する機能。 sync-cleanupコマンドを使用してvagrant upします。


結果は、 github.com / dmatora / vagrant-unisonで表示されます。

準備完了プラグイン: www.dropbox.com/s/1yu1s7pr3qlr8ag/vagrant-unison-0.0.15.gem-インストール用

vagrant plugin install vagrant-unison-0.0.15.gem
      
      





私は数日間それを使用してきましたが、ブレーキとグリッチの不足を夢見ていないことを確認するために、まだ自分をつまんでいます。

ただし、噂によると、快適な作業には4コアプロセッサが必要です(SSD + Parallelsが望ましい)



PS表示されるコメントに関連して、記事のイラストを添付します

Vagrant-Mac / Linuxホスト用のNFS共有フォルダー、Windows用のSamba共有

画像



PS私のフォークは注目を集めていますが(主にブルジョア)、それでも自分の人生を生きていますが、現時点ではまだnfs_guestを使用していると言わざるを得ません。 私はユニゾンの前にそれを使用しようとしましたが、私のOSXでは、nfsがOSXで動作するためには/ etc / hostsにlocalhostエントリが必要であることが判明するまで静かに動作を拒否しました。 残念ながらnfsはファイルシステム内のイベントについてアプリケーションに通知しませんが、同期とCPU負荷の問題の中で、これは耐えられます。 耐えられない明滅するSourceTreeは、設定でオフにできます(ファイルが変更されると自動的に更新されます)



All Articles