从Wiki:



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


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

#1 楼

简短答案


选择ext4,并使用discard选项将其安装以支持TRIM,或使用FITRIM(请参见下文)。如果您担心“ SSD磨损”,也请使用noatime选项。
请勿在多应用程序服务器上更改默认的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上使用。这意味着文件系统必须能够将这些块告知驱动器。释放文件系统块时,ext4的discard挂载选项将发出此类TRIM命令。这是在线丢弃。

但是,此行为意味着少许性能开销。从Linux 2.6.37开始,您可以避免使用discard,而选择不定期使用FITRIM进行批量废弃(例如,从crontab中进行)。 fstrim实用程序以及-E discardfsck.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,对于SSD,应该得到0

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


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


此外,截止期限调度程序尝试限制无序头部根据扇区号在旋转磁盘上的移动。引用内核文档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年9月17日下午13:20

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

– Killermist
2015年12月2日在22:17

#2 楼

带有TRIM的文件系统EXT4 + TRIM:


EXT4通过减少对SSD驱动器的不必要的写周期来改善性能,因为它们限制了写重写周期。
Ubuntu和一些其他Linux版本支持现成的TRIM的EXT4。

SWAP分区:


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

分区对齐方式:


分区应从干净的1MB边界开始,以使文件系统的块大小
与SSD的块大小对齐。

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

以上内容可以通过参考来源:如何最大化SSD性能来实现。 br />

评论


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

–aliasgar
2012年8月30日7:03



当您还指定noatime时,无需指定nodiratime。同意,它看起来很酷,对书呆子也很先进,但是由于noatime禁用了inode上的atime,并且目录也是inode,所以就像说“洗手,也洗手”。 :)

– Redsandro
2013年6月23日12:23在

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

–drumfire
13年7月1日在12:43

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

–phuclv
15年3月21日在7:17

@aliasgar F2FS和ext4是一个不错的选择吗?

–SebMa
18年11月13日在12:23

#3 楼

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中丢弃挂载选项(或与tune2fs -o丢弃/ dev / sdaX一起使用)。


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

文件系统必须能够向底层SSD发出ATA_TRIM命令
文件系统不得对磁盘执行不必要的写入操作

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


分区必须与SSD的块大小对齐
必须为每个Ext4格式化分区显式启用
TRIM >
第一个现在对于大多数Linux安装程序都是自动的。
如果以“ -cu”标志开头,fdisk还将在1024KB边界创建分区。

第二个是对于Btrfs是自动的,但是f或Ext4,可通过
在“ / etc / fstab”文件中的每个Ext4分区的安装选项列表中添加“丢弃”来手动完成。
有关更多详细信息,请参见此方法。

我认为,这对于Ext4几乎不需要fstab摆弄。
没有理由不使用这种成熟而出色的文件系统。

#4 楼

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 /

希望有帮助。