deepin linux 2014.2
金士顿 V300 120G(其他固态硬盘类似,但有不同)
众所周知,固态硬盘闪存颗粒的擦写是又次数限制的。一般的MLC (Multi-Level Cell) 由3000次的擦写次数。得益于损耗平均技术,固态硬盘的使用寿命大大延长。即使电脑过时了,硬盘的寿命还没到尽头~~所以,固态硬盘的优化主要就是提高随机读写效率,减少不必要的写入。
分区对齐:固态硬盘的最小读取和写入单位是page(4K),但是擦除是以Block(512K)为单位。在往标记删除的page写入数据时,要先擦除page所在Block,在把数据回写进Block。如果一个逻辑块分布再两个物理块“Block”中,那么涉及的两个物理块都要擦除重写。将分区表和文件系统向物理块对齐,可以减少这种情况。所以,将分区的起始逻辑位置设置为512KB或1MB的整数倍是合理的。启动终端:sudo fdisk -l 如图:第一分区的“起点”是2048(扇),如果以后每个分区的“起点”都能被1024整除,那就是512K对齐。如果都能被2048整除,则是1M对齐。注意:如果是机械硬盘的话,只要能被8除就可以了。机械硬盘只要4K对齐就好了。而固态要512K对齐。
修改fstab:很多陈旧的资料上说,再fstab上,挂在参数加上discard,noatime。discard,向下级块设备通知块已释放,相当于实时的Trim,Trim一次页相当于一次,鉴于算法个人不推荐。这个参数没有提升SSD的效率,反而慢了。一般情况下是感觉不出来的。noatime 使用该参数,系统不再把最近读取文件信息写入日志。某些依赖时间戳的程序将产生问题。比如邮件和备份系统。以上都是个人不推荐的参数。relatime 简单说就是再修改文件后更新atime , 访问文件时如果atime超过一天则强制更新。现在Deepin linux 2014,默认参数就很好了,必须修改。
调整I/O调度方案现在主流linux有三种调度方案。CFQ、NOOP、Deadline。NOOP(电梯式调度程序)对于闪存设备,RAM,嵌入式系统是最好的选择。查看当前的调度方案。cat /sys/block/sdb/queue/scheduler #sdb 固态硬盘noop [deadline] cfq #现在的调度方案是deadline设置固态硬盘的调度方案。sudo su #提升权限echo noop > /sys/block/sdb/queue/scheduler # 把noop写入调度程序cat /sys/block/sdb/queue/scheduler #已经更改成功。[noop] deadline cfq 把他作为默认的设置,写入自动启动程序。#gedit /etc/rc.local 把填再exit 之前,如图所示。
综上,deepin linux对固态硬盘的优化相当的给力,仅仅需要调整一下调度方案。
不同固态硬盘,主控芯片不同,优化也有侧重,笔者也没太多硬盘研究。