noatime 選項如何以及為何提升 Linux 系統的效能

Atime更新會影響系統效能。 那裡發生了什麼以及該怎麼辦 - 閱讀這篇文章。

noatime 選項如何以及為何提升 Linux 系統的效能
每當我在家裡的電腦上更新 Linux 時,我都必須解決某些問題。 多年來,這已經成為一種習慣:我備份文件,擦除系統,從頭開始安裝所有內容,恢復文件,然後重新安裝我最喜歡的應用程式。 我還更改了系統設定以適合自己。 有時需要太多時間。 最近我想知道我是否需要這種頭痛。

一次 是 Linux 中檔案的三個時間戳之一(稍後會詳細介紹)。 特別是,我想知道在較新的 Linux 系統上停用 atime 是否仍然是一個好主意。 由於每次存取文件時 atime 都會更新,因此我意識到它對系統效能有重大影響。
我最近升級到了 Fedora 32,出於習慣,我首先禁用了 atime。 我想:我真的需要它嗎? 我決定研究這個問題,這就是我挖掘的內容。

關於文件時間戳記的一些知識

要弄清楚這一點,您需要退後一步並記住有關 Linux 檔案系統以及核心如何為檔案和目錄添加時間戳記的一些知識。 您可以透過執行命令查看檔案和目錄的最後修改日期 ls -l(長) 或簡單地透過在文件管理器中查看有關它的資訊。 但在幕後,Linux 核心會追蹤檔案和目錄的多個時間戳記:

  1. 文件上次修改時間是什麼時候 (mtime)
  2. 上次更改檔案屬性和元資料是什麼時候 (ctime)
  3. 文件上次造訪是什麼時候 (atime)
  4. 你可以使用命令 統計查看有關文件或目錄的資訊。 這是文件 / etc / fstab文件 來自我的一台測試伺服器:

$ 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

這裡可以看到這個檔案是我25年2019月XNUMX日安裝系統時所建立的。 我的檔案 / etc / fstab文件 最後一次修改是在 16 年 2019 月 XNUMX 日,所有其他屬性大約在同一時間進行了更改。

如果我複製 / 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 比較上次修改時間(當收件匣檔案更新為新電子郵件時)和上次造訪時間(您上次閱讀電子郵件的時間)。 如果更改發生在訪問之後,那麼 biff 就會知道有新信件已到達,並將通知您。 Mutt 電子郵件用戶端的工作方式大致相同。

如果您需要收集檔案系統使用情況統計資料並調整效能,則上次存取時間戳記也很有用。 系統管理員需要知道正在存取哪些對象,以便他們可以相應地設定檔系統。

但大多數現代程式不再需要這個標籤,因此有人建議不要使用它。 2007 年,Linus Torvalds 和其他幾位核心開發人員在效能問題的背景下討論了 atime。 Linux 核心開發人員 Ingo Molnar 對 atime 和 ext3 檔案系統提出了以下觀點:

「很奇怪的是,由於不斷的atime 更新,每個Linux 桌面和伺服器都會遭受明顯的I/O 效能下降,即使只有兩個真正的用戶:tmpwatch [可以配置為使用ctime,所以這不是一個大問題] 和一些備份工具。”

但人們仍然使用一些需要這個標籤的程式。 因此刪除 atime 會破壞它們的功能。 Linux核心開發者不應該侵犯使用者自由。

所羅門的解決方案

Linux發行版中包含了許多應用程序,此外,用戶還可以根據自己的需求下載並安裝其他程式。 這是開源作業系統的關鍵優勢。 但這使得優化檔案系統的效能變得困難。 刪除資源密集型組件可能會破壞系統。

作為折衷方案,Linux 核心開發人員引入了新的中繼時間選項,旨在在效能和相容性之間取得平衡:

atime 僅在上次存取時間小於目前修改或狀態變更時間時才會更新...從 Linux 2.6.30 開始,核心預設使用此選項(除非指定了 noatime)...另外,從 Linux 2.6.30 開始。1 、如果文件的最後存取時間超過XNUMX 天,則始終更新該文件。

現代 Linux 系統(自 2.6.30 年發布的 Linux 2009 起)已經使用了中繼時間,這應該會帶來非常大的效能提升。 這意味著您不需要配置該文件 / etc / fstab文件,並且使用中繼時間,您可以依賴預設值。

使用 noatime 提高系統效能

但如果您想調整系統以獲得最佳效能,停用 atime 仍然是可能的。

在非常快速的現代驅動器(例如 NVME 或快速 SSD)上,效能變化可能不是很明顯,但有一個小幅增加。

如果您知道自己沒有使用需要 atime 的軟體,則可以透過啟用檔案中的 noatime 選項來稍微提高效能 /etc/fstab。 此後,核心將不會不斷更新atime。 掛載檔案系統時使用 noatime 選項:

/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

變更將在您下次重新啟動時生效。

論廣告的權利

您需要伺服器來託管您的網站嗎? 我公司提供 可靠的伺服器 每日或一次性付費,每台伺服器都連接到500兆位元的網路通道,並免費抵禦DDoS攻擊!

noatime 選項如何以及為何提升 Linux 系統的效能

來源: www.habr.com

添加評論