http://blog.csdn.net/whycold/article/details/24985943

这里说的优化是针对EXT4格式,因为看了很多国外网站的很多读写评测,目前来说,EXT4在SSD硬盘是最快的,所以推荐使用SSD硬盘的使用EXT4格式。优化方案如下:

文章提到的fstab在/etc里面,可以直接运行"sudo gedit /etc/fstab"来修改

1、关闭日志功能

方法一:

fstab里加挂载参数data=writeback,如:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro,data=writeback 0 1

进过我的测试发现ubutnu下这样没有用,要这样才可以用.

打开grub:

1 sudo gedit /etc/default/grub

在GRUB_CMDLINE_LINUX_DEFAULT=""中添加rootflags=data=writeback 然后更新grub

方法二:

还有直接去掉日志功能的方法,这样是不用重新分区的:

运行指令:tune2fs -O ^has_journal  /dev/sda1

检查是否去除了日志:sudo tune2fs -l /dev/sdxn | grep 'Filesystem features' | grep 'has_journal'

ps:恢复日志功能

运行指令:tune2fs -O has_journal  /dev/sda1

检查是否恢复了日志:sudo tune2fs -l  /dev/sdxn | grep 'Filesystem features' | grep 'has_journal'

自己把/dev/sda1改为相应的分区号,要卸载分区才能运行该指令。

2、禁止记录最近一次访问的时间戳

默认情况下,Linux ext 文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间。因为系统运行的时候要访 问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。Linux 提供了 noatime 和nodiratime这两个参数来禁止记录最近一次访问时间戳。

给文件系统挂载的时候加上noatime和nodiratime参数能大幅提高文件系统性能:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,noatime,nodiratime,errors=remount-ro 0 1

完全关闭这些选项不一定好推荐还是把noatime改成relatime比较好,nodiratime还是不要添加的为好。

3、启用 TRIM 功能

Trim的作用

原本在机械硬盘上,写入数据时,Windows会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,Windows只会在此处做 个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。

这样一来,磁盘需要更多的时间来执行以上操作,速度当然会慢下来。

而当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND 闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。

以上就是Trim的原理以及真正作用。

注意:如果SSD组RAID0后,将失去Trim功能

Linux内核从2.6.33开始提供TRIM支持,所以先运行“uname -a”命令,查看自己的内核版本,如果内核版本低于2.6.33的,请先升级内核。

然后运行“hdparm -I /dev/sda”查看自己的硬盘支不支持TRIM技术,如果支持,你会看到

* Data Set Management TRIM supported

如果上面两个条件都满足了,就可以在fstab中添加discard来开启TRIM功能,如:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4

discard,defaults,errors=remount-ro 0 1

ps:有人说Linux用 discard不好,可能会造成性能下降,大家也可以改用fstrim进行定时TRIM:

1 sudo fstrim -v /

不过推荐大家在/etc/cron.daily/里面创建fstrim文件更好,文件内容如下:

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

然后赋予此文件可执行权限

4:配置固态硬盘(SSD)的I/O调度程序

优化的第三个部分涉及到I/O调度程序。该模块是一个决定如何处理I/O请求的核心组件。默认情况下就是非常公平的排队,对于普通的磁盘驱动器来说,这是很好的方案,但对于以期限调度为优势的固态硬盘来说,这并不是最好的。

如果你想在系统中对所有磁盘采用期限调度,可以在内核加载时把elevator=deadline这句话加入到系统引导管理器(GURB)中;如果你只 是想针对某一个磁盘,就应该在rc.local文件中加入类似如下实例的一句话,那么每次当系统重启,期限调度就会应用到指定的磁盘。如下实例将会对 /dev/sdb磁盘采用期限调度。

echo deadline > /sys/block/sdb/queue/scheduler 
    给IO的算法修改成 noop,操作系统本身不做处理,让 ssd 本身处理.
    echo noop >  /sys/block/sda/queue/scheduler

ps:

查看當前系統支持的IO調度算法
dmesg | grep -i scheduler
查看當前系統的I/O調度方法:
cat /sys/block/sda/queue/scheduler

5:把缓存放到内存中

修改fstab,在fstab文件中添加一下内容

1 tmpfs /var/log tmpfs defaults 0 0
2 tmpfs /tmp tmpfs defaults 0 0
3 tmpfs /var/tmp tmpfs defaults 0 0

然后输入一下命令重新挂载或重启:

1 sudo mount -a

然后,可以在Firefox上通过about:config设置,把cache放到/tmp去,提高Firefox效率外,同时也可以减少对SSD的读写。

新增字符串 browser.cache.disk.parent_directory 设置的数值为 /tmp

接着在档案 /etc/rc.local 中的 exit 0 前加入以下七行令开机时自动建立 /var/log 中的目录:

for dir in apparmor apt news cups dist-upgrade fsck gdm installer samba unattended-upgrades
do
    if [ ! -e /var/log/$dir ]
    then
            mkdir /var/log/$dir
    fi
done

ps:我用ubutnu12.04测试了一下,发现不再rc.local中添加上面的七行也可以.大家可以先不添加,要是出了问题再添加比较好.

Linux系统中对SSD硬盘优化的方法相关推荐

  1. linux优化ssd磁盘,linux系统中对SSD硬盘优化的实例教程

    1.ext4文件系统在SSD硬盘是最快的 2.IO的算法修改成noop,操作系统本身不做处理,让SSD本身处理 echo noop > /sys/block/sdb/queue/schedule ...

  2. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法

    Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...

  3. linux 查找只读文件夹,Linux系统中查找命令find的使用方法(二)

    今天达内Linux培训小编要继续跟大家分享关于Linux系统中中查找命令find的使用方法的文章.在上文中小编提到,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Linux的查找命令 ...

  4. linux系统中find怎么用,Linux系统中查找命令find的使用方法(一)

    今天达内Linux培训小编要跟大家分享的文章是关于Linux系统中中查找命令find的使用方法.熟悉Linux系统的小伙伴们都知道,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Li ...

  5. linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法

    分析linux系统中磁盘空闲空间的管理方法 汪建国 摘要:要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块.如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存 ...

  6. linux怎么重复命令,Linux系统中重复执行历史命令的方法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中重复执行历史命令的方法有哪些?各位正在从事Linux运维工作的小伙伴们,如果要执行一条或多条之前输过的指令,要怎么处理?很多人会想到使用上下箭头去翻查历 ...

  7. Linux系统怎么使用扫描仪,Linux系统中Nmap扫描命令的使用方法 -电脑资料

    我们可以使用ping扫描的方法(-sP),与fping的工作方式比较相似,它发送icmp回送请求到指定范围的ip地址并等待响应,证明主机正在运行,反之,则无法判断主机是否开机或者是否在网络上互连. 扫 ...

  8. linux查看pid对应的进程,linux系统中快速查看进程pid的方法

    linux系统中快速查看进程pid的方法 一个很简单的'命令,pgrep,可以迅速定位包含某个关键字的进程的pid:使用这个命令,再也不用ps aux 以后去对哪个进程的pid了 用法: pgrep ...

  9. linux如何生成tar文件内容,在Linux系统中创建tar.gz文件的方法及实例讲解

    本文介绍在Linux系统中创建tar.gz文件的方法,及实例讲解. 介绍 tar存档是一个文件,用于存储其他文件的集合,包括有关它们的信息,例如所有权.权限和时间戳. 在Linux操作系统中,可以使用 ...

最新文章

  1. selenium持续集成_使用Selenium进行Spring Boot集成测试
  2. Windows下安装Vim插件管理Vundle
  3. Palindrome Index
  4. MySQL 8.0中的JSON增强
  5. Shell:Lite OS在线调试工具知多少
  6. Python菜鸟之路:原生Ajax/Jquery Ajax/IFrame Ajax的选用
  7. 时间序列(二):时间序列平稳性检测
  8. ps盖印图层在哪里_ps盖印图层快捷键怎么用? ps盖印图层教程
  9. 【AI创造营】网抑云选手等级鉴定器
  10. 软件测试工程师APUS一面二面汇总
  11. html写出日出,有关描写日出的优美段落
  12. SEO优化中关键词密度和布局的重要性
  13. Linux的内核设计与实现之进程管理(含源码)
  14. 上班假装很忙,下班装逼唬妹子的几个神器,人人都能用
  15. 【爱情叙记】--刚闹完别扭
  16. 混部之殇-论云原生资源隔离技术之CPU隔离
  17. CentOS 7下载地址(ISO文件)安装
  18. WDM在不同Windows版本上的音频支持
  19. Qlikview+nPrinting
  20. Mac上广告拦截软件:AdGuard

热门文章

  1. CES2020,到底发布了哪些高科技?
  2. VR系列——Oculus Audio sdk文档:一、虚拟现实音频技术简介(1)——概述
  3. 计算机网络中计算机资源管理器,资源管理器
  4. 红蓝攻防中蓝队职责(防守方)
  5. [ROS2基础] TF2使用细节
  6. iOS开发者对苹果公司发起集体诉讼 指控其违反竞争法
  7. 【以太网硬件七】扰码和mBnB有什么区别和相同点?
  8. ArcGIS教程01:面重叠检查
  9. Creating UI Using Vectorian Giotto and FlashDevelop
  10. java获取mac地址-屏蔽ip封mac地址