題 哪個linux文件系統最適合SSD


來自維基:

Linux OS支持重要的TRIM功能   2.6.33內核(2010年初可用)。但是,各種文件系統之間的支持仍然不一致或不存在。適當的分區   對齊也不是由安裝軟件執行的。

那麼,哪個文件系統最適合SSD並且在安裝期間支持TRIM +分區對齊,並且可以在Ubuntu上使用?


113
2018-01-03 17:44


起源




答案:


文件系統EXT4 + TRIM:

  • 帶有TRIM的EXT4通過減少不必要的寫入來提高性能 循環到SSD驅動器,因為它們限制了寫重寫週期。
  • Ubuntu和其他一些Linux版本支持EXT 4和TRIM開箱即用。

SWAP分區:

  • 確保SSD上沒有SWAP空間,再次減少 寫週期。
  • 如果您有機械驅動器,那麼您應該創建一個SWAP空間 在機械驅動器上,並避免在SSD上。

分區對齊:

  • 分區應該從乾淨的1MB邊界開始,以便塊大小 Filesystem與SSD的塊大小對齊。

所以用 EXT4 + TRIM 在機械硬盤驅動器上使用SWAP或在SSD上沒有SWAP。

以上內容可參考資料來源實施: 如何最大化SSD性能


87
2017-08-30 06:05



GPT是使用的現代方法 gdisk & grub 2.0.x,(我猜有人在回答中提到了它),而MBR是使用舊版本的傳統方法 grub 0.9.7 和 fdisk..你可以在這裡找到更多: wiki.archlinux.org/index.php/Solid_State_Drives - aliasgar
沒有必要指定 nodiratime 當你還指定 noatime。同意,它看起來很酷,並且對老練的書呆子很高興,但從那以後 noatime 禁用inode上的atime,目錄也是inode,就像說 “洗手,洗你的拇指”。 :) - Redsandro
根據經驗,我可以說沒有調度程序(“noop”)比截止日期更快。 - drumfire
不,“Linux交換分區 當底層塊設備支持TRIM時,默認情況下執行TRIM操作,可以關閉它們,或者在一次性或連續TRIM操作之間進行選擇。“因此交換分區應放在SSD上以利用快速訪問時間,這將導致每次頁面交換發生很多時間 - phuclv
@Totor正如鍊接中所提到的,我們還將從其他地方粘貼的整個答案文件歸檔為抄襲。 (或者以不同的方式稱呼它,但即使有歸屬也是不可接受的)。請進一步向Meta提問。我將刪除這個偏離主題的線程。 - slhck


簡短的回答

  • 選擇 EXT4,或者 用它安裝它 discard 選項 修剪 支持,或使用FITRIM (見下文)。也用 noatime 如果您擔心“SSD磨損”,請選擇。

  • 不要更改默認I / O調度程序(CFQ) 在多應用程序服務器上,因為它提供了進程之間的公平性,並具有自動SSD支持。然而, 使用截止日期 在桌面上 在負載下獲得更好的響應能力。

  • 為了輕鬆保證正確的數據對齊, 每個分區的起始扇區必須是2048的倍數 (= 1 MiB)。您可以使用 fdisk -cu /dev/sdX 創造它們。在最近的發行版中,它會自動為您解決此問題。

  • 在使用SSD上交換之前請三思。 與硬盤上的交換相比,它可能會快得多,但它也會更快地磨損磁盤(這可能不相關,見下文)。

答案很長

  • 文件系統:

EXT4 是最常見的Linux文件系統(維護良好)。它提供了良好的SSD性能,並支持 修剪 (和FITRIM)功能可以保持良好的SSD性能(這可以清除未使用的內存塊,以便以後快速寫入訪問)。 NILFS 是專為閃存驅動器設計的,但確實如此    表現要好於 EXT4 在基准上。 BTRFS 仍然被認為是實驗性的(並沒有真正表現更好 )。

  • SSD性能和TRIM:

修剪 功能清除文件系統不再使用的SSD塊。這將優化長期寫入性能,並且由於其設計,建議在SSD上使用。這意味著文件系統必須能夠告訴驅動器這些塊。該 discard掛載選項 EXT4 會發出這樣的 修剪 釋放文件系統塊時的命令。這是 在線丟棄

但是,此行為意味著一點性能開銷。從Linux 2.6.37開始,您可以避免使用 discard 並選擇偶爾做 批量丟棄 而改為使用FITRIM(例如來自crontab)。該 fstrim 實用程序(在線),以及 -E discard 的選擇 fsck.ext4。但是,您需要這些工具的“最新”版本。

  • SSD磨損:

您可能希望限制驅動器上的寫入,因為SSD在這方面的使用壽命有限。 不過不要太擔心,今天最差的128 GB SSD可以支持 至少 每天20 GB的書面數據超過5年(每個單元1000個寫週期)。更好的(以及更大的)可以持續更長時間:你很可能已經取代它了。

如果你想使用 交換 在SSD上,內核會注意到一個非旋轉磁盤 隨機化交換使用 (內核級磨損均衡):你會看到一個 SS 啟用交換時內核消息中的(固態):

在/ dev / sda1上添加2097148k交換。優先級:-1範圍:1   對:2097148k SS

  • I / O調度程序:

另外,我同意大部分內容 aliasgar的回答(即使大部分都是-illegally? - 從中復制 這個網站),但我必須部分不同意 調度 部分。默認情況下,截止日期調度程序  優化旋轉磁盤,因為它實現了 電梯算法。所以,讓我們澄清這一部分。

調度員的長期答案

從內核2.6.29開始,自動檢測SSD磁盤,您可以通過以下方式驗證:

cat /sys/block/sda/queue/rotational

你應該得到 1 對於硬盤和 0 對於SSD。

現在,CFQ調度程序可以根據此信息調整其行為。從linux 3.1開始,內核文檔 cfq-iosched.txt 文件

CFQ對SSD有一些優化,如果它檢測到非旋轉   可以支持更高隊列深度的媒體(in   一次飛行),[...]。

此外,截止日期調度程序會根據扇區號嘗試限制旋轉磁盤上的無序磁頭移動。引用內核doc deadline-iosched.txtfifo_batch  選項說明

請求被分組為特定數據方向的“批次”   (讀或寫)以增加的扇區順序提供服務。

但是,使用SSD時將此參數調整為1可能很有趣:

此參數調整每個請求延遲和之間的平衡   總吞吐量。當低延遲是主要關注點時,   越小越好(價值1先到先得   行為)。增加fifo_batch通常可以提高吞吐量   延遲變化的代價。

一些 基準  建議   不同的調度程序之間的性能差別不大。那麼,為什麼不推薦 公平?什麼時候 CFQ在替補席上很少出現差點。但是,在桌面設置上,您通常會體驗到 使用截止日期更好的響應能力 在負載下,由於其設計(儘管可能在較低的吞吐量成本)。

也就是說,更好的基準測試會嘗試使用Deadline fifo_batch=1

默認情況下,要在SSD上使用Deadline,您可以創建一個文件 /etc/udev.d/99-ssd.rules 如下:

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"

63
2018-02-12 23:45



在最近的發行版中,分區對齊是什麼意思自動處理?在例如使用手動分區時是否也適用ubuntu安裝或通過gparted進行分區時? - jarno
@jarno在最近的發行版中(幾年來),分區工具,從fdisk到圖形化的東西,往往會自動默認為從設備啟動創建1Mb的倍數的分區對齊。這預先與512byte,4k,8k和半個其他塊/簇大小對齊,其本質上是2 ^ n。它使得幾乎不可能錯誤地對齊分區,除非您付出了相當大的努力。 - killermist


archlinux文章 固態硬盤 在該部分說 文件系統的選擇 :

文件系統存在許多選項,包括Ext2 / 3/4,Btrfs等。

BTRFS 
Btrfs支持已包含在Linux內核的主線2.6.29版本中。有些人認為它不夠成熟   用於生產用途,同時也有早期採用者   ext4的潛在繼承者。鼓勵用戶閱讀    BTRFS 文章了解更多信息。

EXT4 
Ext4是另一個支持SSD的文件系統。它自2.6.28起被認為是穩定的,並且足夠成熟以供日常使用。   與Btrfs相反,ext4不會自動檢測磁盤性質;   用戶必須使用顯式啟用TRIM命令支持   在fstab中丟棄掛載選項(或使用tune2fs -o discard / dev / sdaX)。

Btrfs和Ext4都滿足了有效使用SSD的兩個主要要求:

  • 文件系統必須能夠發出ATA_TRIM命令 底層SSD
  • 文件系統不得對磁盤執行不必要的寫入操作

為了提高性能,還有另外兩個要求:

  • 分區需要與SSD的塊大小對齊
  • 必須為每個Ext4格式的分區顯式啟用TRIM

對於大多數Linux安裝程序來說,第一個現在是自動的。 如果以“-cu”標誌啟動,fdisk還將在1024KB邊界創建分區。

第二個是Btrfs的自動,但對於Ext4,這是由手動完成的 將“discard”添加到“/ etc / fstab”文件中每個Ext4分區的掛載選項列表中。 有關詳細信息,請參閱此 如何

在我看來,這需要為Ext4擺弄fstab 沒有理由不使用這個成熟而優秀的文件系統。


12
2017-08-30 05:59





BTRFS IMO。 Ubuntu 8.04及更高版本包含了可識別GPT的GRUB版本。使用GPT和Gdisk,它將為您調整分區。我相信fdisk也會做到這一點。

無論如何,這裡是BTRFS文件系統上的Ubuntu安裝的鏈接。

http://www.linuxbsdos.com/2011/05/05/how-to-install-ubuntu-11-04-on-a-btrfs-file-system/

希望有所幫助。


-2
2017-08-29 20:56