浅谈SSD固态硬盘为什么要4K对齐和需要的操作方法和原理。
NTFS是Windows NT以及之后的Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008、Windows Vista和Windows 7的标准文件系统。
NTFS取代了文件分配表(FAT)文件系统,为Microsoft的Windows系列操作系统提供文件系统。NTFS对FAT和HPFS(高性能文件系统)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如访问控制列表(ACL)和文件系统日志。该文件系统的详细定义属于商业秘密 ,Microsoft已经将其注册为知识产权产品。
20 世纪 90 年代早期,Microsoft 和 IBM 组建了一个联合计划,目标是创建一个下一代的操作系统。该项目的结果是诞生了 OS/2,但由於 Microsoft 和 IBM 在很多重要问题上不能达成共识而最後分裂, OS/2 至今仍属於 IBM。Microsoft 开始研究 Windows NT。OS/2 的文件系统 HPFS 包含了若干重要功能,而当 Microsoft 开始创建他们自己的新操作系统时,他们的 NTFS 从中借用汲取了很多方面。
NTFS 有五个正式发布的版本:
v1.0,随 NT 3.1 一起发布[來源請求],发布于 1993 年中旬
v1.1,随 NT 3.5 一起发布[來源請求],发布于 1994 年秋季
v1.2,由 NT 3.51(1995 年中旬)和 NT 4(1996 年中旬)提供(有时候也被称为“NTFS 4.0”,因为操作系统版本是 4.0)
v3.0 来自 Windows 2000(有时称作“NTFS 5.0”)
v3.1 来自 Windows XP(2001 年秋季,有时称作“NTFS 5.1”),Windows Server 2003(2003 年春季,有时称作“NTFS 5.2”), Windows Vista(2005 年中旬,有时称作“NTFS 6.0”)以及 Windows Server 2008(2008 年初),Windows 7 和 Windows Server 2008R2(有时称作"NTFS 6.1")
V1.0 和 V1.1 以及所有以后版本不兼容,也就是说,使用 NT 3.5x 写入的卷无法被 NT 3.1 读取,除非使用 NT 3.5x 光盘更新 NT 3.1,并添加对 FAT 系统的长文件名支持。V1.2 支持压缩文件、命名流、基于 ACL(访问控制列表)的安全性等功能。
V3.0 支持磁盘限额、加密、稀疏文件、重解析点,更新序列数(USN)日志、$Extend 文件夹以及其中的文件,并改进了安全描述符,以便于使用相同安全设置的多个文件共享一个安全描述符。
V3.1 使用冗余 MFT 记录数(用于恢复受损的 MFT 文件)扩展了主文件表(MFT)项
我们知道,机械硬盘从很早前,扇区大小就被定义为512B(字节),最新的先进格式机械盘终于把物理扇区提高到4KB(4096字节),而我们现在使用的SSD,page数一般为4KB,(下一代25nm的为8KB),在NTFS6.x以前的规范中,分区offset一直是从63扇区(63X512B=31.5KB)开始,那么就会造成用户的第一个数据的前4KB会存放在系统"逻辑扇区"的31.5KB~35.5KB间,这样持续下去会造成后面所有的数据都会卡在2个物理扇区(page)容量之间,我们知道扇区(page)为磁盘写入的最小单位,如果卡在2个扇区(page)之间,写入的时候就需要进行读-改写操作(对SSD来说读-擦-写),造成性能的下降。VISTA之后的操作系统,NTFS为6.x,分区offset就会设置为2048扇区,这样就不会跨2扇区(page),造成因扇区offset没对齐而出现的性能下降。
应该说分区不对齐造成的影响也是要看SSD的固件算法的,理论来说对持续影响小,对随机影响大。
分区不对齐造成的差别如下:
Barefoot主控分区对齐和不对齐的性能差距图
SSD采用多通道读写技术以提高SSD的读写速度。以Barefoot主控来说,颗粒4KB的页,主控是4通道的,假设在算法设计上用比较简单的方式,例如一次读写操作单位为16KB(4KB X 4通道),一次读写没有满16KB,那就会出现:读-改-写操作。
如图上所示: 图中SSD出现分区没对齐问题,读写正好在2个16KB边界,所以需要做2次读-改-写操作,那么我们说这时候的操作所需时间就是原来的2倍。如果系统请求写入4KB,那么发生这种情况的概率就是25%(图中第一个4KB在边界,后面3个在16KB内,而第5个又到下个16KB边界了),性能为原本的80%。如果把写入请求提升到32KB的话,发生的概率就是8/9了,随着请求容量的增大,差距就会缩小。所以对持续速度来说,分区不对齐并不会影响很大。
镁光C300分区对齐和不对齐性能差距图:
可以发现C300分区不对齐4KB写入性能下降很厉害,这个和主控算法有关,过度偏向4KB随机的算法,如果因为不对齐造成脱离原本设计的框架,这个算法的所有优化就完全没有了,还带有严重的反作用。
不管如何说,分区的对齐是为SSD做优化的第一步。
还有一步更重要的就是:必须打开AHCI,现在新电脑都默认开启了。
我做了个关于检查分区对齐的excel文件:
如何知道自己的盘分区对齐没有,把图中绿色框里的数值换成你当前的数值,看后面显示对齐没有。
分区对齐方法最简单的就是:
1.使用WIN7原版安装盘或2008 R2原版安装版,不是GHOST版本,进行分区,就会自动对齐!!!
2.对于哪些偏偏不喜欢用Vista,Win7,Win2008分区的朋友,要做到分区对齐就需要用某些第三方软件了。
简单点的就是DISK GENIUS.操作如下:
注意起始扇区数为2048(同Win7格式化)即可,调整磁头为32,扇区为33。
对于不喜欢用Win7做备份的朋友,可以使用Ghost 11.5.1版,支持整盘的备份还原offset对齐。(前提是要备份的分区是对齐的)
最后,最简单的分区方法,就是使用DISKGENIUS快速分区,如下图,把右下角勾上4K对齐,选2048就好: