Linuxでフラッシュドライブを使用している場合は、フラッシュドライブの磨耗を減らすためにいくつかのことができます(書き換えサイクルの数が限られているため)。
- ext3ファイルシステムは、デフォルトでは、メタデータの変更を5秒ごとにディスクに書き込みます。 この期間は、commit = Nパラメーターを使用してファイルシステムをマウントすることで延長できます。このパラメーターは、N秒間書き込みを遅らせるようカーネルに指示します。
- カーネルは、読み取られた各ファイルに対して新しいアクセス時間を書き込みます。これにより、読み取りごとに1つの書き込み操作が生成されます。 これは、noatimeオプションを使用してファイルシステムをマウントすることで無効にできます。
- 上記の両方のアクションは、noatime、commit = 120、...オプションを/ etc / fstabファイルに追加することで設定できます。 これは、次のコマンドを実行して、既にマウントされているファイルシステムに対しても実行できます。
mount -o remount,noatime,commit=120 /
- システムは毎日updatedbを実行し、locateコマンドで使用するためにシステム内のすべてのファイルのデータベースを作成します。 これはファイルシステムにも悪影響を与えるため、以下を追加して無効にすることができます。
exit 0
スクリプト/etc/cron.daily/findの前半。 - syslogdは、デフォルトでは、新しい情報を追加した直後に大量のログをディスクに同期します。 /etc/syslog.confを変更して、各ファイル名が「-」記号(マイナス)で始まるようにすることができます。これは、ファイルが即座に同期されないことを意味します(これにより、システムがフリーズすると一部のメッセージが失われるリスクが高まります)。 たとえば、次のような行
kern.* /var/log/kern.log
次のように変更できます:
kern.* -/var/log/kern.log
- また、ファイルの代わりに/ dev / nullに書き込むことにより、一般的にいくつかのメッセージクラスを無効にすることもできます。詳細については、syslog.conf(5)を参照してください。
- Syslogdは、システムがまだ動作していることを示すために、20分ごとにログにMARKという行を書き込むことも好みます。 これを無効にするには、/ etc / default / syslogdのSYSLOGDオプションを次のように変更します。
SYSLOGD = "-m 0"
これらの変更を行った後、コマンドを実行してsyslogdを再起動する必要があります。
/etc/init.d/syslogd restart
- USBフラッシュドライブにスワップパーティションまたはスワップファイルがある場合、ドライブの別の部分に絶えず移動して、ドライブのさまざまな部分が頻繁に記録されるために同じ方法で消耗することを確認することができます。 スワップファイルの場合、古いスワップファイルを削除する前に新しいスワップファイルを作成することにより、これを行うことができます。
- スワップパーティションまたはスワップファイルをUSBフラッシュドライブに保存している場合、/ proc / sys / vm / swappinessを0に設定することで、使用量をできるだけ少なくすることができます。
- カーネルにはまた、laptop_mode(ラップトップモード)と呼ばれる設定があり、強制的にディスクへの書き込みを延期します(元々はノートブックのディスクが使用されていない間に停止できるようにするために作成されたため、名前です)。 / proc / sys / vm /ディレクトリ内のいくつかのファイルは、その(モード)操作を制御します。
- / proc / sys / vm / laptop_mode:データを読み取ってから、変更されたファイルの書き込みを開始するまでの秒数(これは、読み取りによって以前に停止したディスクが昇格されるという仮定に基づいています)。
- / proc / sys / vm / dirty_writeback_centisecs:カーネルがディスクに書き込む「ダーティ」(変更された)データがあるかどうかを確認する頻度(センチ秒単位)。
- / proc / sys / vm / dirty_expire_centisecs:ディスクに書き込むのに十分なほど古いとカーネルが判断するために、データをどの程度ダーティにする必要があります。 一般に、このオプションを上記のdirty_writeback_centisecsと同じ値に設定することをお勧めします。
- / proc / sys / vm / dirty_ratio:ダーティデータを生成したプロセスが強制的に書き込む前にダーティデータを保存するための最大メモリサイズ(パーセント単位)。 このパラメーターを高い値に設定しても問題はありません。システムのメモリーが不足した場合にも記録が行われるためです。
- / proc / sys / vm / dirty_background_ratio:ディスクに書き込む代わりにダーティデータを格納できるメモリの最小量(パーセント単位)。 このパラメータは、ダーティデータの断片を1回のパスで書き込むことができるように、dirty_ratioよりもはるかに小さくする必要があります。
上記のすべてのカーネルパラメーターは、この例のように、独自のブートスクリプトを使用して構成できます。 たとえば、/ etc / init.d / kernel-paramsに保存し、コマンドで実行可能にします
chmod a+x /etc/init.d/kernel-params
コマンドを使用して実行されることを確認してください
update-rc.d kernel-params defaults
備考 これらの設定のほとんどは、メモリ使用量を増やすことにより、ディスクへの書き込み回数を減らします。 これにより、メモリ不足のリスクが高まります(カーネルで「プロセスキラー」を引き起こす可能性があります)。 これは、利用可能な空きメモリがある場合でも発生する可能性があります(たとえば、カーネルが複数の連続ページを割り当てる必要があるが、断片化されたページのみが利用可能な場合)。
したがって、設定では、ワークロードに応じて空きメモリの量を監視し、これらの設定を変更することをお勧めします(より積極的でないキャッシュと増加したスワップを使用)。