哪个Linux文件系统最适合SSD


119

从维基:

从2.6.33内核开始(在2010年初提供),Linux OS支持至关重要的TRIM功能。但是,各种文件系统之间的支持仍然不一致或不存在。安装软件也无法正确进行分区对齐。

那么,哪个文件系统最适合SSD,并在安装过程中支持TRIM +分区对齐,并且在Ubuntu上可用?

Answers:


89

文件系统EXT4 + TRIM:

  • 带有TRIM的EXT4通过减少对SSD驱动器的不必要的写周期来提高性能,因为它们限制了写重写周期。
  • Ubuntu和其他一些Linux版本开箱即用,支持EXT 4。

交换分区:

  • 请再次确保SSD上没有SWAP空间,以减少写入周期。
  • 如果您有机械驱动器,则应在机械驱动器上创建一个SWAP空间,并避免将其放置在SSD上。

分区对齐:

  • 分区应从干净的1MB边界开始,以便文件系统的块大小与SSD的块大小一致。

因此,将EXT4 + TRIM与机械硬盘上的SWAP一起使用,或者将SSD上的SWAP一起使用。

可以通过参考资料来源:如何最大化SSD性能来实现以上内容


GPT是使用gdisk&的现代方法grub 2.0.x(我想有人在下面的答案中提到了它),而MBR是使用旧的grub 0.9.7fdisk.. 的传统方法,您可以在这里找到更多信息:wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
nodiratime当您还指定时,无需指定noatime。同意,它看起来很酷,对同龄人也很高级,但是由于noatime在inode上禁用了atime,并且目录也是inode,所以就像说“洗手,也洗手”。:)
Redsandro

根据经验,我可以说没有调度程序(“ noop”)的工作速度快于截止日期。
drumfire

5
不,“ 当基础块设备支持TRIM时,Linux交换分区默认情况下会执行TRIM操作,并且可以关闭它们,或者在一次或连续TRIM操作之间进行选择。” 因此应将交换分区放在SSD上,以利用快速访问时间,这会导致每个页面交换发生大量时间
phuclv 2015年

2
@aliasgar F2FS和ext4是一个不错的选择吗?
SebMa '18年

67

简短答案

  • 选择ext4,然后使用支持TRIMdiscard选项将其安装,或使用FITRIM(请参见下文)。noatime如果您担心“ SSD磨损”,也请使用该选件。

  • 请勿在多应用程序服务器上更改默认的I / O调度程序(CFQ),因为它在进程之间提供了公平性并具有自动SSD支持。但是,在桌面使用Deadline可以在负载下获得更好的响应速度。

  • 为了轻松保证正确的数据对齐,每个分区的起始扇区必须为2048的倍数(= 1 MiB)。您可以fdisk -cu /dev/sdX用来创建它们。在最近的发行版中,它将自动为您解决此问题。

  • 在SSD上使用交换之前,请三思。与在HDD上进行交换相比,它可能要快得多,但也会使磁盘磨损得更快(可能不相关,请参见下文)。

长答案

  • 文件系统:

Ext4是最常见的Linux文件系统(维护良好)。它可通过SSD提供良好的性能,并支持TRIM(和FITRIM)功能,以确保随时间推移保持良好的SSD性能(这会清除未使用的内存块,以便日后快速进行写访问)。NILFS是专为闪存驱动器而设计的,但在基准测试中并不能 真正ext4更好。BTRFS,仍处于实验(并没有真正有更好的表现无论是)。

  • SSD性能和TRIM:

TRIM功能,清除未通过文件系统不再使用的SSD模块。这将优化长期写入性能,并且由于其设计,建议在SSD上使用。这意味着文件系统必须能够将这些块告知驱动器。释放文件系统块时discardext4的mount选项将发出此类TRIM命令。这是在线丢弃

但是,此行为意味着少许性能开销。从Linux 2.6.37开始,您可以避免使用FITRIM discard并选择使用FITRIM 进行偶尔的批处理丢弃(例如从crontab中进行)。该fstrim实用程序(在线)以及的-E discard选项进行此操作fsck.ext4。但是,您将需要这些工具的“最新”版本。

  • SSD磨损:

您可能想限制驱动器上的写入,因为SSD在这方面的寿命有限。不过不必太担心,当今最糟糕的128 GB SSD可以 5年以上的时间内每天至少支持20 GB的写入数据(每个单元1000个写入周期)。更好的(甚至更大的)可以持续更长的时间:到那时您很可能已经取代了它。

如果要在SSD 上使用交换,内核将注意到不旋转的磁盘,并且将随机使用交换(内核级别的磨损均衡):SS启用交换后,您将在内核消息中看到(固态):

在/ dev / sda1上添加2097148k交换。优先级:-1范围:1跨度:2097148k SS

  • I / O调度程序:

另外,我也同意aliasgar的大多数回答(即使大部分答案都已经从该网站“非法”复制了),但在计划程序部分,我必须部分不同意。默认情况下,期限调度用于将旋转磁盘优化,因为它实现了电梯算法。因此,让我们澄清这一部分。

调度程序的长答案

从内核2.6.29开始,将自动检测SSD磁盘,您可以使用以下方法进行验证:

cat /sys/block/sda/queue/rotational

您应该获得1硬盘和0SSD。

现在,CFQ调度程序可以根据此信息调整其行为。从linux 3.1开始,内核说明cfq-iosched.txt文件

CFQ对SSD进行了一些优化,如果它检测到可以支持更高队列深度(一次在飞行中有多个请求)的非旋转媒体,则[...]。

同样,截止期限调度程序尝试根据扇区号限制旋转磁盘上无序的磁头移动。引用内核文档deadline-iosched.txtfifo_batch 选项说明

请求被分组为特定数据方向(读或写)的``批次'',以递增的扇区顺序进行服务。

但是,在使用SSD时将此参数调整为1可能很有趣:

此参数调整每个请求的延迟与总吞吐量之间的平衡。当低延迟是主要考虑因素时,越小越好(值1产生先到先得的行为)。增加fifo_batch通常以延迟变化为代价提高吞吐量。

一些基准测试 表明 不同调度程序之间的性能差异很小。那么,为什么不建议公平呢?当CFQ在替补席上很少坏的时候。但是,在台式机设置上,由于其设计,通常在负载下使用Deadline时,您会体验到更好的响应速度(尽管吞吐量成本可能较低)。

也就是说,更好的基准测试将尝试将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"

您会在最近的发行版中自动处理分区对齐是什么意思?当您在ubuntu安装过程中使用手动分区或通过gparted进行分区时,它也适用吗?
jarno 2015年

2
@jarno在最近的发行版(至今已有数年)中,从fdisk一直到图形化事物的分区工具,往往会自动默认为从设备开始以1Mb的倍数创建分区对齐方式。这可抢先地与512byte,4k,8k和半个其他非自然的2 ^ n块/集群大小对齐。除非您付出很大的努力,否则几乎不可能对分区未对齐。
killermist 2015年

13

archlinux文章Solid State Drives在“ 选择文件系统 ”部分中说:

文件系统存在许多选项,包括Ext2 / 3/4,Btrfs等。

Btrfs
Btrfs支持已包含在Linux内核的主线2.6.29版本中。有人认为它还不够成熟,无法用于生产,而ext4的潜在继任者也早有采用者。鼓励用户阅读 Btrfs文章以获取更多信息。

Ext4
Ext4是另一个支持SSD的文件系统。从2.6.28开始,它被认为是稳定的,并且足够成熟,可以日常使用。与Btrfs相反,ext4不会自动检测磁盘的性质。用户必须使用fstab中的discard mount选项(或使用tune2fs -o throws / dev / sdaX)显式启用TRIM命令支持。

Btrfs和Ext4都满足有效使用SSD的两个主要要求:

  • 文件系统必须能够向基础SSD发出ATA_TRIM命令
  • 文件系统不得对磁盘执行不必要的写入

为了提高性能,还有两个其他要求:

  • 分区需要与SSD的块大小对齐
  • 必须为每个Ext4格式化分区显式启用TRIM

如今,第一个自动安装在大多数Linux安装程序中。如果以“ -cu”标志开头,fdisk还将在1024KB边界创建分区。

第二种对于Btrfs是自动的,但是对于Ext4,这是通过在“ / etc / fstab”文件中每个Ext4分区的安装选项列表中添加“丢弃”来手动完成的。欲了解更多详细信息,请参阅本HOWTO

在我看来,Ext4几乎不需要摆弄fstab,这是没有理由不使用这种成熟而出色的文件系统。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.