MongoDBのドキュメントの指示に従って、マシンのLTHを適切に構成しようとしていますMongoDBの実行。

手順の1つは、起動時に実行されるスクリプトの作成です。残念ながら、提案されたスクリプトも、同様のコードも次のように書き直されていません。 systemdサービスが機能します。

問題をデバッグしているときに別の問題が発生しました。実行すると:

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

コマンド正常に実行されているように見えますが、ファイルは変更されていないため、次に実行すると:

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

元のコンテンツが返されます:

always madvise [never] 

vimでファイルを変更しようとしました。ファイルを保存しようとすると、 Fsyncが失敗したというメッセージが表示されます。 。このエラーは文書化されていますが、私の場合、/に十分なディスク容量があります(20%使用、7 GBが利用可能です。)

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 

ここで何が起こっているのですか?

回答

sysfsは、通常/sysにマウントされるファイルシステムであり、Linuxカーネルとインターフェイスするための特別な仮想ファイルシステムです。

その中のファイルはありません。”実際のファイルでは、カーネル内のデータ構造を表し、かなり単純なアクセス方法のみをサポートします。このようなファイルから読み取ると、カーネルに情報を要求します。このようなファイルへの書き込みは、カーネルに設定の変更またはアクションの実行を指示します。

そのため、vimは失敗します。実際のファイル用に最適化された方法であり、これはsysfsではサポートされていません。

最初のコマンド

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

はすでに成功しています!

/sys/kernel/mm/transparent_hugepage/enabledを含む多くのsysfs「ファイル」は、読み取ったときに現在の設定を出力するだけでなく、可能な限りすべてを出力しますモードと括弧を使用して、代わりにアクティブな複数のモードを説明します。

この場合、neverは括弧で囲まれているため、

はすでにアクティブです:

always madvise [never] 

sysfsは機能します。詳細については、ウィキペディアまたは Linuxカーネルドキュメントをご覧ください。 。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です