Answers:
文件系统EXT4 + TRIM:
交换分区:
分区对齐:
因此,将EXT4 + TRIM与机械硬盘上的SWAP一起使用,或者将SSD上的SWAP一起使用。
可以通过参考资料来源:如何最大化SSD性能来实现以上内容。
nodiratime
当您还指定时,无需指定noatime
。同意,它看起来很酷,对同龄人也很高级,但是由于noatime
在inode上禁用了atime,并且目录也是inode,所以就像说“洗手,也洗手”。:)
选择ext4,然后使用支持TRIM的discard
选项将其安装,或使用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,仍处于实验(并没有真正有更好的表现无论是)。
该TRIM功能,清除未通过文件系统不再使用的SSD模块。这将优化长期写入性能,并且由于其设计,建议在SSD上使用。这意味着文件系统必须能够将这些块告知驱动器。释放文件系统块时discard
,ext4的mount选项将发出此类TRIM命令。这是在线丢弃。
但是,此行为意味着少许性能开销。从Linux 2.6.37开始,您可以避免使用FITRIM discard
并选择使用FITRIM 进行偶尔的批处理丢弃(例如从crontab中进行)。该fstrim
实用程序(在线)以及的-E discard
选项进行此操作fsck.ext4
。但是,您将需要这些工具的“最新”版本。
您可能想限制驱动器上的写入,因为SSD在这方面的寿命有限。不过,不必太担心,当今最糟糕的128 GB SSD可以在 5年以上的时间内每天至少支持20 GB的写入数据(每个单元1000个写入周期)。更好的(甚至更大的)可以持续更长的时间:到那时您很可能已经取代了它。
如果要在SSD 上使用交换,内核将注意到不旋转的磁盘,并且将随机使用交换(内核级别的磨损均衡):SS
启用交换后,您将在内核消息中看到(固态):
在/ dev / sda1上添加2097148k交换。优先级:-1范围:1跨度:2097148k SS
另外,我也同意aliasgar的大多数回答(即使大部分答案都已经从该网站“非法”复制了),但在计划程序部分,我必须部分不同意。默认情况下,期限调度是用于将旋转磁盘优化,因为它实现了电梯算法。因此,让我们澄清这一部分。
从内核2.6.29开始,将自动检测SSD磁盘,您可以使用以下方法进行验证:
cat /sys/block/sda/queue/rotational
您应该获得1
硬盘和0
SSD。
现在,CFQ调度程序可以根据此信息调整其行为。从linux 3.1开始,内核说明cfq-iosched.txt
文件说:
CFQ对SSD进行了一些优化,如果它检测到可以支持更高队列深度(一次在飞行中有多个请求)的非旋转媒体,则[...]。
同样,截止期限调度程序尝试根据扇区号限制旋转磁盘上无序的磁头移动。引用内核文档deadline-iosched.txt
,fifo_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"
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的两个主要要求:
为了提高性能,还有两个其他要求:
如今,第一个自动安装在大多数Linux安装程序中。如果以“ -cu”标志开头,fdisk还将在1024KB边界创建分区。
第二种对于Btrfs是自动的,但是对于Ext4,这是通过在“ / etc / fstab”文件中每个Ext4分区的安装选项列表中添加“丢弃”来手动完成的。欲了解更多详细信息,请参阅本HOWTO。
在我看来,Ext4几乎不需要摆弄fstab,这是没有理由不使用这种成熟而出色的文件系统。
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/
希望能有所帮助。
gdisk
&的现代方法grub 2.0.x
(我想有人在下面的答案中提到了它),而MBR是使用旧的grub 0.9.7
和fdisk
.. 的传统方法,您可以在这里找到更多信息:wiki.archlinux.org/index.php/Solid_State_Drives