1.开启磁盘的TRIM功能

TRIM 本身是一个 SATA 指令。在删除文件时,文件系统一般只做必要的标记而不真正抹去存储介质上的数据。对于普通磁盘,这就足够了,被标记的部分以后在需要时会被覆盖。然后对于SSD硬盘,告知硬盘有些块不再被需要是很有意义的,硬盘可以据此优化其垃圾回收过程,加快以后写入数据的速度。

方法一:修改/etc/rc.local文件

打开/etc/rc.local在其最后添加如下内容:
fstrim -v /
假如是三星SSD和Intel SSD,设置成fstrim -all / 会更好
方法二:配置cron

fstrim是执行trim操作的命令,配合cron的操作可以达到定时清理的作用。执行周期,视自己的临时文件的频度而定,假如没有大规模频繁删减文件的话,就没必要每天执行一次。我这里设置的是每天执行一次。

echo -e “#\x21/bin/sh\nfstrim -v /” | sudo tee /etc/cron.daily/trim
sudo chmod+x /etc/cron.daily/trim
若是想改成每周执行一次,daily改为weekly就可。
方法三:修改/etc/fstab文件

打开fstab文件,在最后增加discard 和 noatime参数
/dev/sda5 / ext4 discard,noatime,commit=600,errors=remount-ro 0 1
discard参数启动SSD的TRIM功能,可以提升性能和使用持久性;
notime参数告诉文件系统不要记录文件的最后访问(读取)时间,只记录最后修改时间。这样可以有效的减少对磁盘的读写次数;
2.分区对齐

固态硬盘的最小读取和写入单位是page(4K),但是擦除是以Block(512K)为单位。在往标记删除的page写入数据时,需要先擦除page所在Block,然后再把数据回写进Block。如果一个逻辑块分布在两个物理块“Block”中,那么涉及到的两个物理块都要被擦除重写。为了减少这种情况,我们需要将分区表和文件系统向物理块对齐,将分区的起始逻辑位置设置为512KB或1MB的整数倍是合理的。

启动终端,输入:sudo sfdisk -d /dev/sda,如果每一个分区的开始和结束都是可以整除512的,那么就是512k对齐的。如果是机械硬盘的话,只要整除8就可以了

3.减少SWAP的读写频率

对于大内存机器来说swap基本上都是闲置的,除非电脑进入休眠状态,那时系统会将内存内容转到swap中。对于SSD来说,开关机都是几秒钟的事,所以我没有分配swap分区,如果真要分配,空间也要尽可能的小,比如我这里将swappiness修改为1。

sudo vim /etc/sysctl.d/99-sysctl.conf
vm.swappiness = 1
vm.vfs_cache_pressure = 50
1
2
3
1
2
3
4.对IO调度器进行优化

默认的IO调度器CFQ(Copletely Fair Queuing)是针对HDD的优化,对多个读操作进行了分组队列,而偶们使用的是SSD,所以完全没必要按这种方式来排队,可以更换为NOOP模式及Deadline模式。 sudo vim /etc/default/grub
1
1
将GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash video-1920x1080M@75m”
修改为:GRUB_CMDLINE_LINUX_DEFAULT=”elevator=noop quiet splash video-1920x1080M@75m”
然后再更新grub的配置:grub-mkconfig -o /boot/grub/grub.cfg

5.SSD保养

为了更好的使用SSD,我们需要定期查看它的使用寿命:sudo smartctl -data -A /dev/sda,然后找到带有磨损指标( Media_Wearout_Indicator)的那一行,查看RAW_VALUE的值即可,它默认是100,变得很小时就要非常注意了,要做好数据的备份工作。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code