Fsync失敗エラーが発生するのはなぜですか?

Fsync失敗エラーが発生するのはなぜですか?

フォローしようとしています。モンゴルDBドキュメントMongoDBを実行しているマシンに対してLTHを正しく設定します。

指示の1つには、起動時に実行されるスクリプトの作成が含まれます。残念ながら、推奨スクリプトや同様のコードはありません。システムサービスとして書き換え働く

この問題のデバッグ中に別の問題が発生しました。私が実行したとき:

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled

コマンドは正常に実行されたようですが、ファイルは変更されていないままです。

root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled

元のコンテンツを返します。

always madvise [never]

vimファイルを保存しようとしたとき。同期失敗。しかし、エラーが記録されました、私の場合、十分なディスク容量がありました/(20%使用、7GBの空き容量)。

モードでコマンドを実行しましたが、sudoファイル権限が正しいようです。

-rw-r--r-- 1 root root 4096 ...

ディレクトリ/sysではない読み取り専用モードでインストールまたは以下のように表示されます。

root@demo:/# grep sysfs /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0

ここで何が起こっているのでしょうか?

答え1

sysfs、通常マウントされるファイルシステムは、/sysLinuxカーネルと対話する特別な仮想ファイルシステムです。

内部ファイルは実際のファイルではなく、非常に単純なアクセス方法のみをサポートするカーネルのデータ構造を表します。これらのファイルを読み取ると、カーネルに情報を要求します。これらのファイルに書き込むと、カーネルに設定を変更するか、操作を実行するように指示します。

それがvim失敗した理由です。実際のファイルに最適化された方法で仮想ファイルにアクセスしようとしましたがsysfs

最初のコマンド

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled

もう成功しました!

多くのsysfs "ファイル"(含まれています)/sys/kernel/mm/transparent_hugepage/enabledは、読み取り時に現在の設定を印刷するだけでなく、可能なすべてのモードを印刷し、括弧を使用して複数のモードのうちどのモードが有効になっているかを説明します。

あなたの場合はnever括弧内にあるので、有効にしたいモードはすでにecho有効になっています。

always madvise [never]

仕組みに興味がある場合は、sysfs詳細をお読みください。ウィキペディアまたはLinuxカーネルドキュメント

関連情報