問題タブ [ocfs2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
filesystems - クラスター化されたファイル システムを置き換えるファイル サーバー
さまざまなメンテナンス、安定性、およびバックアップの理由から、10 ノード (10 Linux ホスト) の ocfs2 共有ファイルシステムを、共有ディスクに依存しないものに置き換える必要があります。クライアント アプリケーションは、Linux のみの環境では PHP です。
現在、各 PHP クライアントはデータベースから一意の ID を要求し、共有ディスク上にその ID/名前でファイルを作成します。データベースには、すべてのファイル メタデータが格納されます。既存のファイルは、同様の方法でアクセスされます。
共有ディスク ソリューションを、ネットワーク経由のファイル サーバーへの putfile(id, '/tmp/path') および getfile(id, '/tmp/path') 呼び出しに置き換えたいと考えています。クライアント側では、tmpfs 内のファイルを操作できました。サーバーは圧縮などを処理する必要があります。これにより、PHP クライアントへの依存からも解放され、Windows Delphi アプリケーションのように、他のアプリケーションからファイル サーバーを直接使用できます。
理論的には、FTP ベースのソリューションでも機能する可能性がありますが、パフォーマンスはおそらくあまり高くありません。それとも、古い FTP プロトコルを信用しないのは間違っていますか?
私は現在 3,000 万を超えるファイル ID を持っています。それらのほとんどはサイズが数 KB で、最大 300 MB の注目すべき例外があり、合計で 320 GB しかありません。PHP クライアントは、gzip と tar を使用して圧縮とグループ化も行いますが、すべて非常に扱いにくいものです。
私は memcachedb のような高速でシンプルなものを見つけたいと思っていましたが、ファイル用です。私が見つけた最も近いものは、hadoop の hdfs ですが、それが正しい解決策だとは思いません。
推奨事項はありますか?明らかな何かが欠けていますか?
c - read() from files - ブロック動作と非ブロック動作
fopen()
を使用してファイルを開き、受け取ったファイル ポインタから、 を使用してファイル記述子をフェッチすると仮定しましょうfileno()
。read()
次に、このファイルから 4 バイトから 10 キロバイトのサイズの比較的小さなチャンクのランダムな s をたくさん (>10^8)実行します。
read()
ファイルerrno
システムが
ext3
NFS
OCFS2
2 と 3 の組み合わせ (
OCFS2
経由NFS
)
?
私の測定値は、1.(ファイルが設定されていない場合、O_NONBLOCK
設定できる場合ext3
)に対しては可能ではないという結論を出しましたが、他の3つ(2.、3.、4.)については不明です.
O_NONBLOCK
(ところで:いずれにせよ、デフォルトに設定されていないと仮定できますか?)
この疑問が生じたのは、ケース 4 で設定read()
せずにリクエストした場合よりも少ないバイト数を返す sを観察したためです。errno
テストによってこれをドリルダウンする問題は、そのような動作が 1/1000000000 のケースで発生することです...-これはまだあまりにも頻繁です:-}
更新: 平均ファイル サイズは、数 TByte から約 1 GB です。
php - OCFS2 PHP(CGI/FPM)
ocfs2 ファイルシステムで PHP Web サイトを実行すると、解析時間が ext4 の場合の 10 倍になります。ocfs2 がプライマリ/プライマリまたはプライマリ/セカンダリの使用で実行するように構成されているかどうかは問題ではありません。それでも同じ結果です。
通常のページ読み込み時間 (ext4 を使用) は約 250 ミリ秒で、ocfs2 を使用すると、最初の html 応答を取得するのに 1.5 ~ 2.8 秒かかりました。(他のアプリケーションはサーバー上で動作していません。php は ocfs2 システム上で動作している単一のプロセスです)
私は notime でそれをマウントする testet を持っていますが、何の違いも見られませんでした。また、PHP は ext4 の場合と同様に、より多くの CPU 時間を消費しています。
通常の .html アクセスは 5 ミリ秒未満で実行されるため、読み取り速度のレイテンシが低く、単純なコピーも非常に高速に実行されます。
クラスタ サイズとブロック サイズはデフォルトです。また、-T mail でディスクを再フォーマットします。何も変わっていません。誰かがヒントをくれることを願っています;)