參考書目

參考書目

在非正式(即新聞)技術媒體以及線上技術部落格和討論論壇中,人們經常會遇到一些軼事建議,即在硬碟或固態硬碟上留出一定的可用空間。對此給出了各種原因,或者有時根本沒有原因。因此,這些說法雖然在實踐中可能是合理的,但卻帶有一種神秘的氣息。例如:

  • 「一旦您的磁碟已滿 80%,您就應該考慮它們滿的,您應該立即刪除內容或升級。如果他們擊中90%滿了,你應該認為你自己的褲子著火了,並立即採取適當的反應來補救。 (來源.)

  • “為了保持垃圾收集以最高效率進行,傳統建議的目標是保持 20% 到 30% 的驅動器為空。” (來源.)

  • “有人告訴我,為了獲得更好的性能,我應該在 HD 上留出大約 20% 的空閒空間,但當 HD 接近滿時,速度確實會變慢。” (來源.)

  • 「你應該為交換文件和臨時文件留出空間。我目前保留了 33% 的空閒空間,並且發誓不會讓可用硬碟空間低於 10GB。 (來源.)

  • “我想說通常是 15%,但是現在硬碟有多大,只要你有足夠的空間來存儲臨時文件和交換文件,從技術上講,你就是安全的。” (來源.)

  • “我建議在 Windows 上使用 10% 以上,因為如果運行碎片整理時驅動器上沒有那麼多可用空間,碎片整理就不會運行。” (來源.)

  • “通常需要留出 10% 左右的空閒空間,以避免碎片化。” (來源.)

  • “如果您的驅動器的容量始終超過 75% 或 80%,則值得考慮升級到更大的 SSD。” (來源.)

是否有任何研究(最好發表在同行評審的期刊上)研究作業系統、檔案系統和儲存技術(例如磁碟與固態)的特定組合所需的可用空間的百分比或絕對量? (理想情況下,此類研究還可以解釋不超過特定已使用空間量的原因,例如為了防止系統耗盡交換空間,或避免性能損失。

如果您知道任何此類研究,如果您能回答並附上該研究的連結以及研究結果的簡短摘要,我將不勝感激。謝謝!

答案1

有沒有研究,最好發表在同儕審查的期刊上[…]?

為此,我們必須追溯到 20 年前的系統管理或其他領域。 30 多年前,這是一個熱門話題,至少在個人電腦和工作站作業系統領域是如此。當時 BSD 人們正在開發柏克萊快速檔案系統,而微軟和 IBM 正在開發高效能檔案系統。

創建者關於這兩個文件系統的文獻討論了這些文件系統的組織方式,以便區塊分配政策透過嘗試使連續的檔案區塊連續來產生更好的效能。您可以在有關該主題的當代文章中找到對此的討論,以及分配塊的可用空間的數量和位置會影響塊放置進而影響性能這一事實。

例如,從 Berkeley FFS 的區塊分配演算法的描述中應該是相當明顯的,如果當前和輔助柱面組中沒有空閒空間,則該演算法因此達到第四級回退(「應用詳盡的搜尋所有柱面組」),分配磁碟區塊的效能將受到影響,檔案碎片也會受到影響(因此讀取效能也會受到影響)。

正是這些和類似的分析(這些分析遠非唯一旨在改進當時檔案系統設計佈局策略的檔案系統設計)是過去 30 年公認智慧的基礎。

例如:原始論文中的格言“FFS 卷應保持在90% 以下,以免性能受到影響”,這是基於創建者所做的實驗,即使在本世紀出版的有關Unix 文件系統的書籍中也可以發現不加批判地重複(例如,Pate2003,第 216 頁)。很少有人質疑這一點,儘管 Amir H. Majidimehr 實際上在一個世紀前就這樣做了,他說 xe 實際上沒有觀察到明顯的效果;尤其是因為習慣的 Unix 機制保留最後 10% 供超級用戶使用,這意味著 90% 已滿的光碟對於非超級用戶來說實際上是 100% 已滿反正 (Majidimehr1996,第 68 頁)。 Bill Calkins 也是如此,他建議在實踐中,在觀察低可用空間的性能影響之前,21 世紀的光碟尺寸可以填充高達99%,因為即使是1% 的現代尺寸光碟也足以擁有大量未碎片化的可用空間仍然可以玩(Calkins2002 p. 450)

後者是一個例子,說明公認的智慧是如何變得錯誤的。還有其他這樣的例子。正如 SCSI 和 ATA 世界一樣邏輯區塊尋址分區位元記錄而是把所有仔細的計算都拋到九霄雲外旋轉延遲在 BSD 檔案系統設計中,因此 SSD 的物理機制寧願將可用空間扔出窗外,這是適用於 Winchester 光碟的智慧。

對於 SSD,可用空間量在整個設備上,即跨光碟上的所有捲以及在他們之間,對性能和壽命都有影響。文件需要儲存在具有連續邏輯塊位址的塊中的想法的基礎被 SSD 沒有可旋轉的盤片和可查找的磁頭這一事實所削弱。規則再次改變。

對於 SSD,建議的最小可用空間量實際上是更多的比 33 年前透過溫徹斯特圓盤和伯克利 FFS 實驗得出的傳統 10% 更高。例如,阿南德·拉爾·辛皮 (Anand Lal Shimpi) 給出的是 25%。這種差異因必須是自由空間而變得更加複雜整個裝置,而 10% 的數字是在每個 FFS 磁碟區內,因此受到分割區程式是否知道修剪分割區表未指派給有效磁碟卷的所有空間的影響。

它也因 TRIM 感知檔案系統驅動程式等複雜性而變得更加複雜,這些驅動程式可以 TRIM 可用空間之內磁碟容量,以及 SSD 製造商本身也已經分配不同程度的預留空間對於垃圾收集和磨損均衡等各種用途,這甚至在設備外部(即主機)是不可見的。

參考書目

答案2

雖然我不能談論「同行評審期刊」發表的「研究」——而且我不想在日常工作中依賴這些——但我可以談論數百種產品的現實情況多年來在各種作業系統下運行的伺服器:

磁碟已滿會降低效能的原因有三:

  • 可用空間不足:考慮臨時檔案、更新等。
  • 檔案系統效能下降:如果沒有足夠的空間,大多數檔案系統的最佳檔案佈局能力都會受到影響
  • 硬體等級降級:沒有足夠可用空間的 SSD 和 SMR 磁碟將顯示吞吐量下降,甚至更糟的是延遲增加(有時會增加多個數量級)

第一點是微不足道的,特別是因為沒有理智的生產系統會在動態擴展和收縮文件時使用交換空間。

第二點在檔案系統和工作負載之間存在很大差異。對於具有混合工作負載的 Windows 系統,70% 的閾值非常有用。對於檔案很少但檔案很大的 Linux ext4 檔案系統(例如視訊廣播系統),這可能會達到 90+%。

第三點與硬體和韌體相關,但特別是帶有 Sandforce 控制器的 SSD 可能會在高寫入工作負載上退回到空閒區塊擦除,從而導致寫入延遲增加數千%。我們通常在分區層級留出 25% 的空閒空間,然後觀察到填充率​​低於 80%。

建議

我意識到我提到過如何確保強制執行最大填充率。一些隨機的想法,它們都不是「同儕審查」(付費的、偽造的或真實的),但全部來自生產系統。

  • 使用檔案系統邊界:/var不屬於根檔案系統。
  • 監控,監控,監控。如果適合您,請使用現成的解決方案,否則解析輸出df -h並拉響警鐘以防萬一。這可以讓您在安裝了自動升級並且在沒有自動刪除選項的情況下運行的根檔案系統上節省 30 個核心。
  • 首先權衡 fs 溢出的潛在破壞與增加 fs 的成本:如果您不在嵌入式裝置上,您可能只需將 4G 加倍即可獲得 root 權限。

答案3

是否有任何研究...針對作業系統、檔案系統和儲存技術的特定組合所需的可用空間的百分比或絕對量...?

在 20 年的系統管理生涯中,我從未遇到過詳細介紹各種配置的可用空間需求的研究。我懷疑這是因為計算機的配置多種多樣,由於可能的系統配置數量龐大,因此很難做到這一點。

要確定係統需要多少可用空間,必須考慮兩個變數:

  1. 防止不良行為所需的最小空間,它本身可能有一個流動的定義。

    請注意,僅通過此定義來定義所需的自由空間是沒有幫助的,因為這相當於說可以安全地以 80 英里/小時的速度駛向磚牆,直到與它發生碰撞。

  2. 儲存消耗的速率,這要求保留額外的可變空間量,以免系統在管理員有時間做出反應之前降級。

作業系統、檔案系統、底層儲存架構以及應用程式行為、虛擬記憶體配置等的特定組合給希望提供明確的可用空間需求的人帶來了相當大的挑戰。

這就是為什麼有這麼多「金塊」的建議。您會注意到他們中的許多人都圍繞特定配置提出建議。例如,“如果您的 SSD 在接近容量時會出現效能問題,請保持 20% 以上的可用空間。”

因為這個問題沒有簡單的答案,正確的辨識方法你的系統的最低可用空間要求是根據系統的特定配置考慮各種通用建議,然後設定閾值,對其進行監控,並願意根據需要進行調整。

或者您可以保留至少 20% 的可用空間。當然,除非您有一個由 SSD 和傳統硬碟組合支援的 42 TB RAID 6 卷以及預先分配的交換文件...(這對於認真的人來說是一個笑話。)

答案4

對於 SSD,應該留有一些空間,因為重寫率會增加並對磁碟的寫入效能產生負面影響。對於所有 SSD 磁碟來說,80% 的已滿容量可能是安全值,某些最新型號即使佔用 90-95% 的容量也可以正常運作。

https://www.howtogeek.com/165542/why-solid-state-drives-slow-down-as-you-fill-them-up/

相關內容