Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

时间:2022-09-17 09:59:06

因为之前一个移动硬盘因为坏道蔓延导致没办法继续使用,我略冲动地跑去买了一块 120GB 的三星840 固态硬盘回来。为了使用起来更方便,还去弄了个光驱位硬盘托架,把固态硬盘接在了光驱位与原本的笔记本硬盘一起工作。机械硬盘装 Win7 兼作备份盘,固态硬盘则安装了 Ubuntu。

在买固态硬盘前我是做了些功课的,了解到要使固态硬盘发挥出它应有的性能以及延长它的寿命,需要对它进行 4K 对齐并且开启 Trim。

先说说这个 4K 对齐。有人说用 GParted 直接分区会自动进行 4K 对齐,而更普遍的说法则是分区时在 “Free Space Preceding” 处填上一个整数(比如1或2,如下图)。我使用了后面那个方法,因为我是装完系统才知道前面那个(更新:经测试前面那个方法是有效的)。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

测试是否 4K 对齐很简单,在终端运行 $sudo fdisk -l 然后查看各分区的起始扇区,如果是8的倍数则表明该分区已经“4K 对齐”了(如下图,Start 一栏的数值全部为8的倍数)。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

接下来就是启用 Trim。有两种方法可以让 Trim 运作,第一种是使用 Online Discard (fstab),另一种是使用 cron 按计划执行 fstrim。在启用 Trim 之前,首先要满足下面几个条件:

1. 系统内核版本大于等于 2.6.33
2. 所用的 SSD 支持 Trim
3. 分区格式为 ext4(或 BTRFS)
1
2
3
1. 系统内核版本大于等于 2.6.33
2. 所用的 SSD 支持 Trim
3. 分区格式为 ext4(或 BTRFS)

可以通过下面这个命令来查看所用的 SSD 是否支持 Trim:

sudo hdparm -I /dev/sdx | grep "TRIM supported"
# /dev/sdx 是 SSD 的设备名称,可以通过命令 $sudo fdisk -l 查看
# 如果回显 "* Data Set Management TRIM supported" 则表明 SSD 支持 Trim,没有返回内容则说明不支持
1
2
3
sudo hdparm -I /dev/sdx | grep "TRIM supported"
# /dev/sdx 是 SSD 的设备名称,可以通过命令 $sudo fdisk -l 查看
# 如果回显 "* Data Set Management TRIM supported" 则表明 SSD 支持 Trim,没有返回内容则说明不支持
使用 Online Discard (fstab)
1
使用 Online Discard (fstab)

在终端输入 $sudo gedit /etc/fstab,然后在 SSD 每个分区的选项中都加上 “discard”,比如我的 fstab 修改后是这样:

# /etc/fstab: static file system information.
#
# Use "blkid" to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=02353655-e525-4027-9f1d-aec4d880ed3f / ext4 discard,errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=131d0cfb-c5dc-4020-a3ba-6fc4c73c809c /boot ext4 discard,defaults 0 2
# /home was on /dev/sda3 during installation
UUID=001a7d33-bd16-4a81-a92c-edd810f04259 /home ext4 discard,defaults 0 2
# swap was on /dev/sda4 during installation
UUID=95f955ac-39d9-4a61-911a-84eed8897517 none swap sw 0 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# /etc/fstab: static file system information.
#
# Use "blkid" to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=02353655-e525-4027-9f1d-aec4d880ed3f / ext4 discard,errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=131d0cfb-c5dc-4020-a3ba-6fc4c73c809c /boot ext4 discard,defaults 0 2
# /home was on /dev/sda3 during installation
UUID=001a7d33-bd16-4a81-a92c-edd810f04259 /home ext4 discard,defaults 0 2
# swap was on /dev/sda4 during installation
UUID=95f955ac-39d9-4a61-911a-84eed8897517 none swap sw 0 0

这个方法比较简单,但是并不推荐这么做。Discard 选项启用后,文件系统上的文件一旦被删除,会立即通知 SSD 进行 Trim 操作,这就是online discard (立即删除)。在进行删除大量小文件的操作时可能会造成不小的性能下降,参见 Patrick 的博客文章

使用 cron 按计划执行 fstrim
1
使用 cron 按计划执行 fstrim

fstrim 是执行 Trim 操作的命令,配合 cron 可以让操作系统按计划执行 Trim 操作,每天一次。

首先在 /etc/cron.daily 目录下创建一个名为 trim 的文件:

sudo gedit /etc/cron.daily/trim
1
sudo gedit /etc/cron.daily/trim

往 trim 文件中粘贴如下内容:

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG
1
2
3
4
5
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

真正执行 Trim 操作的是最后两个命令,要根据实际情况进行修改。因为我的根目录和 home 目录在两个独立的分区,所以在这里使用了两个命令分别执行 fstrim。

最后给 trim 文件加一个可执行权限就可以了:

sudo chmod +x /etc/cron.daily/trim
1
sudo chmod +x /etc/cron.daily/trim

Ubuntu 会在每天早上 6:25 执行 cron 每日任务,如果当时电脑没有开机的话,任务仍然会在其它时间执行。日志文件保存在 /var/log/trim.log 中。

总的来说,4K 对齐与启用 Trim 都很简单。我安装完系统测得平均读取速度达到 280MB/S,逼近 SATA2 的理论上限。与原先的机械硬盘相比,不论是开机启动速度还是应用程序响应速度都得到了极大的改善!


于双系统
由于我是把 Windows 和 Ubuntu Linux 安装在了不同硬盘上,所以先安装哪个系统都不会造成困扰。如果 Ubuntu
是后安装,它应该会自动把 Windows 加入 GRUB 启动菜单;如果 Ubuntu 是先安装,搞定启动菜单也只是一条命令的事:$sudo
update-grub
GRUB 启动菜单默认的超时时间是 10 秒,这个时间可以在 /etc/default/grub
这个文件里修改(GRUB_TIMEOUT=10)。
1
2
3
关于双系统
由于我是把 Windows 和 Ubuntu Linux 安装在了不同硬盘上,所以先安装哪个系统都不会造成困扰。如果 Ubuntu 是后安装,它应该会自动把 Windows 加入 GRUB 启动菜单;如果 Ubuntu 是先安装,搞定启动菜单也只是一条命令的事:$sudo update-grub
GRUB 启动菜单默认的超时时间是 10 秒,这个时间可以在 /etc/default/grub 这个文件里修改(GRUB_TIMEOUT=10)。
 
 
 
文章2:    Linux下EXT4分区开启Trim及验证的方法
 
上次我玩Ubuntu发帖子后,看到有坛友提到对Trim是否支持的问题,这2天有点时间,所以就去查了下资料,目前可以确定内核版本为2.6.33及更 新的Linux,只要使用EXT4分区格式,是完全可以支持系统自动Trim功能的,具体的开启及验证方法,请大家慢慢看下去吧。

先说一下我现在的平台配置:
CPU:AMD Phenom II X4 955 BE(OC 4GHz)
主板:Gigabyte GA-890GPA-UD3H v1.0
内存:Crucial BLT4G3D1869DT2TXOB(4GB x 2)
SSD:Plextor(浦科特) M3P 128GB
显卡:HIS HD 4870 IceQ 4+ Turbo 1GB

这里我还是用Ubuntu 12.10来演示,安装好系统进入桌面后,运行命令行工具。Ubuntu就是UXTerm了。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

要在Linux下对SSD开启系统自动Trim功能,我们需要做的是修改文件系统的配置表,添加对应的分区格式参数。

不过文件系统配置表是非常重要的系统文件之一,如果修改错误,会导致无法再正常进入系统,所以我们要先做好备份,首先在命令行工具输入:

  1. sudo cp /etc/fstab ~/fstab-backup

复制代码

这行命令是把fstab文件复制并改名为fstab-backup的文件作为备份,输入并回车后会提示需要授权密码,正确输入密码后如下图,即代表操作成功。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

备份完毕我们就可以去修改fstab文件了,由于fstab是系统文件,如果直接在图形界面打开,是不允许编辑,因此我们需要用授权模式打开文件,在命令行界面输入以下命令:

  1. gksudo gedit /etc/fstab

复制代码

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

检测命令输入无误后回车便能看到弹出如下图的窗口

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

要开启自动Trim功能,我们需要在options一项的内容上添加对应的参数,EXT4分区需要添加的参数为:discard

新添加的参数跟原来的参数要加半角“,”来区分开,正确添加参数后如下图所示:

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

正确编辑好fatab文件后,我们只需要保存文件,重启电脑后自动Trim即会生效。
注意:编辑完后请仔细认真检查,确认无误后才保存文件并重启电脑,否则会导致挂载磁盘出错而无法正常进入系统。

在WIN7下,我们只需要确保3个条件成立就可以确定Trim是开启了的,但要验证却不甚容易(虽然一般也没需要特地去验证Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法),那linux呢?

Linux下其实有一个不太复杂的验证方式,大家请看下去。
首先我们重新打开命令行窗口,进入SSD分区下的目录。以我这里的home目录为例,则需要输入的命令为:cd /home

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

进入目录后,我们新建一个名为tempfil的临时文件,输入命令:

  1. sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct

复制代码

回车后同样需要输入授权密码,正确输入密码后,看到如下图的显示则表示文件已经创建成功。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

接着我们需要先查询到这个文件占用的LBA地址,输入命令:

  1. sudo hdparm --fibmap tempfile

复制代码

回车后看到下图,其中第1行中对应begin_LBA一项的数字就是我们需要的,先记下来。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

这里我顺道打开home目录给大家看一下,tempfile这个测试文件就被创建在这里。

然后我们还需要确认SSD的标识符,运行磁盘工具就能看到,如下图,我的M3P标识符为sde。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

在命令行界面继续输入命令:

  1. sudo hdparm --read-sector 41286656 /dev/sde

复制代码

大家请自行更换对应的LBA地址数字及硬盘标识符,然后会看到如下图,显示出一堆以16进制显示的数据。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

我们再输入以下2个命令以删除测试文件并要求系统同步向硬盘发出删除指令:

  1. sudo rm tempfile
  2. sync

复制代码

执行命令后,如下图,看到测试文件已经被删除了。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

上图看到测试文件已经被删除了。

然后我们再执行一次检查LBA地址数据的命令

  1. sudo hdparm --read-sector 41286656 /dev/sde

复制代码

如果列出的数据全部是0,那就代表自动Trim已经被正确开启了,但因为SSD对系统的Trim指令响应存在延迟的可能,有时会需要我们重复多几次的操作,才能看到全0的显示。如下图,我就是再重复创建并删除了1次文件后才获得这个结果。

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法

到此为止,我已经正常在Ubuntu 12.10内为我M3P的EXT4分区开启了自动Trim。

这里可能有人会问,如果是其它分区格式呢?若误修改fstab导致无法进入系统,要怎么恢复?

这两个问题,我在后面的帖子会接着给大家答案。先让我休息下吧,折腾次Linux不容易,谁叫我手上就只有1个SSD和1台电脑呢

 
 
 
 
 
参考资料及相关链接
1
参考资料及相关链接

拓展阅读:SSD 新手使用須知:4K 對齊調教實戰,提升 SSD 效能

David Yin. (19 Aug, 2012). Make sure 4K Alignment on SSD. David Yin”s Blog. Retrieved 26 Jul, 2013, from http://www.yinfor.com/blog/archives/2012/08/make_sure_4k_alignment_on_ssd.html

Nicolay Doytchev. (17 Oct, 2010). HOWTO: Configure Ext4 to Enable TRIM Support for SSDs on Ubuntu and Other Distributions. Forked by Nicolay. Retrieved 26 Jul, 2013, from https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu

OpenNingia. (30 Dec, 2010). Installing Ubuntu on a SSD. Ask Ubuntu. Retrieved from http://askubuntu.com/questions/19376/installing-ubuntu-on-a-ssd

Uli. (30 Dec, 2010). How to enable TRIM?. Ask Ubuntu. Retrieved from http://askubuntu.com/questions/18903/how-to-enable-trim

ivan. (19 Oct, 2010). Linux平台使用SSD必讀 (範例為Ubuntu). 永遠的真田幸村. Retrieved from http://yblog.org/archive/index.php/11734

Nicolay Doytchev. (21 Sep, 2010). HOWTO: Check If TRIM On Ext4 Is Enabled And Working On Ubuntu And Other Distributions. Forked by Nicolay. Retrieved 26 Jul, 2013, from https://sites.google.com/site/lightrush/random-1/checkiftrimonext4isenabledandworking

Multiple. (n.d.). TRIM. Wikipedia, the free encyclopedia. Retrieved 26 Jul, 2013, from  http://en.wikipedia.org/wiki/TRIM

Multiple. (n.d.). Serial ATA. Wikipedia, the free encyclopedia. Retrieved 26 Jul, 2013, from http://en.wikipedia.org/wiki/Serial_ATA

Anonymous. (n.d.). Grub2. Community Ubuntu Documentation. Retrieved from https://help.ubuntu.com/community/Grub2

Andrew. (15 Jan, 2013). ENABLE TRIM ON SSD (SOLID-STATE DRIVES) IN UBUNTU FOR BETTER PERFORMANCE. Web Upd8: Ubuntu / Linux blog. Retrieved 22 Apr, 2014, from http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html

Patrick. (8 Jul, 2011). Impact of ext4′s discard option on my SSD. Patrick’s WebLog. Retrieved 22 Apr, 2014, from https://patrick-nagel.net/blog/archives/337

Multiple. (n.d.). cron. Wikipedia, the free encyclopedia. Retrieved 22 Apr, 2014, from http://en.wikipedia.org/wiki/Cron

Anonymous. (n.d.). fstrim(8). Linux manual page. Retrieved 22 Apr, 2014, from http://man7.org/linux/man-pages/man8/fstrim.8.html

Anonymous. (n.d.). CronHowto. Community Help Wiki. Retrieved 22 Apr, 2014, from https://help.ubuntu.com/community/CronHowto

Ji m. (8 Dec, 2013). How to Enable TRIM on SSD in Ubuntu Linux. UbuntuHandbook. Retrieved 22 Apr, 2014, from http://ubuntuhandbook.org/index.php/2013/12/enable-trim-ssd-better-performance/

Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法的更多相关文章

  1. 硬盘4k对齐教程总结

    4k对齐概念: 4K对齐相关联的是一个叫做“高级格式化”的分区技术.首先先来了解一下什么是叫做“4K 对齐”.其实“4K对齐”相关联的是一个叫做“高级格式化”的分区技术.“高级格式化”是国际硬盘设备与 ...

  2. Centos 6&period;5 挂载硬盘 4K对齐 (笔记 实测)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Linux centos 2.6.32-431.17.1.el6.x86_64(Centos-6.5-x86_ ...

  3. 对固态硬盘ssd进行4k对齐

    别让SSD成半吊子!你真的4K对齐了吗? http://ssd.zol.com.cn/537/5374950_all.html SSD固态硬盘一键分区后如何检测4K对齐? http://pcedu.p ...

  4. SSD 固态硬盘,Trim指令 ,查看状态、开启、关闭

    一说到SSD 固态硬盘,经常会看到Trim指令这个名词,那什么是Trim?   Trim是什么? 为了解决硬盘降速的问题,微软联合各大SSD厂商开发了一个新技术——Trim.Trim指令也叫disab ...

  5. 4k 对齐,你准备好了吗?

    什么是 4k 对齐? 其实与 “ 4K对齐 ” 相关联的是一个叫做 “ 高级格式化 ” 的分区技术.“ 高级格式化 ” 是国际硬盘设备与材料协会为新型数据结构格式所采用的名称.这是主要鉴于目前的硬盘容 ...

  6. 4K 对齐与固态硬盘检测工具

    0. 硬盘扇区 当前电脑传统机械硬盘的每个扇区一般大小为 512 字节(512B):当使用某一文件系统将硬盘格式化时,文件系统会将硬盘扇区.磁道与柱面统计整理并定义一个簇为多少扇区方便快速存储. 现时 ...

  7. 简单粗暴的更换固态硬盘及WIN10 Ubuntu双系统

    简介:本文希望帮助如本人一样的计算机小白,能够以最快的速度更换固态硬盘及安装系统. 1.提前将准备空白U盘(至少8G),利用UltraISO工具,或者软媒魔方,制作U盘启动盘. PS:需提前下载好WI ...

  8. SSD硬盘的4K对齐

    4K对应4096 硬盘模式: 一.让SSD运行在AHCI模式下: AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,相比老旧的“IDE“ 虚拟模 ...

  9. SSD trim及4k对齐

    trim可以帮助减小SSD的写放大WA问题,删除文件后不仅仅是将文件标记为删除,而是在SSD空闲的时候统一进行删除. Linux下的trim支持叫discard,修改fstab文件,在挂载参数中加上d ...

随机推荐

  1. Spring集成jedis支持Redis3&period;0集群

    接着上一节,我们通过spring FactoryBean实现redis 3.0集群JedisCluster与spring集成.  http://www.linuxidc.com/Linux/2016- ...

  2. 错误 1 error LNK1123&colon; 转换到 COFF 期间失败&colon; 文件无效或损坏

    不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1:点击“ ...

  3. checked属性

    使用checked属性,你可以设置复选按钮和单选按钮默认被选中. 为此,只需在input元素中添加属性checked <input type="radio" name=&qu ...

  4. go语言 类型&colon;数组切片

    初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针.数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针: 2.数组切片中的元素个数: 3.数组切 ...

  5. atitit&period;404错误的排查流程总结vOa6

    atitit.404错误的排查流程总结vOa6 1. 场景 1 1.1. 子应用猛个腊擦不能使用  404 兰.. 1 2. 服务器配置问题 2 2.1. 登录服务器管理子应用,查看应用是否启动okk ...

  6. android实现qq邮箱多个图标效果

    前几天,蛋疼的技术主管非要实现类似装一个qq邮箱,然后能够使用qq邮箱日历的那么一个东西.相当于一个应用生成两个图标,可是不同的是点击不同的图标能够进入不同的应用,例如以下图的效果. 这效果百度了一天 ...

  7. mysql 8&period;0&period;12 创建新的数据库、用户并授权

    Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_p ...

  8. Redis禁用持久化功能的设置

    原文转载至:https://www.cnblogs.com/rangeon/p/7067618.html 用过Redis的朋友都知道,这玩意有个比较强大的功能叫做持久化,就是在结束服务的时候把缓存中的 ...

  9. 【转】Keil ARM开发 error L6236E错误解决

    顺利创建了第一个Keil工程却发现不能完成链接,出现了一个下面这样的报错: .\Objects\demo_simple.sct(7): error: L6236E: No section matche ...

  10. 使用纯 CSS 实现响应式的图片显示效果

    有许多方法可以实现页面里图像的响应式显示(Responsive).然而,我碰到的所有方案都使用了JavaScript.这使我疑惑不用 JavaScript 实现图像响应是否可行. 我提出了下面纯CSS ...