VirtualBoxを使用するときにPostgreSQLデータフォルダを共有フォルダの場所に変更するには?

VirtualBoxを使用するときにPostgreSQLデータフォルダを共有フォルダの場所に変更するには?

私はフォローアップをしています。このチュートリアルPostgreSQLデータフォルダの場所を移動する方法について説明します。デフォルトでは、内部のファイルを/var/lib/postgresql別の場所にコピーするだけです。次のようになります。

sudo rsync -av /var/lib/postgresql /mnt/volume

その後、ファイル内の行/etc/postgresql/9.5/main/postgresql.confを変更しましたdata_directory = '/mnt/volume/postgresql/12/main'...

このソリューションはうまく機能します。唯一の条件は、コピーされたフォルダにpostgres:postgres繰り返し権限が必要であることです。

/home/SharedFolder共有フォルダの場所があり、仮想マシンにPostgreSQLがインストールされていると仮定し、ホストとゲスト間の共有フォルダの場所でVirtualBoxを使用すると問題が発生します。これらのVirtualBox共有フォルダは常に権限のあるゲストに表示され、これらの権限は時間の経過とともに変更されないため、この権限を持つ共有root:vboxsfフォルダに新しいフォルダを作成することはできません。私はグループに追加しようとしましたが(知っていますがお勧めできません)、うまくいきませんでした。内部のすべてのフォルダに権限がある場合にのみ機能します。この問題に対する解決策はありますか?ターゲットフォルダ(この場合はVirtualBox共有フォルダの場所)の権限を制御できない場合は、PostgreSQLデータフォルダの場所をどのように変更しますか?chmodchownpostgres:postgrespostgresvboxsfroot/home/SharedFolder/postgrespostgres:postgres

答え1

最後に、共有フォルダを直接マウントして解決策を見つけ、/etc/fstabそこで私たちが望む権限を強制することができました。デフォルトでは、ホストシステムで自動マウントが有効になっていないフォルダを共有しました。

ここに画像の説明を入力してください。

/etc/fstabその後、ゲストファイルに次の行を追加しました。

postgresql /home/path/guest/postgresql/ vboxsf uid=postgres,gid=postgres 0 0

最後に、data_directory内部変数を/etc/postgresql/12/main/postgresql.conf次のように変更しました。

data_directory = '/home/path/guest/postgresql/12/main'

内部データが元のpostgresqlフォルダのコピーであれば、postgresql正常に動作します。

関連情報