自宅のコンピューターでLinuxをアップグレードするときはいつでも、私が通常行うタスクのリストがあります。それらは何年にもわたって習慣になっています。ファイルをバックアップし、システムをワイプし、最初から再インストールし、ファイルを復元してから、お気に入りの追加アプリケーションを再インストールします。また、いくつかのシステム調整を行います。私はこれらの微調整のいくつかを長い間行ってきたので、最近、まだそれらを行う必要があるかどうか疑問に思いました。
1つの微調整はatime
、これはLinux上のすべてのファイルの3つのタイムスタンプの1つです(これについては後で詳しく説明します)。具体的には、atime
を無効にする価値があるのではないかと思いました。 最近のLinuxシステムでは。 atime
以降 ファイルにアクセスするたびに更新されますが、システムのパフォーマンスに大きな影響を与えたと理解しています。
最近、コンピューターをFedora 32にアップグレードし、atime
をオフにしました。 習慣から私のアップグレードされたシステムで。しかし、私はまだする必要がありましたか?私はそれをさらに調査することにしました。これが私が見つけたものです。
noatime
を理解するには 、一歩下がって、Linuxファイルシステムに関するいくつかのことと、カーネルがファイルとディレクトリにタイムスタンプを適用する方法を理解する必要があります。ファイルとディレクトリの最終更新日はすでにご存知でしょう。 ls -l
でそれを見ることができます (長い)ディレクトリリスト、またはファイルマネージャでファイルの詳細を確認する場合。しかし、舞台裏では、Linuxカーネルはファイルとディレクトリのいくつかのタイムスタンプを追跡します。
- ファイルが最後に変更された日時(
mtime
) - ファイルが最後に変更された日時(
ctime
) - ファイルが最後にアクセスされた日時(
atime
)
stat
を使用できます ファイルまたはディレクトリのこれらの詳細を表示するコマンド。これが/etc/fstab
の例です テストサーバーの1つにあるファイル:
$ stat fstab
File: fstab
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2097285 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
Birth: 2019-04-25 21:03:11.840496275 -0500
出力から、このファイルは、システムをインストールした2019年4月25日に作成されたことがわかります。私の/etc/fstab
ファイルの最終更新日は2019年5月16日で、他の属性もほぼ同時に変更されました。
/etc/fstab
をコピーした場合 新しいファイルに変更すると、日付が変更され、これが新しいファイルであることを示します。
$ sudo cp fstab fstab.bak
$ stat fstab.bak
File: fstab.bak
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
しかし、内容を変更せずにファイルの名前を変更した場合、Linuxはファイルの変更時刻のみを更新します。
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
File: fstab.tmp
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
これらのタイムスタンプは、特定のUnixプログラムで非常に役立ちます。たとえば、biffは、新しい電子メールメッセージが届いたときに通知するプログラムです。最近はbiffを使用している人はあまりいませんが、メールボックスがシステムに対してローカルであった時代には、biffは非常に一般的でした。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
受信トレイに新着メールがあるかどうかをプログラムはどのようにして知るのですか? Biffは、最終更新時刻(受信トレイファイルが新しいメールメッセージで更新されたとき)と最終アクセス時刻(最後にメールを読んだとき)を比較します。変更がアクセスよりも新しい場合、biffは、最後にメールを読んでからメールメッセージが到着したことを認識し、通知します。 Mutt電子メールクライアントは、新しいメッセージが到着したときにアラートを出すのと同じようなことをします。
その最終アクセス時刻は、ファイルシステムの統計とパフォーマンスの調整を行う必要がある場合にも役立ちます。大規模なLinuxシステムでは、管理者はファイルシステムを適切に調整できるように、何にアクセスされているかを知る必要がある場合があります。
ただし、最近のほとんどのプログラムでは最終アクセス時刻が不要になったため、それを使用しないという議論がありました。 2007年、LinusTorvaldsと他の数人のカーネル開発者がatime
について話し合いました。 とそのパフォーマンスの問題。 Linuxカーネル開発者のIngoMolnárは、atime
についてこの観察を行いました。 およびext3ファイルシステム:
すべてのLinuxデスクトップとサーバーが、一定のatime更新による顕著なIOパフォーマンスの低下によって損傷を受けているのに、実際のユーザーは2人だけです。tmpwatch[ctimeを使用するように構成できるため、大きな問題ではありません]といくつかのバックアップツール。 (わかりました。メールで通知してください。)数万のアプリケーションのうち。
しかし、人々はまだそれを必要とするいくつかのプログラムを使用しており、atime
を削除しています それらのユーザープログラムを壊すでしょう。そして、Linuxカーネル開発のルールは、ユーザースペースを壊さないことです。
Linuxディストリビューションには多くのソフトウェアアプリケーションが含まれており、ユーザーは特定のニーズに合わせて他のプログラムをダウンロードしてインストールできます。これがオープンソースオペレーティングシステムの主な利点です。しかし、それはファイルシステムのパフォーマンスを調整する上で物事をより困難にします。 atime
が必要ですか 、またはそれを削除すると、システム上の何かが壊れますか?
妥協案として、Linuxカーネル開発者は新しいメソッドrelatime
を実装しました パフォーマンスと互換性のバランスをとることを目的とした、わずかに異なるパフォーマンス測定値です。 mount
manページにはrelatime
について書かれています :
アクセス時間は、以前のアクセス時間が現在の変更または変更時間よりも前であった場合にのみ更新されます。 …Linux2.6.30以降、カーネルはデフォルトでこのオプションによって提供される動作になります(noatimeが指定されていない場合)…さらに、Linux 2.6.30以降、ファイルの最終アクセス時刻が1日以上経過すると常に更新されます。
つまり、最新のLinuxシステム(2009年にリリースされたLinux 2.6.30以降)はすでにrelatime
を使用しています。 、これにより、パフォーマンスが大幅に向上します。つまり、/etc/fstab
を微調整する必要はありません。 ファイルとrelatime
に依存することができます カーネルのデフォルト。
noatimeを使用したシステムパフォーマンスの調整
ただし、最大のパフォーマンスを得るためにシステムを微調整する場合は、atime
を無効にしてください。 2020年も引き続き有効なオプションです。
このパフォーマンスの調整は、非常に高速な最新のドライブ(NVMEや高速SSDなど)ではあまり目立たない場合がありますが、それでも少しブーストがあります。
atime
を必要とするソフトウェアを使用していないことがわかっている場合 、noatime
を設定すると、パフォーマンスがわずかに向上します。 /etc/fstab
で ファイル。これにより、カーネルは最終アクセス時刻を追跡しないようになり、パフォーマンスがわずかに低下してatime
が継続的に更新されるのを回避できます。 ファイルシステム内。 noatime
を追加します Linuxファイルシステムのオプションとして、通常はデフォルトのエントリの後:
/dev/mapper/fedora_localhost--live-root / ext4 defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot ext4 defaults,noatime 1 2
UUID=C594-12B1 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home ext4 defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none swap defaults,x-systemd.device-timeout=0 0 0
これは、次に再起動したときに有効になります。