SSD安装unbuntu系统的优化

0. 常识

参考: https://www.jianshu.com/p/nQpqsN

1)BIOS设置为AHCI;
2)购买SSD的1年内,每隔几个月去官网检查是否有固件升级;
3) 有条件的加满RAM,因为它比SSD便宜。
4)不要使用TLC芯片的SSD
5)不要做碎片整理操作Defragmentation
6)不建议开启hibernation休眠功能,因为会有大量的数据读写。但是从笔记本使用角度来说,还是开着吧,关了也要操作很多配置。


1. 开启TRIM功能

SSD要保持长期稳定和速度,就需要启用TRIM,这是让SSD在非尖峰读写时间才去真正抹除芯片上被标记抹除的资料。

1) 首先,检查内核版本是否支持TRIM:

uname -a

2) 然后,检查SSD硬盘是否支持TRIM:

hdparm -I /dev/sda

3) 如果显示比如(不同硬件可能不同提示):

* Data Set Management TRIM supported

4) 要开启TRIM支持,就得编辑fstab,在指定的磁区挂载选项加上discard,这个设置。

这一步用在所有/或者/home等分区,不要用在/swap
如果有/boot/efi分区,不要加进来,不需要。swap也不需要
参考: http://blog.sina.com.cn/s/blog_6cc181070101rty5.html

UUID=f7d482bf-e210-474a-8d09-1e28c14fbc30 / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1

5) 其中noatimenodiratime是禁用
noatime是为了,当访问文件时,系统会更新last-access这个文件/目录元数据,设置noatime后可以减少这种操作。但这个操作会影响系统性能,所以设置成定时清除

nodiratime最好不要禁用?

6) 测试新的fstab文件:

mount -oremount /dev/sda1

然后挂载:

mount

如果显示discard字样,说明成功,如:

/dev/sda1 on / type ext4 (rw,discard)

2. swap配置

/etc/sysctl.cnf末尾加入vm.swappiness=1, 代表着尽量不使用交换空间, 除非是内存已经用完了
或者
通过设置/proc/sys/vm/swappiness里面的值,来减少swap换出量:

echo 1 > /proc/sys/vm/swappiness

0到100之间,值越大换出量越大。


3. 将 /tmptmpfs 形式挂载

1) 如果内存够大,可以用ramdisk的方式,将一些经常变化的位置如/tmp放入内存,加快速度,减少对SSD的访问

sudo gedit /etc/fstab

在文件的最下面加上这一行

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0

重启或不重启,用 sudo mount -o remount /也可以

2) 记得将浏览器等程序的缓存目录设置到/tmp

  1. 设置firefox的缓存移到/tmp
    打开firefox,输入about:config打开设置。添加一个新字符串,名称为:browser.cache.disk.parent_directory,值为/tmp
    要检查的话,浏览地址输入 about:cache

  2. Chrome设置 Chrome 在Linux下cache的位置是~/.cache/google-chrome/Cache.
    参考:http://teckoo.com/knowledge/linux/ssd.html
    第一种:

    cd ~/.cache/google-chrome/Default
    rm -rf Cache 
    ln -s /tmp Cache 
    rm -rf Media\ Cache 
    ln -s /tmp Media\ Cache 

    第二种: make the entire cache folder to /tmp

    cd ~
    rm -rf .cache
    ln -s /tmp .cache

4. 关闭日志文件

参考:http://www.cnblogs.com/0xcafebabe/p/4491140.html

针对EXT4文件系统,选择了Ext4系统,接下来需要关闭日志功能(只针对EXT4分区
没有日志的情况下,文件系统更容易损坏,如突然断电,如果你甘愿冒这样的风险,从而延长SSD使用寿命,值得一试

1) 首先,系统挂载时无法停用日志功能,所以需要进入刚才的U盘系统,利用root权限执行:

tune2fs -O ^has_journal /dev/sda1

即关闭/dev/sda1上的日志功能。其它所有EXT4分区都要这么处理

2) 然后,运行操作系统检测:

e2fsck -f /dev/sda1

不这样,文件系统可能会出错。

3) 最后,重启,进入SSD中的系统,检查是否设置成功:

dmesg | grep EXT4

如果出现:

EXT4-fs (sda1): mounted filesystem without journal

说明设置成功。原来是:

mounted filesystem with ordered data mode

4) 如果需要再次开启日志功能,只要运行

tune2fs -O has_journal /dev/sda1

5. 使用noop磁盘调度

通常操作系统调度机械硬盘时会提供一些数据的物理位置,这样有利于机械硬盘优化寻道,但是对SSD没意义,所以采用noop磁盘调度,即简单发送请求,可以提高效率。

可以通过以下命令查看调度方法:(下面被中括号选中的表示当前的调度算法)

cat /sys/block/sda/queue/scheduler

比如显示:

noop [deadline] cfq

配置文件/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video-1024x768M@75m"

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop quiet splash video-1024x768M@75m"

6. 测试SSD速度

sudo hdparm -Tt /dev/sdX

这个Xab,看你的SSD是第一个或第二个硬盘。我的是sda。
Timing cached reads: x MB in y seconds = z MB/sec这是读的速度,与你的SSD支持SATAII或SATAIII、以及上面的DRAM读的速度有关。
Timing buffered disk reads: x MB in y seconds = z MB/sec这个才是真正的SSD读的数值。
我的就是这样的结果:

/dev/sda:
Timing cached reads: 7148 MB in 2.00 seconds = 3576.12 MB/sec
Timing buffered disk reads: 1298 MB in 3.00 seconds = 432.40 MB/sec

7. 分区对齐

0) 貌似不用考虑这步了,近年来SSD在出厂时已经对齐了

1) 分区对齐(使用LiveUSB)
在LiveUSB内使用gparted分区后,再验证一下:

sudo fdisk -lu

看每个分区起始的数字,能被8整除,就是4K对齐。
另查看Sector size (logical/physical): 512 bytes / 4096 bytes,物理对齐为4k。

2) 分区时选择ext4;如果同时有普通硬盘存在,swap放普通硬盘上;无需单独分出/home


8. 定期检查SSD状态,并做数据备份

可以使用命令sudo smartctl -data -A /dev/sda查看SSD状态,观察寿命。
233一行的值就是寿命,默认为100,当小于10的时候就要非常注意了。

通过这个命令来检测某个硬盘的健康状况

smartctl -s on -a /dev/sda 

硬盘的SMART信息包含很多部分。其中,”READ SMART DATA”部分显示出硬盘的整体健康状况。

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment rest result: PASSED

这个测试的结果是PASSEDFAILED。后者表示即将出现硬件故障,所以需要开始备份这块磁盘上的重要数据!

@leatherwang

猜你喜欢

转载自blog.csdn.net/hzwwpgmwy/article/details/80313272