ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux 对SSD硬盘优化的方法

Linux 对SSD硬盘优化的方法

Linux操作系统 作者:G8bao7 时间:2015-07-23 15:00:31 0 删除 编辑

# 测试 ssd性能
hdparm -t /dev/sda
 
###################################################### 关闭日志功能 #########################################
可以延长SSD寿命,但是突然断电容易造成文件损坏
方法一:
# fstab里加挂载参数data=writeback,如:
# 原
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro 0 1
# 修改,增加data=writeback
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro,data=writeback 0 1
 
方法二:
    # 直接关闭日志,不用重新分区(要卸载分区才能运行该指令)
tune2fs -O ^has_journal /dev/sda2 

# 然后执行 
e2fsck -f /dev/sda2
    #
dmesg | grep EXT4 
如果显示 “EXT4-fs (sda2): mounted filesystem without journal”  说明关闭日志成功;
否则显示 “mounted filesystem with ordered data mode”

# 打开日志
tune2fs -O has_journal /dev/sda2
 
###################################################### 修改 /etc/fstab ###########################################
sudo gedit /etc/fstab
# 原
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1
# 修改, 增加 discard,noatime 项, 执行 mount 查看是否含有 discard
UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 discard,noatime,defaults,errors=remount-ro 0 1
### discard  开启TRIM功能(如果SSD组RAID0后,将失去Trim功能)
Trim的作用
原本在机械硬盘上,写入数据时,Windows会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,Windows只会在此处做 个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。
这样一来,磁盘需要更多的时间来执行以上操作,速度当然会慢下来。
而当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND 闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。
以上就是Trim的原理以及真正作用。


# 检查内核版本, Linux内核自2.6.33开始支持TRIM。
uname -a


# 检查SSD是否支持trim
# 显示 * Data Set Management TRIM supported  说明支持
hdparm -I /dev/sda | grep TRIM   




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

###################################################### IO调度改为noop #######################################
### 所有磁盘
gedit /boot/grub/menu.lst
# 最后一行增加
elevator=deadline

### 指定磁盘
vim /etc/rc.local
echo deadline > /sys/block/sda(磁盘)/queue/scheduler
echo 1 > /sys/block/sda(磁盘)/queue/iosched/fifo_batch

###################################################### 临时文件使用ramdisk替换ssd #####################################
会浪费一些RAM
# Using a ramdisk instead of the SSD to store temporary files will speed things up, but will cost you a few megabytes of RAM. 
sudo gedit /etc/fstab
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0



参考
http://tombuntu.com/index.php/2008/09/04/four-tweaks-for-using-linux-with-solid-state-drives/
http://blog.csdn.net/gold2008/article/details/18904621
http://www.yangzhi.org/linux-%E5%AF%B9ssd%E7%A1%AC%E7%9B%98%E4%BC%98%E5%8C%96%E7%9A%84%E6%96%B9%E6%B3%95/



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26250550/viewspace-1745716/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-11-04

  • 博文量
    486
  • 访问量
    1184106