admin管理员组

文章数量:1535340

2024年2月5日发(作者:)

一、确定你的电脑运行在AHCI模式(慎重)

优化SSD的第一步首先就是要确保你的磁盘读写模式为AHCI,一般来讲如果你的电脑是windows7系统,只需要在安装系统前进入BIOS设置

下磁盘读写模式为“AHCI”即可,如果您已经安装过windows7,并且不确定是否磁盘工作在AHCI模式,那么请看下面的教程:

1.点击win+R,进入运行对话框。

2.输入Regedit进入注册表。

3.选择路径“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmsahci”。

4.右键修改磁盘模式为“0”,重启即可。

友情提醒:如果拿到ssd要装系统的兄弟们,我推荐先bios设置好AHCI之后再用windows的安装盘进入格式化分区你的主分区,这样安装

的系统盘符是4K对齐的~而且可以避免IDE装机之后修改AHCI的蓝屏~(收集+总结)

二、更新您的芯片组驱动程序

保持最新的芯片组驱动有利于提高系统的兼容性和改善磁盘读写能力,尤其是现在SSD更新速度比较快,随时更新磁盘芯片组是非常有必

要的。

Trim是一个非常重要的功能,它可以提高SSD的读写能力,减少延迟。这是win7支持的一项重要技术,需要通过升级来支持。

通过以上两个驱动就可以开启TRIM模式了,很多检测软件都能够看到,当删除数据后,磁盘在后台会进行TRIM操作。

友情提醒:安装最新的,或者最稳定的官方芯片驱动即可。

三、关闭系统恢复功能

这是一个非常重要的步骤,最近很多反馈表明系统还原会影响到SSD或者TRIM的正常操作,进而影响SSD的读写能力。

1.右键单击我的电脑选择属性

2.选择系统保护

3.设置项

4.关闭系统还原

友情提醒:此处对ssd影响不是非常大,用户可以根据实际需求自己抉择。

四、核实TRIM是否开启

确认TRIM是否开启一直是一个比较困难的事情,因为我们必须非常密切的监控电脑的状态才能判断,而往往磁盘TRIM都是瞬间的事,所

以很难察觉。我们可以通过如下方式来看TRIM是否开启成功:

1.打开CMD

2.右键点击CMD以管理员模式运行

3.输入“fsutil behavior query DisableDeleteNotify”

4.如果返回值是0,则代表您的TRIM处于开启状态

5.如果返回值是1,则代表您的TRIM处于关闭状态

友情提醒:前提是你的ssd支持TRIM功能哦~ 32G版本的很多老款msata都是不支持的~ 比如金胜、sandisk等

五、关闭磁盘索引

Windows的索引服务会建立一个庞大的数据库,对每一个文件的创建、修改、删除等都记录在案;这个服务的目的是为了更快的搜索文件

,但是实际上大多数用户很少搜索文件,所以这个服务在绝大多数情况下只是起到轻微地拖慢系统速度的作用;另外,平凡的读写对固态硬

盘的寿命也并不好,所以建议关掉这个服务较好;

设置方式:控制面板-管理工具-服务-Indexing Service。

六、关闭磁盘整理计划

win7默认情况下磁盘碎片整理是关闭的,但是在某些情况下可能会自动开启。因为SSD上不存在碎片的问题,所以没有必要让它开启,频

繁的操作只会减少其寿命。

控制面板-管理工具-服务-1. 关闭Superfetch;关闭Windows Search;并禁用

七、关闭磁盘分页

这是一个广受争论的优化选项,很多人怀疑这是否有利于提高性能。但无论怎么样关闭这个选项可以为你带来额外的3.5GB-4GB的告诉存

储空间。

1.右击我的电脑

2.选择属性

3.选择系统高级选项

4.选择性能选项卡的高级选项标签

5.选择虚拟内存 更改

6.关闭自动管理内存分页

7.关闭所有内存分页,并且确定,退出。

友情提醒:这就是所谓的虚拟内存服务,不推荐少于4G内存的用户关闭此选项。

八、关闭系统睡眠和自动断网

休眠对于传统硬盘来说是一个非常有用的功能,它可以快速加载最后使用的程序,然而在SSD时代这个功能变得无用了。因为SSD的系统

启动时间基本都在20s以内,这和休眠模式的启动时间差不了多少,所以与其浪费那2.5GB左右的容量做休眠暂存,还不如拿出来用。

1.休眠:控制面板--硬件和声音--电源选项--更改计算机睡眠时间,修改为从不。

2.自动断网:控制面板--网络和 Internet--网络和共享中心--更改适配器设置--右击你的连接(本地连接或者是无线连接)---属性--

配置---电源管理---将允许计算机关闭此设备以节约电源选项前面的“√”去掉。

九、关闭windows写入高速缓存缓冲区刷新(或者保持默认)

注意:关闭windows写入高速缓存缓冲区有可能带来两种截然不同的后果,一种是系统读写性能降低另一种是性能提高,为什么会有这种

情况呢,因为同的SSD设备具有不同的高速缓存,OCZ的sandforce主控产品甚至没有缓存。因此对于OCZ的产品来说性能会有提升,而对于

Intel产品,我们建议还是别勾选,否则性能会反降。

1.右击我的电脑选择属性

2.设备管理

3.选择磁盘驱动器

4.右击SSD并且选择属性 写入高速缓冲区刷新的选项

5、会出现关闭设备上的windows

友情提醒:msata建议别设置,就算有缓存,msata也很小,个人没设置。

十、关闭Prefetch(预取)和Superfetch(超级预取)

这两项技术是XP和Vista时代的加速技术,对于SSD来讲0.1ms级的延迟完全不需要这项技术。所以关闭后性能会有提升。

1.进入注册表,找到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerMemory

Management

PrefetchParameters

2.右键点击EnablePrefetcher和EnableSuperfetch

3.修改这些数据从(1或3)到0;重启

友情提醒:这一项目可关可不关,没太多影响,我个人没关。

十一、关闭windows搜索和Superfetch超级预读

1.点击Win+R进入运行菜单

2.输入回车

3.找到windows搜索和SuperFetch选项,右键单击属性

5.将其停止

友情提醒:这一项可关可不关,我个人没关。

十二、快速启动系统

这个功能是关闭掉系统进入时的画面,大概能为您节省2-3s的启动时间,其它选项不要动,可能会产生负面影响。

1.按键盘win+R 输入Msconfig

2.检查无GUI引导是否勾上了

3.如果没有请勾上,确定。

4.并在引导-高级选项-cpu数目设置成最大线程数,因为windows默认使用单核512内存启动系统。

友情提醒:如果你是双核4线程就设置成4cpu,以此类推,还有一定要设置成最大,启动后电脑就是用这里设置的几个线程工作的。

十三、修改个人资料保存位置和IE临时文件位置

1.使用个人资料转移器修改保存位置

2.使用RamDisk创建磁盘后将IE临时文件移动到RamDisk所创建磁盘,将要使用的磁盘空间修改为最大

友情提醒:用RamDisk这个方法比直接设置在ssd中要好,只推荐内存大于4G或者32系统有剩余可利用内存的用户使用~

优化设置,七招让SSD速度飞起来[复制链接]

dantehu

本念于胸(LV4电梯直达

楼主

发表于 2011-5-22 15:03:04|只看该作者|倒序浏览

固态硬盘虽不算什么新兴事物,但也代表了PC效能存储的发展方向,给自己

)

精华

0

主题

15

帖子

315

加好友

发消息

的爱机弄一个SSD加速整体性能还是挺不错的。当然对于已经购买SSD的用户来说,无论主控芯片如何,效能高低,当务之急就是掌握一定的技巧,充分利用到SSD的性能,以及延长其寿命,增加安全性和可持续性。

安装及设置

由于SSD本身没有机械结构,所以对于防震的要求要低于传统机械硬盘很多。当然多数SSD都是2.5或1.8英寸大小的,为了追求稳定和安全,我们最好使用转换架后再将其放在机箱的3.5寸位固定好(图1)。(很多SSD产品提供了这个转换架,比如Intel的彩盒产品。部分中高端机箱也有专门的SSD安放位或者转换盒。)

将SSD安装完毕后不要立刻开始安装操作系统,要先进入BIOS,将硬盘模式改成AHCI(图2),从而开启NCQ功能,对SSD读写进行优化,这是IDE模式下所不具备的。同时建议在BIOS中将与节能有关的选项统统关闭(C1E、Intel为SpeedStep,AMD为C&Q,图3),以免南桥出现瓶颈,使得SSD不能达到最理想的性能。

在操作系统的选择上自然是Windows7,一方面Windows7本身提供了对SSD多方面的优化和支持;另一方面其也更有利于充分发挥新硬件的性能。最好使用Windows7官方版本进行安装(不推荐GHOST或者其他速成安装途径,这类安装方式通常会影响性能的发挥),一般来说SSD容量相对较小,默认一个分区,“主分区”安装便可。

整个过程和机械硬盘安装没多大区别,完毕后进入驱动安装环节,这里推荐大家使用驱动精灵类软件自动检测进行安装。如果是Intel平台用户,记得安装IntelRapidStorageTechnology(RST)驱动,而AMD平台使用win7自带驱动便可(某些SSD使用了SandForce主控,与微软驱动有一定兼容性问题,这时还应安装AMD官方南桥驱动)。

优化瘦身

重新启动后,开始进入优化和瘦身环节,当然现在很多软件都提供了不错的优化和系统清理功能,比如很多用户选用的360安全卫士。这里向大家推荐一款小巧的系统优化软件——魔方。

安装初次运行后,会弹出推荐的优化选项,一般保持默认即可。接着我们需要手动关闭一些比较鸡肋、繁琐的系统服务。点击软件主界面的“优化设置”按钮,进入优化界面,整体上设置比较人性化,有详细说明,我们可根据自己实际情况进行调节(图4)。WindowsDefender和WindowsSearch(分别负责安全和搜索)功能上也不算强大,可以在启动和系统服务中予以关闭。

优化完毕之后便是进行瘦身了,毕竟SSD的容价比相对机械硬盘低了很多,能腾出一些空间对我们来说也是很不错的。对于腾出空间来说首当其冲的便是关闭系统还原和休眠功能,一般能节约8GB~10GB左右的磁盘空间,这对于多数人使用的32GB~64GB的SSD来说相当可观了。在WIN7中右键计算机属性,打开“系统保护”页面,选择使用SSD的的系统分区,点击“配置”按钮,将系统还原关闭(图5)。至于休眠功能,使用热键“WIN+R”打开运

行框,输入“CMD”进入命令提示符,键入“powercfg–hoff”(注意空格),回车后即可将其关闭。

技巧7招

虽然SSD的耐用性经过玩家实现得到了不错的评价,但相对传统机械硬盘,它还是比较娇嫩的。所以我们需要掌握一定的SSD使用技巧,笔者总结了7个技巧,能够帮助大家更好地使用自己的SSD。

1.使用官方推出的软件定期优化有助于维持SSD的性能和健康,比如Intel用户可以使用IntelSSDToolbox(其他品牌的SSD也是可以使用这个工具,图6)。

2.少用测试类软件,一般来说经常进行写性能测试对SSD的健康不利,所以写测试不需过于频繁。HDTune、ATTODiskBenchmark、CrystalDiskMark、ASSSDBenchmark、CrystalDiskInfo这类的软件都少用为好。

3.如无必要,不用组建RAID。组建RAID会丧失Trim功能,在一定程度上会影响磁盘性能,一般来说我们不需要为了让持续读写成绩好看一些,而对SSD进行组建RAID操作。

4.不要把SSD作为下载盘,当然把下载软件(迅雷、电驴等)安装在SSD中使用起来启动软件的速度会明显提高,但不要把文件也下载在SSD上。

5.SSD虽然在使用寿命上与传统机械硬盘有一定差距,但我们也不用过度小心,部分用户奉行“只读不写”,将系统和软件的交换、缓存文件存放在机械硬盘中,虽然这样对SSD的健康有好处。但SSD本来就是为了解决读写大量零碎文件的延时而诞生的,移动缓存文件就体现不出SSD的性能了。而且,目前的SSD产品大多具有三年以上的质保,其耐用程度还是比较让人放心的。

6.SSD毕竟容量相对较小,因此如何合理优化空间也是一门学问。定期使用软件将不需要的缓存文件、系统垃圾清理出去,保持SSD拥有一部分预留空间,这样对其性能的保持也有很多好处。

7.部分用户过于担心SSD在存储数据方面的安全性,其实大可不必,通常来

说SSD发生故障的几率并不大,而且大多SSD发生故障以后磁盘中的文件仍然可以被读出。当然对于那些比较重要的文档、数据,我们也要做好备份工作,将其复制并放在可靠的机械硬盘中更加保险。

小贴士:什么是Trim

在用户删除数据后,Trim命令让系统告知SSD的主控可以把原先数据占用的块擦除掉,这样在以后的写入过程中就不需进行清除改写操作。简单来说Trim是一个预处理的命令,提前把整理SSD的操作做了,减少了写入等待从而提升了性能。当然这里的性能并不是客观上的提升,只是尽可能避免不必要的性能下降,所以我们主观上就感受到提升了。

Trim命令一般都是操作系统自动发送的,我们不需过多操心(也可利用软件手动Trim),当然前提要是能够Trim,而要保证能够Trim需要三个条件,一是系统支持,必须安装Windows7(包括WindowsServer2008R2等)操作系统;二是SSD本身固件支持,通常新型号SSD基本都可以,部分旧型号的SSD可以通过刷固件来获得支持;三是需要驱动的支持,使用微软自带AHCI驱动或者Intel的RST驱动都可以,而AMD平台用户需保持Win7默认驱动(AMD官方驱动性能略有提高,但不支持Trim)。

如何得知Trim命令是否启用了呢,首先打开CMD,输入“fsutilbehaviorquerydisabledeletenotify”,如果返回“0”则表示系统能发送Trim命令,但并不代表Trim一定开启。可以使用HDTune4.60版或CrystalDiskInfo查看SSD本身是否支持(通常都在支持特性一栏显示),如果驱动使用正确,Trim命令通常都能正常开启了。

十二招优化固态硬盘设置 尽享极速体验

2011年08月18日15:02 it168网站原创 作者:张辰 编辑:张辰 评论:5条

SSD优化设置准备工作

一、确定你的电脑运行在AHCI模式

优化SSD的第一步首先就是要确保你的磁盘读写模式为AHCI,一般来讲如果你的电脑是windows7系统,只需要在安装系统前进入BIOS设置下磁盘读写模式为“AHCI”即可,如果您已经安装过windows7,并且不确定是否磁盘工作在AHCI模式,那么请看下面的教程:

▲AHCI

1、点击win+R,进入运行对话框。

2、输入Regedit进入注册表。

3、选择路径“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmsahci”。

4、右键修改磁盘模式为“0”,重启即可。

二、更新您的芯片组驱动程序

保持最新的芯片组驱动有利于提高系统的兼容性和改善磁盘读写能力,尤其是现在SSD更新速度比较快,随时更新磁盘芯片组是非常有必要的。

Trim是一个非常重要的功能,它可以提高SSD的读写能力,减少延迟。这是win7支持的一项重要技术,需要通过升级来支持。

通过以上两个驱动就可以开启TRIM模式了,很多检测软件都能够看到,当删除数据后,磁盘在后台会进行TRIM操作。

三、关闭系统恢复功能

这是一个非常重要的步骤,最近很多反馈表明系统还原会影响到SSD或者TRIM的正常操作,进而影响SSD的读写能力。

▲关闭系统还原

1、右键单击我的电脑选择属性

2、选择系统保护

3、设置项

4、关闭系统还原

四、核实TRIM是否开启

确认TRIM是否开启一直是一个比较困难的事情,因为我们必须非常密切的监控电脑的状态才能判断,而往往磁盘TRIM都是瞬间的事,所以很难察觉。我们可以通过如下方式来看TRIM是否开启成功:

▲核实Trim是否开启

1、打开CMD

2、右键点击CMD以管理员模式运行

3、输入“fsutil behavior query DisableDeleteNotify”

4、如果返回值是0,则代表您的TRIM处于开启状态

5、如果返回值是1,则代表您的TRIM处于关闭状态

转自://archives/178

SSD和机械硬盘相比,毫无疑问最突出的就是速度快,“寻道”时间短,为1ms左右;特别是小文件4K读写,普通硬盘更是望尘莫及,但SSD也有缺点:

1、擦写寿命有限;

2、其次是读写4K小文件性能比较差(当然机械硬盘更不行,笔记本硬盘机械硬盘寻道时间 为18ms左右)

3、是使用时间长了而之后,性能有所下降,类似于机械硬盘的文件碎片(但原理不同,不能用机械硬盘整理碎片的方法消除)

4、低档SSD和山寨SSD,普遍没有缓存,主控性能也不好,对寿命有不利

影响

我在网络上整理了几个SSD优化软件,经过试用发现对SSD昨天试用大有好处,现做对比评测。

优化软件:EasyCo MTF 0.993 , FlashPoint和SuperCacheIII这三款软件(此方案适合现在市面上所有SSD硬盘,包括高、中、低档及山寨SSD。

SSD是我自己用的IdeaIcon 128GB SSD,Indilinx 主控 64M缓存,评测软件是大家熟悉的ATTO Disk Benchmark、CrystalDiskMark等。

好啦,优化开始:

1. 先来看看不装任何优化程序之前的测试结果:

虽然已经很不错了,最快读写为:250/190M/s,

2. 开始试用EasyCo MTF优化,网上也有其他说明,我现在只是整理一下:

1. 下载EasyCo MTF 0.993b。

2. 安装MFT并激活。

格式化选择的区块大小参照:

2048 Mtron, Samsung, Sandisk, and Intel

8192 MyDigitalSSD, OCZ Core 2 (or v2)

16384 Ridata, Transcend, SuperTalent, Patriot, OCZ Core 1

3. 在磁盘管理器里把要优化的SSD的分区全部删除。

4. 打开打开MFT软件,点Driver Layout, 点右边Create 建立MFT优化盘

下图Write Block Size处填入上文中的区块大小参照,如果不知道使用默认值就可以了,我就是直接用默认的

等15秒。。。

按Y 确认,确认完后优化分区就建立好了。

5. 接下来测试一下,优化后的效果:

看来效果不错,平均速度都超过500-600M/s 的速度。

2#

发表于:2010-3-13 02:28:21[离线]发消息给贴主|只看该作者

本帖最后由 jssharp 于 2011-6-19 19:27 编辑

3. 再接再厉,继续测试SuperCacheIII

1. 同样,在磁盘管理器里先把要优化的SSD的分区全部删除,建立新卷并格式化分区。

2. 下载SuperCacheIII软件,安装并激活。

3. 双击windows桌面上“我的电脑”,指向需要优化的磁盘,点右键选属性,如果SuperCacheIII安装后会多出一个Performance的选项框,点击Performance

其中Deferred-write mode 选项是写入延迟优化,可以不选

好了,优化完成,赶紧试试效果:

行了,效果不错,SuperCacheIII能针对对单个分区磁盘进行优化包括系统盘C盘,但MFT不可以对系统盘优化,还有一个叫FlashPoint的优化,与SuperCacheIII基本相同,但会对所有盘优化,我还是喜欢自己主动点,能选择只对那个盘优化,所以只测试SuperCacheIII了。

4. 还没完呢,再想了下,发现MFT和SuperCacheIII完全可以配合使用,但前提是最好有4G内存,下面立刻来试试MFT和SuperCacheIII配合使用的效果:

1. 还是想上面一样,在磁盘管理器里把要优化的SSD的分区全部删除。

2. 安装EasyCo MFT 0.993b和SuperCacheIII软件,重启电脑

3. 先运行MFT建立MFT优化的分区

4. 再按照SuperCacheIII优化步骤,在经过MFT优化的分区上添加SuperCacheIII优化

5. 测试上图:

测试后发现,这样性能更稳定,也有可能是IdeaIcon

128GB SSD硬盘性能也稳定,经过优化后有更好的表现。

6. 文中所需软件:

_0.993b

/files/3ce ...

-aad5-0015c55db73d/

acheIII

/files/4e1 ...

-8dab-0015c55db73d/

转自://archives/178

Win7系统下的SSD固态硬盘优化设置

目前的PC硬件日新月异,而主要瓶颈在于机械硬盘,受先天影响,机械硬盘随机读写能力很低。

SSD固态硬盘加快了随机读写的速度,可以使系统运行速度大大加快,但目前SSD价格太贵。

比较好的方案是用小容量的SSD作系统盘,机械硬盘作数据仓库,在目前的很多笔记本上都可以

将光驱位替换为硬盘,这样就解决了SSD硬盘小的问题。

用SSD硬盘建议系统装Win7,因为Win7专门针对SSD进行了优化,可以更好地发挥SSD的性能;

同时将常用的软件和游戏装在SSD上。

用SSD硬盘作系统盘后,系统启动速度和打开SSD上的程序速度明显加快。

在Win7系统下对SSD可以进行一些优化设置,以保持SSD的优异性能。

1.主板BIOS开启AHCI模式。

这个可以在安装Win7系统前便将BIOS硬盘模式改为AHCI,这样Win7安装时会自动安装相关驱动。

2.安装Win7的时候让系统给你的SSD分区,这样可以自动对齐分区。

3.可以使用win7自带的ahci驱动,也可以使用Intel最新的官方驱动,性能差别不大。

注意有的驱动(Intel早期,AMD,NV等)使用后可能无法实现自动Trim。

4.系统服务里禁用Superfetch

5.关闭系统预读取和启动跟踪。

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory

ManagementPrefetchParameters]

"EnableSuperfetch"=dword:00000000

"EnablePrefetcher"=dword:00000000

"EnableBootTrace"=dword:00000000

分区上去除磁盘碎片整理和磁盘索引。

7.停用ReadyBoost事件跟踪。

打开控制面板“管理工具”中的“性能监视器”,打开“数据收集器集”下的“启动事件跟踪会话”,找到“ReadyBoost”

打开后去掉“跟踪会话”中“已启用”前的勾。

8.系统服务中关闭系统还原功能。

服务中“Windows Backup”设置为禁用。

9.关闭系统启动时的磁盘整理。

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftDfrgBootOptimizeFunction]

"Enable"="N"

10.如为笔记本,在电源管理中关闭自动关闭硬盘。

11.在开始菜单运行框执行:

fsutil behavior set disablelastaccess 1

12.关闭系统盘NTFS Journal

fsutil usn deletejournal /n c:

13.去除"Send Feedback"

[HKEY_CURRENT_USERControl PanelDesktop]

"FeedbackToolEnabled"=dword:00000000

14.将系统临时目录搬移到其他盘。

如系统为4G或以上内存,可安装RamDisk,推荐Super Speed LLC的RamDisk Plus 11.5。

将IE临时目录和系统Temp目录设置到RamDisk,还可以将迅雷等磁盘读写频繁的程序移到RamDisk,

然后保存Ram镜像,设置启动时加载镜像,这样不但加快程序速度,还避免对SSD频繁读写。

15.设置个人文件夹到D盘或其他盘。

可以用Win7优化大师或其他软件来设置,也可以手动设置。

修改注册表中

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell

Folders]

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser

Shell Folders]

这两个项下的My Pictures、Desktop、Favorites、My Music、{374DE290-123F-4565-9164-39C4925E467B}

Personal这几个键值,将其定义到其他盘的目录。

另外有人说我的4K读速度偏低,解决办法:

进入注册表:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesProcessor

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIntelppm

把这2个下的Start值从3改成4就成了。

是节能技术导致的,尤其是Intel 5系列的芯片组,有人反映其它芯片组也会有一定的提升。别人的数据是修改后,从13.14MB/s->20.17MB/s,IOPS 3363->5164。

不过后果是系统会全速,对笔记本有一定影响,耗电、温度会提高。

SSD固态硬盘的系统优化

控制面板-管理工具-服务里,禁用Superfetch、Disk Defragmenter和Windows Search服务:

对于SSD而言由于存储方式的改变,原有的磁盘碎片清理变得多余,甚至是有害的,因此我们需要禁用磁盘碎片清理,而针对传统机械硬盘的Superfetch预读取和Windows Search引索,同样现在也没有必要可以禁用。

SSD对于小文件的存储访问相比传统硬盘有较为明显的优势,特别是在需要频繁读取的情况下更是如此,因此我们可以将系统的页面文件设定在固态硬盘上,同时我们可以固定页面文件的大小,以维持系统性能。我们建议页面文件容量设定为物理内存的1.5倍,如用户有4GB内存,可以设定为6GB。

SSD其他应用程序优化和使用原则

固态硬盘价格昂贵,空间有限,因此我们不可能将所有程序都安装在SSD上,因此我们仅建议将系统,和经常使用的程序安装在SSD上。

还可以将一些程序的零食交换文件、或者缓存文件设定在SSD上,如IE浏览器,这样可以大幅提升之前已经开过页面的速度(默认情况IE或者Firefox之类浏览器的缓存文件都在系统盘,一般情况不需要修改)。

对于经常需要玩的游戏也可以安装在SSD,如《战地:叛逆连队2》对这样需要读取大量纹理和其他数据的游戏,这样可以大幅提升游戏的载入速度。

不要用SSD作为下载盘,SSD主要的寿命主要取决于写入次数,因此经常使用SSD作为目标盘下载写入大量数据,会减短SSD的寿命,同时下载瓶颈在于你的网络,使用SSD并不会提升你的下载速度。

SSD优化?

传统HDD与SSD

NOR和NAND

NOR和NAND都是闪存技术的一种,NOR是Intel公司开发的,它有点类似于内存,允许通过地址直接访问任何一个内存单元,缺点是:密度低(容量小),写入和擦除的速度很慢。NAND是东芝公司开发的,它密度高(容量大),写入和擦除的速度都很快,但是必须通过特定的IO接口经过地址转换之后才可以访问,有些类似于磁盘。

我们现在广泛使用的U盘,SD卡,SSD都属于NAND类型,厂商将flash memory封装成为不同的接口,比如Intel的SSD就是采用了SATA的接口,访问与普通SATA磁盘一样,还有一些企业级的闪存卡,比如FusionIO,则封装为PCIe接口。

SLC和MLC

SLC是单级单元,MLC是多级单元,两者的差异在于每单元存储的数据量(密度),SLC每单元只存储一位,只包含0和1两个电压符,MLC每单元可以存储两位,包含四个电压符(00,01,10,11)。显然,MLC的存储容量比SLC大,但是SLC更简单可靠,SLC读取和写入的速度都比MLC更快,而且SLC比MLC更耐用,MLC每单元可擦除1w次,而SLC可擦除10w次,所以,企业级的闪存产品一般都选用SLC,这也是为什么企业级产品比家用产品贵很多的原因。

SSD的技术特点

SSD与传统磁盘相比,第一是没有机械装置,第二是由磁介质改为了电介质。在SSD内部有一个FTL(Flash Transalation Layer),它相当于磁盘中的控制器,主要功能就是作地址映射,将flash

memory的物理地址映射为磁盘的LBA逻辑地址,并提供给OS作透明访问。

SSD没有传统磁盘的寻道时间和延迟时间,所以SSD可以提供非常高的随机读取能力,这是它的最大优势,SLC类型的SSD通常可以提供超过35000的IOPS,传统15k的SAS磁盘,最多也只能达到160个IOPS,这对于传统磁盘来说几乎就是个天文数字。SSD连续读的能力相比普通磁盘优势并不明显,因为连续读对于传统磁盘来说,并不需要寻道时间,15k的SAS磁盘,连续读的吞吐能力可以达到130MB,而SLC类型的SSD可以达到170-200MB,我们看到在吞吐量方面,SSD虽然比传统磁盘高一些,但优势虽然并不明显。

SSD的写操作比较特殊,SSD的最小写入单元为4KB,称为页(page),当写入空白位置时可以按照4KB的单位写入,但是如果需要改写某个单元时,则需要一个额外的擦除(erase)动作,擦除的单位一般是128个page(512KB),每个擦除单元称为块(block)。如果向一个空白的page写入信息时,可以直接写入而无需擦除,但是如果需要改写某个存储单元(page)的数据,必须首先将整个block读入缓存,然后修改数据,并擦除整个block的数据,最后将整个block写入,很显然,SSD改写数据的代价很高,SSD的这个特性,我们称之为erase-before-write。

经过测试,SLC SSD的随即写性能可以达到3000个左右的IOPS,连续写的吞吐量可以达到170-200MB,这个数据还是比传统磁盘高出不少。但是,随着SSD的不断写入,当越来越多的数据需要被改写时,写的性能就会逐步下降。经过我们的测试,SLC在这个方面要明显好于MLC,在长时间写入后,MLC随机写IO下降得非常厉害,而SLC表现则比较稳定。为了解决这个问题,各个厂商都有很多策略来防止写性能下降的问题。

wear leveling

因为SSD存在“写磨损”的问题,当某个单元长时间被反复擦写时(比如Oracle redo),不仅会造成写入的性能问题,而且会大大缩短SSD的使用寿命,所以必须设计一个均衡负载的算法来保证SSD的每个单元能够被均衡的使用,这就是wear leveling,称为损耗均衡算法。

Wear leveling也是SSD内部的FTL实现的,它通过数据迁移来达到均衡损耗的目的。Wear leveling依赖于SSD中的一部分保留空间,基本原理是在SSD中设置了两个block pool,一个是free block pool(空闲池),一个是数据池(data block pool),当需要改写某个page时(如果写入原有位置,必须先擦除整个block,然后才能写入数据),并不写入原有位置(不需要擦除的动作),而是从空闲池中取出新的block,将现有的数据和需要改写的数据合并为新的block,一起写入新的空白block,原有的block被标识为invalid状态(等待被擦除回收),新的block则进入数据池。后台任务会定时从data block中取出无效数据的block,擦除后回收到空闲池中。这样做的好处在于,一是不会反复擦写同一个block,二是写入的速度会比较快(省略了擦除的动作)。

Wear leveling分为两种:动态损耗均衡和静态损耗均衡,两者的原理一致,区别在于动态算法只会处理动态数据,比如数据改写时才会触发数据迁移的动作,对静态数据不起作用,而静态算法可以均衡静态数据,当后台任务发现损耗很低的静态数据块时,将其迁移到其他数据库块上,将这些块放入空闲池中使用。从均衡的效果来看,静态算法要好于动态算法,因为几乎所有的block都可以被均衡的使用,SSD的寿命会大大延长,但是静态算法的缺点是当数据迁移时,可能会导致写性能下降。

写入放大

因为SSD的erase-before-write的特性,所以就出现了一个写入放大的概念,比如你想改写4K的数据,必须首先将整个擦除块(512KB)中的数据读出到缓存中,改写后,将整个块一起写入,这时你实际写入了512KB的数据,写入放大系数是128。写入放大最好的情况是1,就是不存在放大的情况。

Wear leveling算法可以有效缓解写入放大的问题,但是不合理的算法依然会导致写入放大,比如用户需要写入4k数据时,发现free block pool中没有空白的block,这时就必须在data block pool中选择一个包含无效数据的block,先读入缓存中,改写后,将整个块一起写入,采用wear leveling算法依然会存在写入放大的问题。

通过为SSD预留更多空间,可以显著缓解写入放大导致的性能问题。根据我们的测试结果,MLC SSD在长时间的随机写入后,性能下降很明显(随机写IOPS甚至降低到300)。如果为wear leveling预留更多空间,就可以显著改善MLC SSD在长时间写操作之后的性能下降问题,而且保留的空间越多,性能提升就越明显。相比较而言,SLC SSD的性能要稳定很多(IOPS在长时间随机写后,随机写可以稳定在3000 IOPS),我想应该是SLC SSD的容量通常比较小(32G和64G),而用于wear leveling的空间又比较大的原因。

数据库IO特点分析

IO有四种类型:连续读,随机读,随机写和连续写,连续读写的IO size通常比较大(128KB-1MB),主要衡量吞吐量,而随机读写的IO size比较小(小于8KB),主要衡量IOPS和响应时间。数据库中的全表扫描是连续读IO,索引访问则是典型的随机读IO,日志文件是连续写IO,而数据文件则是随机写IO。

数据库系统基于传统磁盘访问特性来设计,最大特点是日志文件采用sequential logging,数据库中的日志文件,要求必须在事务提交时写入到磁盘,对响应时间的要求很高,所以设计为顺序写入的方式,可以有效降低磁盘寻道花费的时间,减少延迟时间。日志文件的顺序写入,虽然是物理位置是连续的,但是并不同于传统的连续写类型,日志文件的IO size很小(通常小于4K),每个IO之间是独立的(磁头必须抬起来重新寻道,并等待磁盘转动到相应的位置),而且间隔很短,数据库通过log buffer(缓存)和group

commit的方式(批量提交)来达到提高IO size的大小,并减少IO的次数,从而得到更小的响应延迟,所以日志文件的顺序写入可以被认为是“连续位置的随机写入”,瓶颈还是在IOPS,而不是吞吐量。

数据文件采用in place update的方式,意思是数据文件的修改都是写入到原来的位置,数据文件不同于日志文件,并不会在事务commit时写入数据文件,只有当数据库发现dirty buffer过多或者需要做checkpoint动作时,才会刷新这些dirty buffer到相应的位置,这是一个异步的过程,通常情况下,数据文件的随机写入对IO的要求并不是特别高,只要满足checkpoint和dirty buffer的要求就可以了。

SSD的IO特点分析

1.随机读能力非常好,连续读性能一般,但比普通SAS磁盘好。

2.不存在磁盘寻道的延迟时间,随机写和连续写的响应延迟差异不大。

-before-write特性,造成写入放大,影响写入的性能。

4.写磨损特性,采用wear leveling算法延长寿命,但同时会影响读的性能。

5.读和写的IO响应延迟不对等(读要大大好于写),而普通磁盘读和写的IO响应延迟差异很小。

6.连续写比随机写性能好,比如1M顺序写比128个8K的随即写要好很多,因为随即写会带来大量的擦除。

基于SSD的上述特性,如果将数据库全部放在SSD上,可能会有以下的问题:

1.日志文件sequential logging会反复擦写同一位置,虽然有损耗均衡算法,但是长时间写入依然会导致性能下降。

2.数据文件in place update会产生大量的随机写入,erase-before-write会产生写入放大。

3.数据库读写混合型应用,存在大量的随机写入,同时会影响读的性能,产生大量的IO延迟。

基于SSD的数据库优化法则:

基于SSD的优化就是解决erase-before-write产生的写入放大的问题,不同类型的IO分离,减少写操作带来的性能影响。

1.将sequential logging修改为In-page logging,避免对相同位置的反复擦写。

2.通过缓存写入的方式将大量的in-place update随机写入合并为少量顺序写入。

3.利用SSD随机读写能力高的特点,减少写增加读,从而达到整体性能的提升。

In-page logging

In-page logging是基于SSD对数据库sequential logging的一种优化方法,数据库中的sequential

logging对传统磁盘是非常有利的,可以大大提高响应时间,但是对于SSD就是噩梦,因为需要对同一位置反复擦写,而wear leveling算法虽然可以平衡负载,但是依然会影响性能,并产生大量的IO延迟。所以In-page logging将日志和数据合并,将日志顺序写入改为随机写入,基于SSD对随机写和连续写IO响应延迟差异不大的特性,避免对同一位置反复擦写,提高整体性能。

In-page logging基本原理:在data buffer中,有一个in-memory log sector的结构,类似于log

buffer,每个log sector是与data block对应的。在data buffer中,data和log并不合并,只是在data block和log sector之间建立了对应关系,可以将某个data block的log分离出来。但是,在SSD底层的flash memory中,数据和日志是存放在同一个block(擦除单元),每个block都包含data page和log page。

当日志信息需要写入的时候(log buffer空间不足或者事务提交),日志信息会写入到flash memory对应的block中,也就是说日志信息是分布在很多不同的block中的,而每个block内的日志信息是append

write,所以不需要擦除的动作。当某个block中的log sector写满的时候,这时会发生一个动作,将整个block中的信息读出,然后应用block中的log sector,就可以得到最新的数据,然后整个block写入,这时,block中的log sector是空白的。

在in-page logging方法中,data buffer中的dirty block是不需要写入到flash memory中的,就算dirty buffer需要被交换出去,也不需要将它们写入flash memory中。当需要读取最新的数据,只要将block中的数据和日志信息合并,就可以得到最新的数据。

In-page logging方法,将日志和数据放在同一个擦除单元内,减少了对flash相同位置的反复擦写,而且不需要将dirty block写入到flash中,大量减少了in-place update的随机写入和擦除的动作。虽然在读取时,需要做一个merge的操作,但是因为数据和日志存放在一起,而且SSD的随机读取能力很高,in-page logging可以提高整体的性能。

SSD作为写cache—append write

SSD可以作为磁盘的写cache,因为SSD连续写比随机写性能好,比如:1M顺序写比128个8K的随机写要好很多,我们可以将大量随机写合并成为少量顺序写,增加IO的大小,减少IO(擦除)的次数,提高写入性能。这个方法与很多NoSQL产品的append write类似,即不改写数据,只追加数据,需要时做合并处理。

基本原理:当dirty block需要写入到数据文件时,并不直接更新原来的数据文件,而是首先进行IO合并,将很多个8K的dirty block合并为一个512KB的写入单元,并采用append write的方式写入到一个cache file中(保存在SSD上),避免了擦除的动作,提高了写入性能。cache file中的数据采用循环的方式顺序写入,当cache file空间不足够时,后台进程会将cache file中的数据写入到真正的数据文件中(保存在磁盘上),这时进行第二次IO合并,将cache file内的数据进行合并,整合成为少量的顺序写入,对于磁盘来说,最终的IO是1M的顺序写入,顺序写入只会影响吞吐量,而磁盘的吞吐量不会成为瓶颈,将IOPS的瓶颈转化为吞吐量的瓶颈,从而提升了整体系统能力。

读取数据时,必须首先读取cache file,而cache file中的数据是无序存放的,为了快速检索cache file中的数据,一般会在内存中为cache file建立一个索引,读取数据时会先查询这个索引,如果命中查询cache file,如果没有命中,再读取data file(普通磁盘),所以,这种方法实际不仅仅是写cache,同时也起到了读cache的作用。

SSD并不适合放数据库的日志文件,虽然日志文件也是append write,但是因为日志文件的IO size比较小,而且必须同步写入,无法做合并处理,对SSD来说,需要大量的擦除动作。我们也曾经尝试把redo

log放在SSD上,考虑到SSD的随机写入也可以达到3000 IOPS,而且响应延时比磁盘低很多,但是这依赖于SSD本身的wear leveling算法是否优秀,而且日志文件必须是独立存放的,如果日志文件的写入是瓶颈,也算是一种解决方案吧。通常情况下,我还是建议日志文件放在普通磁盘上,而不是SSD。

SSD作为读cache—flashcache

因为大部分数据库都是读多写少的类型,所以SSD作为数据库flashcache是优化方案中最简单的一种,它可以充分利用SSD读性能的优势,又避免了SSD写入的性能问题。实现的方法有很多种,可以在读取数据时,将数据同时写入SSD,也可以在数据被刷出buffer时,写入到SSD。读取数据时,首先在buffer中查询,然后在flashcache中查询,最后读取datafile。

SSD作为flashcache与memcache作为数据库外部cache的最大区别在于,SSD掉电后数据是不丢失的,这也引起了另外一个思考,当数据库发生故障重启后,flashcache中的数据是有效还是无效?如果是有效的,那么就必须时刻保证flashcache中数据的一致性,如果是无效的,那么flashcache同样面临一个预热的问题(这与memcache掉电后的问题一样)。目前,据我所知,基本上都认为是无效的,因为要保持flashcache中数据的一致性,非常困难。

flashcache作为内存和磁盘之间的二级cache,除了性能的提升以外,从成本的角度看,SSD的价格介于memory和disk之间,作为两者之间的一层cache,可以在性能和价格之间找到平衡。

SSD For Oracle优化建议

Redo and Archive logs部署在HDD,Datafile部署在SSD上

本文标签: 写入磁盘性能优化系统