Linuxがdfでブロックされている

Linuxがdfでブロックされている

外付けハードドライブに問題があります。損傷または損傷を受け始めるのが心配です:S。

私が使用しているアプリケーションで統計ファイルシステムこの外付けハードドライブに関する情報を取得します。

const char *mountPoint = "/media/hdd";
struct statfs s;
statfs(mountPoint, &s);

しかし、時にはアプリケーションログでLinuxシステム全体がブロックされていることがわかりました(実際には、特定のイベントが適切な時刻に登録されていないため)。私はこれらの「重要な」瞬間の1つに「df」コマンドを入力してそれに直接気づきました。その結果、行が表示されるまでに数秒かかる HDD パーティションを除いて、すべてのパーティションが正しく表示されます。

また、HDDは次のようにフォーマットされています。NTFS使っていますNTFS-3Gそれを操作するために。

...最後に、dmesgで次の問題を見つけました。

klogd: page allocation failure: order:0, mode:0x20
CPU: 0 PID: 1660 Comm: klogd Not tainted 3.12.20-smp #6
Hardware name: PhoenixAward 945GS/945GS, BIOS 6.00 PG 02/03/2015
[...]
Call Trace:
[...]
[<f866806e>] e1000_alloc_rx_buffers+0x18e/0x1e0 [e1000e]
[<c1a30387>] ? napi_gro_receive+0x67/0x90
[<f8666200>] e1000_clean_rx_irq+0x220/0x340 [e1000e]
[<f866cc5b>] e1000e_poll+0x7b/0x2e0 [e1000e]
[...]

マウントされたデバイス情報を取得する非ブロック化方法があるかどうか疑問に思います。この場合、デバイスの合計サイズと空きディスク容量または使用済みディスク容量が必要です。

おそらく、この質問は「df」またはボリュームデータアクセスに厳密には関係していませんが、Linuxオペレーティングシステムの機能に関連している可能性があります。メモリ割り当て。

どんな助けでも大変感謝します。よろしくお願いします。

ベストアンサー1

デバイスパラメータを抽出し、それをスレッド/プロセスに割り当てるロジックを作成します。親プロセスのワーカースレッド/プロセスを監視し、中断された場合は適切なタイムアウト後に終了します。

おすすめ記事