初心者の質問。私はこれを構築する必要があります:
/shared
フォルダ最大500GBのファイル、各ファイル最大1MB。GlusterFSに関する私の質問:
/shared
にあり、マウントは/mnt/shared
にあります。すべてのサーバーで1GBのスペースが必要ですか?/shared
に書き込む必要がありますか?クライアントをマウントしなくても、レプリケーションはこのように機能しますか?また、この設定を完了する他の方法を誰かが知っているなら、私は非常に感謝します。前もって感謝します。
実際、Glusterはこのシナリオに最適です。双方向レプリケーションといずれかのマシンからファイルシステムをマウントする機能を利用できるため、(理論的には)NFSの2倍の有効I/O容量と、ボックスの1つに障害が発生した場合のアクティブフェイルオーバーが可能になります。
この方法でアクティブなrsyncを実行する場合の問題は、ファイルロックが原因でI/Oがブロックされることです。アプリケーションとデータの変更に応じて、これは無関係または悲惨な場合があります。分散ファイルシステムには、これが発生しないようにする非常に特殊なロックセマンティクスがあります。最近、inotifyの方がロックが優れていても(最後に試したときはそうではありませんでした)、ネットワークが変更に対応できるかどうかによっては、ファイルアクセスがブロックされる可能性があります。これらはすべて理論上の警告ですが、アプリの機能に応じて検討する価値があります。
私はついに両方のボックスでGlusterFSを使用してこれを解決することができました。その過程で学んだこと:
option read-subvolume
を使用してローカルストレージを使用します。もちろん、RAID1の整合性を維持するためにGlusterFSは常に他のボリュームもチェックしますが、実際のファイルはディスクから直接取得されます変更されたクライアント構成:
# Server1 configuration (RAID 1)
volume server2-tcp
type protocol/client
option transport-type tcp
option remote-Host server2
option transport.socket.nodelay on
option transport.remote-port 6996
option remote-subvolume brick1
end-volume
volume posix-local
type storage/posix
option directory /shared
end-volume
volume locks-local
type features/posix-locks
subvolumes posix-local
end-volume
volume brick-local
type performance/io-threads
option thread-count 8
subvolumes locks-local
end-volume
volume mirror-0
type cluster/replicate
option read-subvolume brick-local
subvolumes brick-local server2-tcp
end-volume
.....
私の両方の質問に答える:
同じボックスにファイルを複製しますか?
いいえ、fsはFuseを使用してマウントされます。現在の/ etc/fstab行:
/etc/glusterfs/client.vol/mnt/sharedglusterfsのデフォルト00
代わりに、ファイルシステムを直接使用して、ローカルで/ sharedに書き込む必要がありますか?クライアントをマウントしなくても、レプリケーションはこのように機能しますか?
いいえ、常にマウントされたボリュームを使用して読み取り/書き込みを行います。ファイルシステムを直接使用すると、不整合が発生する可能性があります。
セットアップ アクティブミラーリングを行うためのrsync 、または単にnfs共有をセットアップし、両方を同じ実際のドライブからプルさせる方がはるかに簡単です。