volumeマウントについて疑問が生て混乱してきたので、質問させていただければと思います。
勘違いしてるのかもしれないのですが、同一ハードウェア上のマウントはディスクに直書き込みだと思っていて、別々のマシンでrsyncや、volumeマウントの仕組みは、まずマウント先のディスクにデータを書き込み、マウント元のデータをそのデータに更新をかけるのだと思っていたのですがこの理解が間違っていますでしょうか?(共有ドライブのようなものをイメージしています)
DBを物理バックアップするため、DockerのVolumeをバックアップサーバにマウントして保存しようと思うのですが、以上のような、仕組みで正しいのであれば、同期した際にボリュームマウントしたDBのコンテナを複数建てそこからVolumeのwriteを行なった場合、競合が発生する可能性があるのではないかと思いました。
例えば、postgreSQLのコンテナ2つ(p1,p2とします)にdataディレクトリのvolume(vとします)を作成して、以下のようなことが起こりえないか気になりました
p1,p2で同時にwrite処理 ー> p1のvolume write ー> p2のvolume write ー> p1のディスクがvと同期 ー> p2のディスクがvと同期 => p1のwrite結果が消える
もし、これらがマウント元のディスク書き込み優先で行う仕組みになっているのであれば以上の問題は生じないと思うのですが、もし以上の競合が発生し得てどのように解決すればよいか、またはマウントの仕組み上自動で解決されていて問題は起きないのかどうかを御存知の方はいらっしゃいますでしょうか。
Dockerタグをつけていますが、一般的なVolumeマウントの仕組みでも構いませんのでご存知の方いたら教えていただきたいです。よろしくお願いいたします。
あなたの回答
tips
プレビュー