无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 18149|回复: 22
打印 上一主题 下一主题

【转】实战SSD优化之NTFS分区闪存块的对齐

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-10 06:58:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文来自:http://www.51nb.com/forum/viewthread.php?tid=924167

看了论坛上SSD优化之NTFS分区256K对齐这个帖子之后,仔细想了想,感觉确实有一定的道理,于是就自己实验了一下。
http://www.51nb.com/forum/viewth ... &highlight=ntfs

提速的原理应该是通过调整第一个NTFS分区的起始位置来保证不会出现NTFS的簇跨越NAND闪存的块(block),从而提高数据读写的效率。

具体来说是这样的,SLC闪存芯片的页/块大小是2KB/128KB,MLC的页/块大小是2KB/256KB或4KB/512KB(再早的MLC还有512B/32KB的,不过现在很少见了)。
也就是意味着每次可以分别以2KB/2KB/4KB为单位来写入数据,但是每次擦除必须要以128KB/256KB/512KB来擦除数据。
因为平衡写入算法的存在,用了一段时间之后的SSD每次写入数据时都必然是先擦除再写入这样一个过程。
如果按照XP之前的起始位置放在LBA63(起始位置之前保留512Bx63=31.5KB)的分区方式,将会导致NTFS分区每32(或64或128)个簇(以现在硬盘的大小,NTFS分区几乎全是4KB/簇),
就会有一个簇跨越了两个闪存块,当系统正好对跨块的簇进行操作时,就会导致需要擦除两个块之后才能写入数据,或是要分别从两个块来读取这些4KB簇的数据,这就降低了读写数据的效率。
通过调整NTFS分区的起始位置,我们就可以避免这种每隔一些簇就有一个跨过闪存块的情况,从而提高读写的效率。

这个开始位置应该放在哪里呢?
如果只是单通道的闪存设备,只要NTFS分区的开始位置前面空出512KB,也就是开始位置放在LBA1024处,就可以保证128KB/256KB/512KB块大小的闪存芯片都可以实现NTFS分区对齐了。
但事实上,几乎所有的SSD都不是单通道的,比如最常见的JM602方案是8通道的,Intel X25-M是10通道的,Intel X25-V是5通道的,这时候应该空出多少呢?
实际上,多通道的闪存设备也是把数据拆成一个一个的块,然后分别对每个通道进行读写操作,这个块的大小和所使用的闪存芯片的块的大小是一样的。
(关于这一点,大家可以从Intel X25-M和X25-V的4KB写入速度看出端倪。
Intel的主控对写入进行了优化,随机4KB写入并不是即时写入,而是在缓存中积累达到256KB(正好是Intel使用的闪存芯片的块大小)后再一次性写入。
如果这256KB数据会再进一步拆分然后才写到各个通道的话,10通道的X25-M必然会比5通道的X25-V要快,但实际上却是相差无几,这就说明多通道写入时最小的数据单位也是闪存块的大小。)
因此,我们完全可以不考虑设备是几通道的,直接把第一个分区的起始位置设在512KB之后的那个簇,也就是LBA1024处即可。
这个操作,XP之前的操作系统自带的分区工具是无法完成的,必须借助第三方工具;但是Vista/Win7的磁盘管理工具和光盘安装的分区界面进行分区时,
会自动把第一个分区设在LBA2048处,正好是1024的倍数,因此直接使用Vista/Win7来分区就自动完成了NTFS分区对齐闪存块的操作。
PS: 当然也可以根据自己固态硬盘的闪存类型来设置,比如SLC(2KB/128KB)的设在LBA256,MLC(2KB/256KB)的设在LBA512处,MLC(4KB/512KB)的设在LBA1024处等。
不过这说起来就麻烦了,建议怕麻烦的直接把硬盘挂在装好Vista/Win7的机器上,使用磁盘管理工具来分一下区就可以了。


原理说完了,Vista/Win7的下分区这边不废话了,现在来看看如何使用第三方工具来操作以及实际效果如何。
由于这是对分区进行操作,务必要先备份要进行操作的分区中的数据。
只是对第一个分区做操作,可以用WINPE启动计算机,先使用Ghost把第一个分区做个镜像存到后面的分区中去,改好了再Ghost回来即可。
因为Windows自带的分区工具无法实现根据LBA地址来分区的操作,这里要使用第三方分区工具,这里推荐DiskGenius。
大家可以去其官网下载:
http://www.diskman.cc/download.htm

我这里的操作和测试都是以自己手中的一个16GB的U盘为例的,另外也在自己的Sandisk SSD上试过了,确实有所改善。
1. 打开主界面,左侧选中要操作的磁盘,右边可以看到当前的第一个分区是从0-1-1开始的,也就是LBA63,右键点击把它删除掉。





2. 在删除后得到的空闲空间上右键点击来建立新分区。



3. 在建立新分区界面中点开详细参数,把起始磁头设为8,起始扇区设为9,
这时下面的起始扇区号会自动变为512,这个512其实就是指LBA512,确认后点击确定即可创建分区。
如果是四通道的NAND存储设备,可以进一步调整起始磁头和起始扇区,让起始扇区号显示为1024即可。




4. 回到主界面可以看到,此时第一个分区的起始柱面/磁头/扇区已经变成0-8-9了,点击应用更改保存设置。



5. 因此第一个分区的起始位置变了,建议大家重建MBR一下,以防出现不能启动的问题。
在DiskGenius中点一下刚才创建的分区,然后在硬盘菜单中点重建主引导纪录(MBR),并确认执行即可。
特别提醒的是,重建MBR后,如果之前MBR中有写入过的诸如WIN7 OEM破解信息等都会被去掉,需要重新使用相应的工具来重新写入。




最后上一下修改前后的ATTO测试成绩,都是在格式化后U盘里没有任何数据的情况下来进行的。
左:起始柱面/磁头/扇区为0-1-1(LBA63)时的测试成绩;右:起始柱面/磁头/扇区为0-8-9(LBA512)时的测试成绩:


2#
 楼主| 发表于 2010-8-10 06:58:55 | 只看该作者
为了大家看的方便,转帖一下!
回复

使用道具 举报

3#
发表于 2010-8-10 07:55:01 | 只看该作者
直接看測試結果
寫入速度有10%左右的提升
但是讀取速度差別不大
回复

使用道具 举报

4#
发表于 2010-8-10 08:39:29 | 只看该作者
这个只对固态硬盘才有用吧?
回复

使用道具 举报

5#
发表于 2010-8-10 09:14:43 | 只看该作者
昨天晚上J大也在讨论这个问题,他测试了一下fbinst降速后的U盘可以恢复速度。
回复

使用道具 举报

6#
发表于 2010-8-10 09:26:30 | 只看该作者
FAT32格式行吗???
回复

使用道具 举报

7#
发表于 2010-8-10 10:24:55 | 只看该作者
原帖由 amwwc 于 2010-8-10 09:26 发表
FAT32格式行吗???

xp sp1以上系统格出来的fat32是4K对齐的(当然分区表先要对齐)。xp sp1以下的fat32怎么也对不齐,fat16不管什么系统都对不齐
回复

使用道具 举报

8#
发表于 2010-8-10 10:25:43 | 只看该作者
原帖由 hnyzalex 于 2010-8-10 08:39 发表
这个只对固态硬盘才有用吧?

请仔细理解原理,SSD和u盘在这里什么差别
回复

使用道具 举报

9#
发表于 2010-8-10 10:58:25 | 只看该作者
用diskpart建立分区的时候可以用offset参数来设置偏移量
回复

使用道具 举报

10#
发表于 2010-8-10 11:34:00 | 只看该作者

回复 #7 fujianabc 的帖子

难怪我按楼主的方法之后写入文件速度好像更慢了!如果FAT32实现起来应该很麻烦吧???

[ 本帖最后由 amwwc 于 2010-8-10 11:35 编辑 ]
回复

使用道具 举报

11#
发表于 2010-8-10 15:27:16 | 只看该作者
原帖由 Plantsoot 于 2010-8-10 09:14 发表
昨天晚上J大也在讨论这个问题,他测试了一下fbinst降速后的U盘可以恢复速度。


请给个此帖子的链接好吗!谢谢!!
回复

使用道具 举报

12#
发表于 2010-8-10 16:10:35 | 只看该作者

回复 #11 zqywult 的帖子

他没发帖子
只是用DG按这个帖子修改了下,新建分区了而已
回复

使用道具 举报

13#
发表于 2010-8-11 17:20:28 | 只看该作者

回复 #8 fujianabc 的帖子

感谢~~~~一时没理解过来....
回复

使用道具 举报

14#
发表于 2010-9-14 23:22:14 | 只看该作者
这个,不得不佩服牛人们的研究精神啊
回复

使用道具 举报

15#
发表于 2010-10-4 09:24:15 | 只看该作者
伤脑筋,有点复杂,下了回去慢慢研究,我的优盘速度好像才写入2M,晕S
回复

使用道具 举报

16#
发表于 2010-11-22 19:17:15 | 只看该作者

有后遗症吗?

坏了,LZ,昨天没有看清楚,我把本地磁盘C盘按1楼的方法给办了,今天又看一下,才知道错了,有改回去的必要吗?


看来我是多虑了

[ 本帖最后由 大头IS无忧 于 2010-11-24 21:20 编辑 ]
回复

使用道具 举报

17#
发表于 2011-1-29 19:53:00 | 只看该作者
您好,我金士顿1G优盘,FAT32格式,用FbinstTool做成启动盘后看了有关帖子用MyDiskTest测试了下速度,只有不到3M的写入速度了,重新FBbinistTool格式(钩选闪存块对齐)没填数值,因为不知填哪个合适,格式化后测试写入速度更低了,我该如何来恢复U盘的写入速度,楼主此文章里讲的是NTFS格式的,可我的是FAT32格式也这样处理有用吗?谢谢,以后还是不用FBBIST来格式化U盘了,呵呵
回复

使用道具 举报

18#
发表于 2011-4-11 17:46:12 | 只看该作者
好东西,收藏起来,谢谢了。
回复

使用道具 举报

19#
发表于 2011-9-7 10:24:09 | 只看该作者
技术帖不能沉下去啊...
回复

使用道具 举报

20#
发表于 2012-3-14 09:41:25 | 只看该作者

楼主写的很详细

很管用 谢谢
回复

使用道具 举报

21#
发表于 2012-3-15 16:40:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

22#
发表于 2012-3-20 09:21:16 | 只看该作者
收藏学习哈,这个很实用的
回复

使用道具 举报

23#
发表于 2012-11-4 13:26:53 | 只看该作者
请教U盘,该如何对齐呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 16:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表