Contents ...
udn網路城邦
Linux系統下如何使用SSD固態硬盤
2015/07/16 13:20
瀏覽634
迴響0
推薦0
引用0
Linux下的trim支持叫discard,现在ext4和xfs都支持(btrfs应该也支持),内核需要>=2.6.37,xfs的支持在3.0才比较完善。
具体需要设置这几个方面:
1. 内核
升级到2.6.37以上,最好用最新的3.0。
禁用disk IO scheduler模块。
2. 文件系统表
修改fstab文件,在挂载参数中加上discard;最好也同时加上noatime。
3. 调整文件系统参数
ext4的话最好禁用日志功能,能防止写入额外的数据而减少ssd寿命。
4. 相关文档:
xfs官网对ssd支持的说明
ext4的ssd设置
suse官方对ssd支持的相关说明
fdisk -H 224 -S 56 /dev/sdd
fdisk -H 32 -S 32 /dev/sdd
配置固态硬盘(SSD)的Ext 4
接着需要关注的就是文件系统。想要优化文件系统删除字节区块的效率,就必须确保小于512K的文件分布在不同的删除字节区块上。
要做到这一点,必须 确保在创建可扩展文件系统时指定了需要使用的条带的宽度和幅度。
这些值在页面中指定,默认大小为4KB。要创建一个最佳的可扩展文件系统,应该使用如下命 令:
mkfs.ext4 -E stride=128,stripe-width=128 /dev/sda1
如果要修改现有的文件系统的参数,可以使用tune2fs实用程序:
tune2fs -E stride=128,stripe-width=128 /dev/sda1
配置固态硬盘(SSD)的I/O调度程序
优化的第三个部分涉及到I/O调度程序。该模块是一个决定如何处理I/O请求的核心组件。默认情况下就是非常公平的排队,对于普通的磁盘驱动器来说,这是很好的方案,但对于以期限调度为优势的固态硬盘来说,这并不是最好的。
如果你想在系统中对所有磁盘采用期限调度,可以在内核加 载时把elevator=deadline这句话加入到系统引导管理器(GURB)中;如果你只是想针对某一个磁盘,就应该在rc.local文件中加入 类似如下实例的一句话,那么每次当系统重启,期限调度就会应用到指定的磁盘。
如下实例将会对/dev/sdb磁盘采用期限调度。
echo deadline > /sys/block/sda/queue/scheduler
清理固态硬盘(SSD)中的数据块
最后一个重要的步骤称为“清理”,该操作可以确保在删除文件后相应的数据块真正清空,然后在创建新的文件时才能有可用的数据块。
如果没有清理操作, 一旦数据块空间填满,固态硬盘的性能就会下降。
如果使用丢弃挂载选项,当文件删除后,数据块也会被相应地清除,这样可以显著提高固态硬盘的性能。
 2.6.33以上的内核已经支持清理操作。
固态硬盘选择 如何让SSD在服务器中放光
固态硬盘存储目前在解决数据中心所面对的性能挑战上扮演着领先的角色。用户目前面临的问题是如何使用这些存储容量和将这些存储容量用在何处才能在适度的投入下获得最大的回报?市面上各种可行性解决方案眼花缭乱,我们在此对这些挑战进行排序。在第一个序列中我们将探讨用于服务器的固态硬盘。
服务器中配置固态硬盘已经是一个普遍的选择,特别是如果只有很小比例的服务器存在性能问题的话尤其如此。固态硬盘可以帮助用户解决服务器性能的瓶颈。固态硬盘也可以让高速存储更加的接近处理器并将共享存储网络这个潜在的瓶颈剔除掉。目前有三种固态硬盘的形式作为达标:即硬盘驱动型SSD,SSD DIMM和PCIs SSD.
硬盘驱动型固态硬盘外观和功能类似于机械硬盘,只是没有转针。这是目前应用比较普遍的首款固态硬盘之一,可以进行升级。安装固态硬盘,通过固态硬盘复制数据和重新导入能轻松获得速度的提升。
硬盘驱动型固态硬盘家族目前又新加入了SSD DIMM,正如我们在最新的文章“SSD DIMM-新的选择”中所探讨的,它可以安装在服务器的双列直插内存模组插槽中,确实很类似于机械式硬盘,可以通过标准的SAS或者SATA介质连接到系统上。这种类型的连接可以成为理想的引导设备。这样会受到介质连接速度的限制,但是对于许多应用环境来说,这是他们所需要的性能提升。
PCI SSD是另外一个服务器固态硬盘的选择,正在快速得到用户和市场的认可。正如它名字的含义那样,这是一种通过PCI总线连接的固态硬盘。因此可以通过高速通道直接访问中央处理器,这样能为用户提供非常高性能的选择。尽管多数PCI都无法被引导,但是他们对于对高性能要求极高,但是SAS/SATA的带宽又不足以满足应用软件性能需求的工作负载是理想的选择。
PCI固态硬盘还可以作为低成本的DRAM内存的选择。一个1TB容量的固态硬盘可以作为内存取代100个服务器中配置的动态随机存储器,从而使得性能得到更大的提升。
服务器选择配置哪款固态硬盘取决于用户需要解决什么样的性能问题和服务器适合安装那种固态硬盘。许多PCI SSD需要体积充足的PCI插槽,大部分1U和2U服务器都无法满足。在这些情况下,硬盘驱动型固态硬盘或者SSD DIMM就是更好的选择,或者说甚至是唯一的选择,这取决于是否有硬盘或者双列直插内存模组可用。
配置固态硬盘的服务器可以用于各种用途,也可以作为共享存储基础架构的补充和加强,而不是替代。在我们下一个章节中将着重探讨更加理想的应用案例,包括导入,高速缓存,空间和使用固态硬盘来替代动态随机存储器内存。
Linux系统中对SSD硬盘优化的方法
2011-10-1 笑看风云 硬件
这里说的优化是针对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:
?
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:
?
sudo fstrim -v /
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文件中添加一下内容
?
tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
然后输入一下命令重新挂载或重启:
?
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存儲的未來
下一則: linux線程同步
你可能會有興趣的文章:

限會員,要發表迴響,請先登入